📜  如何在Python Pandas 中按时间间隔对数据进行分组?(1)

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

如何在Python Pandas 中按时间间隔对数据进行分组?

在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()表示按天进行分组,然后对每组进行求和。

除了sumresample方法还支持其他聚合函数,比如meancountminmax等。

需要注意的是,如果原始数据中存在空值,那么在使用聚合函数时需要考虑如何处理这些空值。

此外,如果需要按多个时间间隔进行分组,可以使用链式调用。例如,我们希望先按周进行分组,再按天进行分组:

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()表示先按周进行分组,再按天进行分组,然后对每组进行求和。