📅  最后修改于: 2023-12-03 15:08:58.196000             🧑  作者: Mango
在数据分析中,我们经常需要对时间序列数据进行重新采样以满足不同的需求。本文介绍如何使用Python中的pandas库对时间序列数据进行重新采样。
在进行重新采样之前,我们需要先加载pandas库和时间序列数据集。这里我们使用pandas自带的datareader模块下载雅虎财经上的AAPL(苹果公司股票)数据集。
import pandas as pd
import pandas_datareader.data as web
start = pd.to_datetime('2010-01-01')
end = pd.to_datetime('2019-12-31')
df = web.DataReader('AAPL', 'yahoo', start, end)
df.head()
这会输出数据集的前几行,如下所示:
High Low Open Close Volume Adj Close
Date
2010-01-04 30.642857 30.340000 30.490000 30.572857 123432400.0 26.681330
2010-01-05 30.798571 30.464285 30.657143 30.625713 150476200.0 26.727465
2010-01-06 30.747143 30.107143 30.625713 30.138571 138040000.0 26.302330
2010-01-07 30.285715 29.864286 30.250000 30.082857 119282800.0 26.253704
2010-01-08 30.285715 29.865715 30.042856 30.282858 111902700.0 26.428249
本数据集包含AAPL公司自2010年1月1日至2019年12月31日的每日开盘价、最高价、最低价、收盘价、成交量等信息。
pandas中的resample方法可以用于重新采样时间序列数据。它提供了一种将数据转换为指定频率(时间间隔)的简便方法。
下面是一个将数据集从每日重新采样为每月的示例代码:
monthly_df = df.resample('M').mean()
monthly_df.head()
运行后,输出的数据框如下:
High Low Open Close Volume Adj Close
Date
2010-01-31 29.145454 28.454545 28.737726 28.930909 1.913624e+08 25.265765
2010-02-28 28.987106 28.566341 28.811053 28.808947 1.068946e+08 25.159276
2010-03-31 33.114782 32.575652 32.859130 32.836957 1.986638e+08 28.666763
2010-04-30 33.297500 32.732500 33.016250 33.052500 1.320466e+08 28.850848
2010-05-31 36.170455 35.227727 35.721818 35.930455 2.117098e+08 31.353649
resample方法中的"M"表示重新采样为每月,mean()表示对每月内的数据取平均值。我们也可以使用其他频率,如"Q"(季度)或"W"(每周)等。
本文介绍了如何在Python中使用pandas对时间序列数据进行重新采样。我们可以使用resample方法将数据转换为更高或更低的频率,并对数据进行聚合以便更好地分析和理解。