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 [ ]: