博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pandas之时间序列
阅读量:4629 次
发布时间:2019-06-09

本文共 2538 字,大约阅读时间需要 8 分钟。

Pandas中提供了许多用来处理时间格式文本的方法,包括按不同方法生成一个时间序列,修改时间的格式,重采样等等。

按不同的方法生成时间序列

In [7]: import pandas as pd# 按起始和终止日期以及步长生成时间序列In [8]: pd.date_range(start="20171212",end="20180101",freq="D")Out[8]: DatetimeIndex(['2017-12-12', '2017-12-13', '2017-12-14', '2017-12-15',               '2017-12-16', '2017-12-17', '2017-12-18', '2017-12-19',               '2017-12-20', '2017-12-21', '2017-12-22', '2017-12-23',               '2017-12-24', '2017-12-25', '2017-12-26', '2017-12-27',               '2017-12-28', '2017-12-29', '2017-12-30', '2017-12-31',               '2018-01-01'],              dtype='datetime64[ns]', freq='D')In [9]: pd.date_range(start="20171212",end="20180101",freq="10D")Out[9]: DatetimeIndex(['2017-12-12', '2017-12-22', '2018-01-01'], dtype='datetime64[ns]', freq='10D')# 按起始日期,数量和步长生成时间序列In [10]: pd.date_range(start="20171212",periods=10,freq="10D")Out[10]: DatetimeIndex(['2017-12-12', '2017-12-22', '2018-01-01', '2018-01-11',               '2018-01-21', '2018-01-31', '2018-02-10', '2018-02-20',               '2018-03-02', '2018-03-12'],              dtype='datetime64[ns]', freq='10D')In [11]: pd.date_range(start="20171212",periods=10,freq="M")Out[11]: DatetimeIndex(['2017-12-31', '2018-01-31', '2018-02-28', '2018-03-31',               '2018-04-30', '2018-05-31', '2018-06-30', '2018-07-31',               '2018-08-31', '2018-09-30'],              dtype='datetime64[ns]', freq='M')# 如果取不到最后一天,这个时间序列就会停止在前一个生成的日期处In [12]: pd.date_range(start="20171212",end="20180105",freq="10D")Out[12]: DatetimeIndex(['2017-12-12', '2017-12-22', '2018-01-01'], dtype='datetime64[ns]', freq='10D')

案例

假如我们现在有美国2015年12月到2017年9月的911求救电话信息。(数据来源:)假如我们需要统计并绘制每个月的各类求救电话的变化情况,应该怎么做呢?

# coding=utf-8import pandas as pdfrom matplotlib import pyplot as pltfrom matplotlib import font_managerfilepath = "./911.csv"df = pd.read_csv(filepath)font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc")df["timeStamp"] = pd.to_datetime(df["timeStamp"])df.set_index("timeStamp", inplace=True)temp_list = df["title"].str.split(":")cate_list = [i[0] for i in temp_list]df["cate"] = cate_listplt.figure(figsize=(20, 8), dpi=80)# 分组for group_name, group_data in df.groupby(by="cate"):    # 对不同分类进行绘图    count_by_month = group_data.resample("M").count()["title"]    _x = count_by_month.index    _y = count_by_month.values        plt.plot(range(len(_x)), _y, label=group_name)_x = _x.strftime("%Y-%m")plt.xticks(range(len(_x)), _x, rotation=45)plt.legend(loc="best")plt.show()

结果如图:911求救信息变化图

转载于:https://www.cnblogs.com/dereen/p/pandas_sequentially.html

你可能感兴趣的文章
数据图表之圆柱图
查看>>
SQL 学习笔记
查看>>
在CentOS上把MySQL从5.5升级到5.6
查看>>
SurfaceView 间取得焦点
查看>>
软件工程网络15结对编程作业
查看>>
nginx配置ssl证书
查看>>
Java学习笔记07--日期操作类
查看>>
3.commonjs模块
查看>>
case when then else end
查看>>
利用反射对应数据库字段
查看>>
Linux常用命令
查看>>
结对项目开发电梯调度 - 整体设计
查看>>
CSS3边框背景-边框背景(-border-image)
查看>>
CSS3关于过渡效果的问题
查看>>
sql-case when 条件1 then 取值1 when 条件2 then 取值2 else 取值3 end
查看>>
[HNOI 2010]Bounce 弹飞绵羊
查看>>
VIM7.3添加中文帮助文档
查看>>
kdress学习
查看>>
Java第四次实验
查看>>
Welcome to Swift (苹果官方Swift文档初译与注解三十四)---241~247页(第五章-- 函数)
查看>>