现在我们有2015到2017年25万条911的紧急电话的数据,请统计出出这些数据中不同类型的紧急情况的次数,如果我们还想统计出不同月份不同类型紧急电话的次数的变化情况,应该怎么做呢?
首先查看数据,(df.head,df.info)此数据有经纬度,twp 位置,编号)分类在title 中冒号前
看是否有缺失,
#获取分类情况df["title"].str.split(":")[0]#去Series 列表中第一个数值(利用遍历)
temp_list=df["title"].str.split(":").to_list()#
cate_list=list(set([i[0] for i in temp_list[])
#统计分类情况,构造全为零的数组,
zeros_df=pd.DataFrame(np,zeros(df.shape[0].len(cate_list),columns=cate_list)
#赋值
for cate in cate_list:
df['title
不同月份,按照横线进行切割,(2015-2017)按照右边横向进行切割,按照月份分组,新建一列{分类)三类fire,traffic,ems,
np.array(cate_list).reshape((df.shape[0],1)columns="cate")
pandas时间序列;时间字符串pd.date.range(start,end,periods,freq)
产生一个时间范围,关于频率的缩写
DataFrame使用时间序列
index=pd.date.range()产生时间序列的索引,可以使用pandas提供的方法把时间字符串转化为时间序列将一个index转换为时间序列为索引。pd.to_datatime()能够把一个seiries字符串转为pandas类型(时间类型)看2015/12/15发生的电话次数
pandas重采样:指的是将时间序列从一个频率转化为另一个频率进行处理的过程将高频率数据转化为低频率数据为降采样,低频率转化为u高频率为升采样
t.resample("M").mean()按月来统计平均值
t.resample("M").count()
问题:不同月份电话次数的变化情况?
将每秒统计转换为每月统计。count(),画折线图。
pM2.5将时间格式转换:PeriodIndex(传一些参数PERIODS=pd.PeriodIndex(year=df.["year"],mounth=df["month"],day=df=df["day"],hour=df["hour"],freq=)
# coding=utf-8
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
df = pd.read_csv("./911.csv")
df["timeStamp"] = pd.to_datetime(df["timeStamp"])#转换时间类型
df.set_index("timeStamp",inplace=True)
#统计出911数据中不同月份电话次数的
count_by_month = df.resample("M").count()["title"]
print(count_by_month)
#画图
_x = count_by_month.index
_y = count_by_month.values
# for i in _x:
# print(dir(i))
# break
_x = [i.strftime("%Y%m%d") for i in _x]
plt.figure(figsize=(20,8),dpi=80)
plt.plot(range(len(_x)),_y)
plt.xticks(range(len(_x)),_x,rotation=45)
plt.show()