天天看点

python+pandas+时间、日期以及时间序列处理方法

先简单的了解下日期和时间数据类型及工具 python标准库包含于日期(date)和时间(time)数据的数据类型,datetime、time以及calendar模块会被经常用到。datetime以毫秒形式存储日期和时间,datetime.timedelta表示两个datetime对象之间的时间差。给datetime对象加上或减去一个或多个timedelta,会产生一个新的对象

只有这三个参数了!datetime模块中的数据类型

1)python标准库函数 日期转换成字符串:利用str 或strftime 字符串转换成日期:datetime.strptime

pandas通常用于处理成组日期,不管这些日期是dataframe的轴索引还是列,to_datetime方法可以解析多种不同的日期表示形式。

pandas最基本的时间序列类型就是以时间戳(时间点)(通常以python字符串或datetime对象表示)为索引的series:

<code>ts</code>

<code>2017-06-20 0.788811</code>

<code>2017-06-21 0.372555</code>

<code>2017-06-22 0.009967</code>

<code>2017-06-23 -1.024626</code>

<code>2017-06-24 0.981214</code>

<code>2017-06-25 0.314127</code>

<code>2017-06-26 -0.127258</code>

<code>2017-06-27 1.919773</code>

<code>dtype: float64</code>

<code>ts[ts.index[2]]</code>

<code>0.0099673896063391908</code>

<code>ts['2017-06-21']#传入可以被解析成日期的字符串</code>

<code>0.37255538918121028</code>

<code>ts['21/06/2017']</code>

<code>ts['20170621']</code>

<code>ts['2017-06']#传入年或年月</code>

<code>ts['2017-06-20':'2017-06-23']#时间范围进行切片</code>

1).index.is_unique检查索引日期是否是唯一的

2)对非唯一时间戳的数据进行聚合,通过groupby,并传入level = 0(索引的唯一一层)

<code>dates = pd.datetimeindex(['2017/06/01','2017/06/02','2017/06/02','2017/06/02','2017/06/03'])</code>

<code>dates</code>

<code>datetimeindex(['2017-06-01', '2017-06-02', '2017-06-02', '2017-06-02',</code>

<code>  '2017-06-03'],</code>

<code>  dtype='datetime64[ns]', freq=none)</code>

<code>dup_ts = pd.series(np.arange(5),index = dates)</code>

<code>dup_ts</code>

<code>2017-06-01 0</code>

<code>2017-06-02 1</code>

<code>2017-06-02 2</code>

<code>2017-06-02 3</code>

<code>2017-06-03 4</code>

<code>dtype: int32</code>

<code>dup_ts.index.is_unique</code>

<code>false</code>

<code>dup_ts['2017-06-02']</code>

<code>grouped = dup_ts.groupby(level=0).mean()</code>

<code>grouped</code>

<code>dup_df = pd.dataframe(np.arange(10).reshape((5,2)),index = dates )</code>

<code>dup_df</code>

<code>1)字符串、日期的转换方法</code>

<code>2)日期和时间的主要python,datetime、timedelta、pandas.to_datetime等</code>

<code>3)以时间为索引的series和dataframe的索引、切片</code>

<code>4)带有重复时间索引时的索引,.groupby(level=0)应用</code>