这里首先要介绍官方文档,对python有了进一步深度的学习的大家们应该会发现,网上不管csdn或者简书上还是什么地方,教程来源基本就是官方文档,所以英语只要还过的去,推荐看官方文档,就算不够好,也可以只看它里面的sample就够了
好了,不说废话,看我的代码:
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'三十秒,更多精彩内容请多多查看文档
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(),用法是这样的:
# 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
以上这篇python数据处理——对pandas进行数据变频或插值实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持python博客。
Powered By python教程网 鲁ICP备18013710号
python博客 - 小白学python最友好的网站!