📅  最后修改于: 2023-12-03 15:08:56.368000             🧑  作者: Mango
在Pandas中,我们可以使用resample
方法来对时间序列数据进行分组。
首先,需要将数据的索引设置为时间戳,可以使用pd.to_datetime
将字符串转换为时间戳。例如:
import pandas as pd
import numpy as np
df = pd.DataFrame({'date': ['2022-05-01', '2022-05-01', '2022-05-02', '2022-05-02', '2022-05-03', '2022-05-03'],
'value': [1, 2, 3, 4, 5, 6]})
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)
print(df)
输出结果为:
value
date
2022-05-01 1
2022-05-01 2
2022-05-02 3
2022-05-02 4
2022-05-03 5
2022-05-03 6
接着,我们可以使用resample
方法来按时间间隔进行分组。例如,我们希望按天对数据进行分组,可以使用resample('D').sum()
来实现:
df_daily = df.resample('D').sum()
print(df_daily)
输出结果为:
value
date
2022-05-01 3
2022-05-02 7
2022-05-03 11
resample('D').sum()
表示按天进行分组,然后对每组进行求和。
除了sum
,resample
方法还支持其他聚合函数,比如mean
、count
、min
、max
等。
需要注意的是,如果原始数据中存在空值,那么在使用聚合函数时需要考虑如何处理这些空值。
此外,如果需要按多个时间间隔进行分组,可以使用链式调用。例如,我们希望先按周进行分组,再按天进行分组:
df_weekly_daily = df.resample('W').resample('D').sum()
print(df_weekly_daily)
输出结果为:
value
date
2022-05-01 3
2022-05-02 4
2022-05-03 9
2022-05-08 11
resample('W').resample('D').sum()
表示先按周进行分组,再按天进行分组,然后对每组进行求和。