使用911数据完成以下任务:
分析任务:(每个任务都要有图和文字分析)
1、分析所有类型的报警数量随月份的变化关系,并得出结论
2、分析各类类型的报警数量的随月份的变化关系 ,并得出结论
3、分析所有类型的报警数量在周内的变化关系,并得出结论
4、分析火灾类型的报警数量与季节的变化关系,并得出结论
5、使用经纬度分析美国各地的火灾报警数量与地域的变化关系,并得出结论⭐️⭐️⭐️
- 分析所有类型的报警数量随月份的变化关系,并得出结论
代码:
import pandas as pd
from matplotlib import pyplot as plt
plt.rcParams["font.family"]= "Microsoft YaHei"
data = pd.read_csv("911.csv")
data["month"] = data["timeStamp"].apply(lambda x:x[5:7])
data_group = data.groupby("month")
x,y = [] ,[]
for m,d in data_group:
x.append(int(m))
y.append(d["month"].count())
plt.xlabel("月份")
plt.ylabel("报警次数")
plt.title("报警次数与月份对比图")
plt.xticks(x,x)
plt.plot(x,y)
plt.show()
分析:由图可知,美国报警次数前7月份相对较高;在前七个月里,2、4月相对于1、3、6、7较低。在后五个月里,8,9月份为全年报警次数最少的两个月,从10月份开始一直增长到12月份。
- 分析各类类型的报警数量的随月份的变化关系 ,并得出结论
代码:
import pandas as pd
from matplotlib import pyplot as plt
plt.rcParams["font.family"]= "Microsoft YaHei"
data = pd.read_csv("911.csv")
data["month"] = data["timeStamp"].apply(lambda x:x[5:7]) #
data["cate"] = data["title"].str.split(":").apply(lambda x:x[0]) # 增加一列属性
data_c_group = data.groupby("cate")
for c,d in data_c_group:
data_m_group = d.groupby("month")
y = []
for m,d1 in data_m_group:
y.append(d1["month"].count())
x = range(len(y))
plt.plot(range(12),range(1,13),label=c)
plt.xlabel("月份")
plt.ylabel("报警次数")
plt.title("报警次数与月份对比图")
plt.xticks(x,x)
plt.legend(loc="best")
plt.show()
由图可知:
EMS:1到11月份有着逐渐下降的趋势,到12 月份又显著上升。结果而言,全年EMS报警次数最少的是8到11月份。较多的为1、3、7月份。
Traffic : 全年有着跌宕起伏的变化率。次数一次维持在16000到24000
起伏不定。
Fire : 6、7月份相对偏高。
- 分析所有类型的报警数量在周内的变化关系,并得出结论
代码:
import pandas as pd
from matplotlib import pyplot as plt
plt.rcParams["font.family"]= "Microsoft YaHei"
data = pd.read_csv("911.csv")
data["time"] = data["timeStamp"].apply(lambda x:x[:-9])
data["timeStamp"] = pd.to_datetime(data["timeStamp"])
data.set_index("timeStamp",inplace=True)
data_week = data.resample("W")
week_data=[0 for _ in range(7)]
for n,d in data_week:
for i in range(len(d["time"].value_counts())):
week_data[i]+=d["time"].value_counts().values[i]
y = week_data
x = range(len(y))
plt.plot(x,y)
plt.ylabel("报警数量")
plt.xticks(x,["周一","周二","周三","周四","周五","周六","周天"])
plt.show()
由图可知:
周一到周天,一直处于递减的趋势。
- 分析火灾类型的报警数量与季节的变化关系,并得出结论
代码:
import pandas as pd
from matplotlib import pyplot as plt
plt.rcParams["font.family"]= "Microsoft YaHei"
data = pd.read_csv("911.csv")
data["cate"] = data["title"].str.split(":").apply(lambda x:x[0]) # 增加一列属性
data["timeStamp"] = pd.to_datetime(data["timeStamp"])
data.set_index("timeStamp",inplace=True)
data_fire = data[data["cate"]=="Fire"]
#data_fire.set_index("timeStamp",inplace=True)
data_quarter = data_fire.resample("Q")
quarter_data=[0 for _ in range(4)]
for n,d in data_quarter:
if int(str(n)[5:7]) <= 3: # 春季
quarter_data[0] += len(d)
elif int(str(n)[5:7]) <= 6: #
quarter_data[1] += len(d)
elif int(str(n)[5:7]) <= 9: #
quarter_data[2] += len(d)
else :
quarter_data[3] += len(d)
y = quarter_data
x = range(len(y))
plt.plot(x,y)
plt.ylabel("火灾数量")
plt.xticks(x,["春季",'夏季','秋季','冬季'])
plt.show()
由图可知: 火灾发生数量从夏春秋东递减。最多是夏季,可见与温度和湿度有关。
- 使用经纬度分析美国各地的火灾报警数量与地域的变化关系,并得出结论
代码:
import pandas as pd
from matplotlib import pyplot as plt
plt.rcParams["font.family"]= "Microsoft YaHei"
data = pd.read_csv("911.csv")
data["cate"] = data["title"].str.split(":").apply(lambda x:x[0]) # 增加一列属性
data["lat_round"] = data["lat"].apply(lambda x : round(x,2)) # 把维度归为2位小数
data_fire = data[data["cate"]=="Fire"]
y = data_fire["lat_round"].value_counts().sort_index()
#
x = range(len(y))
plt.plot(x,y)
plt.ylabel("火灾数量")
plt.xlabel("维度")
plt.xticks(x[::10],y.index[::10])
plt.show()
由图可知:维度处于40~40.5之间火灾发生较多。可见并不是温度越高,发生火灾越多,其可能与美国人口分布,环境有关。