In [1]:
import pandas as pd

In [2]:
Table = pd.read_csv('C:\Users\Ty Dickinson\Downloads\TFSFires.csv', low_memory=False)
Table['IN_DATE'] = pd.to_datetime(Table.IN_DATE)
Table.drop([
    'COI DECODE', 'FRW_FIRECAUSE', 'IN_CITY', 'IN_ZIP'
], axis=1, inplace=True)

#Defining lists to use; would require too many variables
MyWinterList = []
MySpringList = []
MySummerList = []
MyFallList = []

WinterDeath = []
SpringDeath = []
SummerDeath = []
FallDeath = []

WinterInjury = []
SpringInjury = []
SummerInjury = []
FallInjury = []

WinterAcres = []
SpringAcres = []
SummerAcres = []
FallAcres = []

WinterCost = []
SpringCost = []
SummerCost = []
FallCost = []

WinterReportDays = []
SpringReportDays = []
SummerReportDays = []
FallReportDays = []

Table['Total_Injuries'] = Table['FIRE_SERVICE_INJURY'] + Table['CIVILIAN_INJURY']
#setting the index as date to use the df.loc expression
df = Table.set_index(['IN_DATE'])

#defining date ranges and converting them to a Datetime data type
Date1 = pd.to_datetime('12-01-1981')
Date2 = pd.to_datetime('02-28-1982')
Date3 = pd.to_datetime('03-01-1982')
Date4 = pd.to_datetime('05-31-1982')
Date5 = pd.to_datetime('06-01-1982')
Date6 = pd.to_datetime('08-31-1982')
Date7 = pd.to_datetime('09-01-1982')
Date8 = pd.to_datetime('11-30-1982')
WinterCount = 0
SpringCount = 0
SummerCount = 0
FallCount = 0

#while statements to cycle through seasons and calculate reports, deaths, injuries, acres burned, cost, and report days
while WinterCount <= 35:
    x = df.loc[Date1:Date2]
    MyWinterList.insert(WinterCount,len(x.index))
    y = x.CIVILIAN_DEATH.sum()
    WinterDeath.insert(WinterCount,y)
    z = x.Total_Injuries.sum()
    WinterInjury.insert(WinterCount,z)
    a = x.Total_Acres.sum()
    WinterAcres.insert(WinterCount,a)
    b = x.IN_LOSSTOTAL.sum()
    WinterCost.insert(WinterCount,b)
    c = len(x.groupby('IN_DATE'))
    WinterReportDays.insert(WinterCount,c)
    #if the year was a leap year, then this sets the end date back to Feb. 28
    if Date2.is_leap_year:
        Date2 = Date2 - pd.DateOffset(days=1)
    #adds a year to the end date range for the next cycle of the while statement
    Date1 = Date1 + pd.DateOffset(years=1)
    Date2 = Date2 + pd.DateOffset(years=1)
    #if the upcoming year is a leap year, add 1 day to account for Feb. 29
    if Date2.is_leap_year:
        Date2 = Date2 + pd.DateOffset(days=1)
    WinterCount = WinterCount + 1
while SpringCount <= 35:
    x = df.loc[Date3:Date4]
    MySpringList.insert(SpringCount,len(x.index))
    y = x.CIVILIAN_DEATH.sum()
    SpringDeath.insert(SpringCount,y)
    z = x.Total_Injuries.sum()
    SpringInjury.insert(SpringCount,z)
    a = x.Total_Acres.sum()
    SpringAcres.insert(SpringCount,a)
    b = x.IN_LOSSTOTAL.sum()
    SpringCost.insert(SpringCount,b)
    c = len(x.groupby('IN_DATE'))
    SpringReportDays.insert(SpringCount,c)
    Date3 = Date3 + pd.DateOffset(years=1)
    Date4 = Date4 + pd.DateOffset(years=1)
    SpringCount = SpringCount + 1
while SummerCount <= 35:
    x = df.loc[Date5:Date6]
    MySummerList.insert(SummerCount,len(x.index))
    y = x.CIVILIAN_DEATH.sum()
    SummerDeath.insert(SummerCount,y)
    z = x.Total_Injuries.sum()
    SummerInjury.insert(SummerCount,z)
    a = x.Total_Acres.sum()
    SummerAcres.insert(SummerCount,a)
    b = x.IN_LOSSTOTAL.sum()
    SummerCost.insert(SummerCount,b)
    c = len(x.groupby('IN_DATE'))
    SummerReportDays.insert(SummerCount,c)
    Date5 = Date5 + pd.DateOffset(years=1)
    Date6 = Date6 + pd.DateOffset(years=1)
    SummerCount = SummerCount + 1
while FallCount <= 35:
    x = df.loc[Date7:Date8]
    MyFallList.insert(FallCount,len(x.index))
    y = x.CIVILIAN_DEATH.sum()
    FallDeath.insert(FallCount,y)
    z = x.Total_Injuries.sum()
    FallInjury.insert(FallCount,z)
    a = x.Total_Acres.sum()
    FallAcres.insert(FallCount,a)
    b = x.IN_LOSSTOTAL.sum()
    FallCost.insert(FallCount,b)
    c = len(x.groupby('IN_DATE'))
    FallReportDays.insert(FallCount,c)
    Date7 = Date7 + pd.DateOffset(years=1)
    Date8 = Date8 + pd.DateOffset(years=1)
    FallCount = FallCount + 1
#TO TEST IF THE LISTS ADD UP TO THE CORRECT AMOUNTS FROM THE CSV
#print(sum(MyWinterList) + sum(MySpringList) + sum(MySummerList) + sum(MyFallList))
#print(len(Table.index))
#print(sum(WinterDeath) + sum(SpringDeath) + sum(SummerDeath) + sum(FallDeath))
#print(Table.CIVILIAN_DEATH.sum())
#print(sum(WinterInjury) + sum(SpringInjury) + sum(SummerInjury) + sum(FallInjury))
#print(Table.Total_Injuries.sum())
#print(sum(WinterAcres) + sum(SpringAcres) + sum(SummerAcres) + sum(FallAcres))
#print(Table.Total_Acres.sum())
#print(sum(WinterCost) + sum(SpringCost) + sum(SummerCost) + sum(FallCost))
#print(Table.IN_LOSSTOTAL.sum())


#Create dataframes for each list
df1 = pd.DataFrame({'Winter Fires': MyWinterList})
df2 = pd.DataFrame({'Spring Fires': MySpringList})
df3 = pd.DataFrame({'Summer Fires': MySummerList})
df4 = pd.DataFrame({'Fall Fires': MyFallList})
df5 = pd.DataFrame({'Winter Fatalities': WinterDeath})
df6 = pd.DataFrame({'Spring Fatalities': SpringDeath})
df7 = pd.DataFrame({'Summer Fatalities': SummerDeath})
df8 = pd.DataFrame({'Fall Fatalities': FallDeath})
df9 = pd.DataFrame({'Winter Injuries': WinterInjury})
df10 = pd.DataFrame({'Spring Injuries': SpringInjury})
df11 = pd.DataFrame({'Summer Injuries': SummerInjury})
df12 = pd.DataFrame({'Fall Injuries': FallInjury})
df13 = pd.DataFrame({'Winter Acres Burned': WinterAcres})
df14 = pd.DataFrame({'Spring Acres Burned': SpringAcres})
df15 = pd.DataFrame({'Summer Acres Burned': SummerAcres})
df16 = pd.DataFrame({'Fall Acres Burned': FallAcres})
df17 = pd.DataFrame({'Winter Damages': WinterCost})
df18 = pd.DataFrame({'Spring Damages': SpringCost})
df19 = pd.DataFrame({'Summer Damages': SummerCost})
df20 = pd.DataFrame({'Fall Damages': FallCost})
df21 = pd.DataFrame({'Winter Report Days': WinterReportDays})
df22 = pd.DataFrame({'Spring Report Days': SpringReportDays})
df23 = pd.DataFrame({'Summer Report Days': SummerReportDays})
df24 = pd.DataFrame({'Fall Report Days': FallReportDays})

#concatenate the dataframes together
dftot = pd.concat([
    df1, df2, df3, df4, df5, df6, df7, df8, df9, df10,
    df11, df12, df13, df14, df15, df16, df17, df18, df19, df20,
    df21, df22, df23, df24
], axis=1)

years = []
for i in range(1982,2018):
    years.insert(i,i)
dftot = dftot.set_index([years])

#export to csv
dftot.to_csv('Fire Impacts.csv')

In [ ]: