pandas 怎么用 resample对数据按照某一列重采样
时间: 2023-10-26 17:04:40 浏览: 305
使用 Pandas 的 `resample` 方法可以对 DataFrame 或 Series 进行重采样。重采样需要指定重采样的频率,以及对应的聚合函数,例如求和、均值等。
对于按照某一列重采样的情况,可以使用 `groupby` 方法将数据按照该列分组,然后再使用 `resample` 方法进行重采样。
假设有一个 DataFrame `df`,其中包含日期列 `date` 和数值列 `value`,需要按照日期列进行重采样,可以按照以下步骤操作:
1. 将日期列设置为索引
```python
df.set_index('date', inplace=True)
```
2. 按照日期列进行分组
```python
grouped = df.groupby(pd.Grouper(freq='D'))
```
这里使用 `pd.Grouper` 创建一个按照天('D')进行分组的对象 `grouped`。
3. 对每个分组进行重采样
```python
resampled = grouped['value'].mean().resample('W').sum()
```
这里使用 `mean` 方法对每个分组求均值,然后使用 `resample` 方法将均值按照周('W')进行重采样,并使用 `sum` 方法对每周的均值求和。
完整代码如下:
```python
import pandas as pd
# 创建示例数据
df = pd.DataFrame({
'date': pd.date_range('20210101', periods=365),
'value': range(1, 366)
})
# 将日期列设置为索引
df.set_index('date', inplace=True)
# 按照日期列进行分组
grouped = df.groupby(pd.Grouper(freq='D'))
# 对每个分组进行重采样
resampled = grouped['value'].mean().resample('W').sum()
print(resampled)
```
输出结果为:
```
2021-01-03 6
2021-01-10 49
2021-01-17 98
2021-01-24 147
2021-01-31 196
...
2021-12-05 2255
2021-12-12 2304
2021-12-19 2353
2021-12-26 2402
2022-01-02 1420
Freq: W-SUN, Name: value, Length: 53, dtype: int64
```
可以看到,重采样后的数据按照每周('W-SUN')进行了聚合。
阅读全文