python的csv时间处理成指定的间隔时间_python日期处理(pandas)

这篇博客介绍了如何使用Pandas进行日期处理,包括Timestamp、DatetimeIndex、PeriodIndex和TimedeltaIndex等类型,以及date_range、period_range和timedelta_range函数。通过读取CSV数据并进行可视化,展示了如何增大时间粒度,如按周累计和计算移动平均,以分析自行车流量数据。
摘要由CSDN通过智能技术生成

python日期处理(pandas)

python有内置的日期处理模块,datetime,但是这里主要介绍pandas的日期处理功能

1. pandas中的日期基本数据类型Timestamp 单个日期通过 pd.to_datetime() 将字符串格式的日期,变成Timestamp类型

DatetimeIndex 多个独立的日期组合起来

PeriodIndex 指定了间隔频率的DatetimeIndex通过将DatetimeIndex.to_period("D"),指定间隔频率来得到

TimedeltaIndex 针对时间增量或者持续时间当用一个日期减去另一个日期,放回结果就是上述类型

2. 有规律的时间序列pd.date_range()指定一个时间区段,频率、自动生成这个区间

pd.date_range('2019-12-8', periods=4)

pd.date_range('2019-12-8', '2019-12-12')

pd.date_range('2019-12-8', periods=4, freq='H')

创建生成的对象为 DatetimeIndex类型

pd.period_range()使用上述类似的方法,生成区间

创建生成的对象为 PeriodIndex类型

pd.timedelta_range()使用上述类似的方法,生成区间

创建生成的对象为 TimedeltaIndex 类型

3. 日期处理实例

用到的数据获取链接:

写好的jupyter notebook文件也在此仓库

import numpy as np

import pandas as pd

data = pd.read_csv("Fremont_Bridge_Bicycle_Counter.csv", index_col="Date", parse_dates=True)

data.head()

data.columns = ['Total','West', 'East']

data.head()

data.dropna().describe()

3.1 数据可视化

%matplotlib inline

import seaborn

seaborn.set()

import matplotlib.pyplot as plt

data.plot()

plt.ylabel("Hourly Bicycle Count")

3.2 增大时间粒度

上述时间粒度太细,看不出趋势,重新取样成较大的时间粒度

resample

按周累计上述数据,重新绘图

weekly = data.resample("W").sum()

weekly.plot(style=[':','--','-'])

plt.ylabel("Weekly bicycle count")

数据累计平均

另一种对数据进行累计的简便方法

计算30天的移动平均值

daily = data.resample("D").sum()

daily.rolling(30, center=True).mean().plot(style=[':','--','-'])

plt.ylabel("mean of 30 days count")

移动平均

使用移动平均 来平滑曲线

高斯分布时间窗口

窗口宽度=50天 窗口内高斯平滑宽度=10天

daily.rolling(50, center=True,

win_type="gaussian").sum(std=10).plot(style=[':','--','-'])

3.3 后续

后续代码不再展示,查看《python数据科学手册》P182 后面还对每小时的自行车流量

每周每天的自行车流量

工作日,双休日每小时的自行车流量

做了分析,主要用到了数据透视 groupby 操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值