python数据处理——pandas进行数据变频或插值

这里首先要介绍官方文档,对python有了进一步深度的学习的你们们应该会发现,网上无论csdn或者简书上仍是什么地方,教程来源基本就是官方文档,因此英语只要还过的去,推荐看官方文档,就算不够好,也能够只看它里面的sample就够了html

好了,不说废话,看个人代码:python

import pandas as pd
import numpy as np
rng = pd.date_range('20180101', periods=40)
ts = pd.Series(np.arange(1,41), index=rng)#这一行和上一行生成了一个index为时间,一共40天的数据
ts_m = ts.resample('M').asfreq()#对数据进行按月重采样,以后再asfreq()
print(ts)
print(ts_m)

tips:由于发生了一些事,因此没有写完这部分先这样吧,后面我再补全学习

结果在下面,你们看按照月度‘M’采样,会抓取到月末的数据,1月31日和2月28日,嗯,后面的asfreq()是须要的,否则返回的就只是一个resample对象,固然除了M之外,也能够本身进行随意的设置频率,好比说‘3M’三个月,‘5T’五分钟,‘30S’三十秒,更多精彩内容请多多查看文档code

 

2018-01-07     7
2018-01-08     8
2018-01-09     9
2018-01-10    10
2018-01-11    11
2018-01-12    12
2018-01-13    13
2018-01-14    14
2018-01-15    15
2018-01-16    16
2018-01-17    17
2018-01-18    18
2018-01-19    19
2018-01-20    20
2018-01-21    21
2018-01-22    22
2018-01-23    23
2018-01-24    24
2018-01-25    25
2018-01-26    26
2018-01-27    27
2018-01-28    28
2018-01-29    29
2018-01-30    30
2018-01-31    31
2018-02-01    32
2018-02-02    33
2018-02-03    34
2018-02-04    35
2018-02-05    36
2018-02-06    37
2018-02-07    38
2018-02-08    39
2018-02-09    40
Freq: D, dtype: int32
2018-01-31    31.0
2018-02-28     NaN
Freq: M, dtype: float64

至于这个asfreq(),用法是这样的:htm

# to 45 minute frequency and forward fill
In [5]: converted = ts.asfreq('45Min', method='pad')

In [6]: converted.head()
Out[6]: 
2011-01-01 00:00:00    0.469112
2011-01-01 00:45:00    0.469112
2011-01-01 01:30:00   -0.282863
2011-01-01 02:15:00   -1.509059
2011-01-01 03:00:00   -1.135632
Freq: 45T, dtype: float64

而后既然有下采样,那就要有插值了,插值的用法以下所示:对象

这个是线性插值,固然还有向前填充(.bfill())向后填充(.pad())的,能够还看这个官方文档啦,官方文档就是好教程

>>> s = pd.Series([0, 1, np.nan, 3])
>>> s.interpolate()
0    0
1    1
2    2
3    3
dtype: float64