2020-11-23 数据科学库(6) pandas时间序列,911、pm2.5数据处理

1411-李同学

发表文章数:148

热门标签

, , ,
首页 » 数据科学库 » 正文

1、对911统计的数据处理

1.1根据事故的不同类型分类统计

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import font_manager
file_path="./911.csv"
#myfont=font_manager.FontProperties(fname="C:/Windows/Fonts/msyh.ttc")
df=pd.read_csv(file_path)
pd.set_option('display.max_columns', 20)

# print(df.head(1))
# print(df.info())

#获取分类情况
#print(df["title"].str.split(":"))
temp_list=df["title"].str.split(":").tolist()
cate_list=list(set([i[0]for i in temp_list]))
print(cate_list)

#构造0的数组
zero_df=pd.DataFrame(np.zeros((df.shape[0],len(cate_list))),columns=cate_list)

#赋值:方法一遍历每个分类
for cate in cate_list:
    zero_df[cate][df["title"].str.contains(cate)]=1
print(zero_df)

#方法二:遍历每一行
# for i in range(df.shape[0]):
#     zero_df.loc[i,temp_list[i][0]]=1

data1=zero_df.sum(axis=0)
print(data1)

1.2 第二种方法统计事故类型

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import font_manager
file_path="./911.csv"
#myfont=font_manager.FontProperties(fname="C:/Windows/Fonts/msyh.ttc")
df=pd.read_csv(file_path)
pd.set_option('display.max_columns', 20)

# print(df.head(1))
# print(df.info())

#获取分类情况
#print(df["title"].str.split(":"))
temp_list=df["title"].str.split(":").tolist()
cate_list=[i[0]for i in temp_list]
print(cate_list)
#在df中添加一列
df["cate"]=pd.DataFrame(np.array(cate_list).reshape((df.shape[0],1)))



#print(df.head(5))
print(df.groupby(by="cate").count()["title"])

2、pandas时间序列

pd.data_range(start=None,end=None,periods=None,freq="D"

2.1示例

import pandas as pd

df=pd.date_range(start="20171031",periods=10,freq="M")
print(df)

2020-11-23 数据科学库(6) pandas时间序列,911、pm2.5数据处理
2020-11-23 数据科学库(6) pandas时间序列,911、pm2.5数据处理

2.2 时间戳的转换– pandas重采样

df["timeStamp"]=pd.to_datetime(df["timeStamp"],format=)

911 不同月份不同次数

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import font_manager
file_path="./911.csv"
#myfont=font_manager.FontProperties(fname="C:/Windows/Fonts/msyh.ttc")
df=pd.read_csv(file_path)
pd.set_option('display.max_columns', 20)

df["timeStamp"]=pd.to_datetime(df["timeStamp"])
df.set_index("timeStamp",inplace=True)
#print(df.head(10))
count_by_month=df.resample("M").count()["title"]
#print(count_by_month.head(10))
_x=count_by_month.index
_y=count_by_month.values

_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()

2020-11-23 数据科学库(6) pandas时间序列,911、pm2.5数据处理

3、911:将不同月份不同类型的电话次数做折线图

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import font_manager
file_path="./911.csv"


#吧时间字符串转换为时间类型设置为索引
df=pd.read_csv(file_path)
pd.set_option('display.max_columns', 20)
df["timeStamp"]=pd.to_datetime(df["timeStamp"])


#设置添加列,表示分类,
temp_list=df["title"].str.split(":").tolist()
cate_list=[i[0]for i in temp_list]
df["cate"]=pd.DataFrame(np.array(cate_list).reshape((df.shape[0],1)))

#将索引放到后面 很重要
df.set_index("timeStamp",inplace=True)

plt.figure(figsize=(20, 8), dpi=80)
#分组
#分组 group_name是对应的ems,traffic标签,groupdata是筛选出来的数据
#对groupdata进行时间重采样
for group_name, group_data in df.groupby(by="cate"):
    #对不同的分类都进行绘图
    count_by_month = group_data.resample("M").count()["title"]
    # print(count_by_month.head(10))
    _x = count_by_month.index
    _y = count_by_month.values

    _x = [i.strftime("%Y-%m-%d") for i in _x]

    plt.plot(range(len(_x)), _y, label=group_name)


plt.xticks(range(len(_x)), _x, rotation=45)
plt.legend(loc="best")
plt.show()

2020-11-23 数据科学库(6) pandas时间序列,911、pm2.5数据处理

4、pm2.5案例:对比中美记录pm2.5随时间变化的折线图

import pandas as pd
from matplotlib import pyplot as plt

file_path="./BeijingPM20100101_20151231.csv"

df=pd.read_csv(file_path)

print(df.head())
print(df.info())

#periodindex 把分开的时间字符串通过periodIndex的方法转换为pandas的时间类型
period=pd.PeriodIndex(year=df["year"],month=df["month"],day=df["day"],hour=df["hour"],freq="H")
# print(period)
# print(type(period))
df["datetime"]=period
# print(df.head(10))


#把datetime设置为索引
df.set_index("datetime",inplace=True)

#对df进行降采样
df=df.resample("7D").mean()

#处理缺失数据,删除缺失数据
# print(df["PM_US Post"])
data=df["PM_US Post"]
data_china=df["PM_Dongsi"]

_x=data.index
_x=[i.strftime("%Y-%m-%d")for i in _x]
_x_china=[i.strftime("%Y-%m-%d")for i in data_china.index ]
_y_china=data_china.values
_y=data.values

plt.figure(figsize=(20,8),dpi=80)

plt.plot(range(len(_x)),_y,label="US_Post")
plt.plot(range(len(_x_china)),_y_china,label="CN_Post")
plt.xticks(range(0,len(_x_china),10),list(_x_china)[::10],rotation=45)
plt.legend(loc="best")
plt.show()

2020-11-23 数据科学库(6) pandas时间序列,911、pm2.5数据处理

未经允许不得转载:作者:1411-李同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《2020-11-23 数据科学库(6) pandas时间序列,911、pm2.5数据处理》 发布于2020-11-23

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录