📜  如何在Python中重新采样时间序列数据?(1)

📅  最后修改于: 2023-12-03 15:08:58.196000             🧑  作者: Mango

如何在Python中重新采样时间序列数据?

在数据分析中,我们经常需要对时间序列数据进行重新采样以满足不同的需求。本文介绍如何使用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方法将数据转换为更高或更低的频率,并对数据进行聚合以便更好地分析和理解。