2020-12-10数据科学包学习第六天笔记Pandas

1308-朱同学

发表文章数:18

首页 » 数据科学库 » 正文

例1:

# pdP15.py 统计2015-2017年911不同类型的紧急情况的次数
import pandas as pd
import numpy as np

#读取数据
file_path = "D:/studyPycharm/datascience/datasourse/911/911.csv"
t = pd.read_csv(file_path)

#取出带有紧急情况类型的数据title_data,统计一共有几类紧急情况title_list
title_data = t["title"].str.split(": ").to_list()
title_list = list(set([i[0] for i in title_data]))

#构造行为紧急情况类型,列为所有电话数量的全0数组,将data填进去并统计
zeros_df = pd.DataFrame(np.zeros((t.shape[0],len(title_list))),columns=title_list)
for i in title_list:
    zeros_df[i][t["title"].str.contains(i)]=1
print(zeros_df.count())

pandas 中的时间序列

语句:pd.date_range(start=None, end=None, periods=None, freq=‘D’)
1.start和end以及freq配合能够生成start和end范围内以频率freq的一组时间索引
2.start和periods以及freq配合能够生成从start开始的频率为freq的periods个时间索引
频率的缩写:
2020-12-10数据科学包学习第六天笔记Pandas

pandas重采样

重采样:指的是将时间序列从一个频率转化为另一个频率进行处理的过程,将高频率数据转化为低频率数据为降采样,低频率转化为高频率为升采样,用 resample的方法实现频率转化。

例2:

#统计出911数据中不同月份电话次数的变化情况 pdP16.py
import pandas as pd
from matplotlib import pyplot as plt

#读取数据
file_path = "D:/studyPycharm/datascience/datasourse/911/911.csv"
t = pd.read_csv(file_path)

#把时间设置为index
t["timeStamp"] = pd.to_datetime(t["timeStamp"])
t.set_index("timeStamp",inplace=True)

#统计出911数据中不同月份电话次数
month_telnum = t.resample("M").count()["title"]

#画图
_x = month_telnum.index
_y = month_telnum.values

#只保留"年-月-日"格式
_x = [i.strftime("%Y-%m-%d") for i in _x]

plt.figure(figsize=(20,8))
plt.plot(range(len(_x)),_y)
plt.xticks(range(len(_x)),_x,rotation = 45)
plt.show()

例3:

#统计出911数据中不同月份不同类型的电话的次数的变化情况 pdP17.py
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

#读取数据
file_path = "D:/studyPycharm/datascience/datasourse/911/911.csv"
t = pd.read_csv(file_path)
t["timeStamp"] = pd.to_datetime(t["timeStamp"])

#添加列,表示分类
title_data = t["title"].str.split(": ").to_list()
title_list = [i[0] for i in title_data]

t["cate"] = pd.DataFrame(np.array(title_list).reshape((t.shape[0],1)))

t.set_index("timeStamp",inplace=True)

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

#分组
for group_name, group_data in t.groupby(by="cate"):

    #对不同类都进行绘图
    month_telnum = group_data.resample("M").count()["title"]

    #画图
    _x = month_telnum.index
    _y = month_telnum.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()

例4:

#现在我们有北上广、深圳、和沈阳5个城市空气质量数据,请绘制出5个城市的PM2.5随时间的变化情况  pdP18.py
import pandas as pd
from matplotlib import pyplot as plt

file_path = "D:/studyPycharm/datascience/datasourse/城市空气质量数据/BeijingPM20100101_20151231.csv"
t = pd.read_csv(file_path)
#把分开的时间字符串通过PeriodIndex的方法转化成pandas的时间类型
period = pd.PeriodIndex(year=t["year"],month=t["month"],day=t["day"],hour=t["hour"],freq="H")
t["datetime"] = period

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

#降采样
t = t.resample("7D").mean()
#处理缺失数据,删除nan
data = t["PM_US Post"].dropna()

#画图
_x = data.index
_x = [i.strftime("%Y%m%d") for i in _x]
_y = data.values

plt.figure(figsize=(20,8))
plt.plot(range(len(_x)),_y)
plt.xticks(range(0,len(_x),10),list(_x)[::10],rotation = 45)
plt.show()

未经允许不得转载:作者:1308-朱同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《2020-12-10数据科学包学习第六天笔记Pandas》 发布于2020-12-10

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

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

支付宝扫一扫打赏

微信扫一扫打赏

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

登录

忘记密码 ?

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

Q Q 登 录
微 博 登 录