Pandas 根据每小时数据计算每日和每月平均值
Pandas Calculate Daily & Monthly Average from Hourly Data
我有一个 8784 x 13 的 DF (df2),它看起来像这样,带有 yyyy-mm-dd 格式的 "DATE" 列和小时数的 "TIME" 列,如下所示,我需要计算 2016 年的每日和每月平均值:
DATE TIME BAFFIN BAY GATUN II GATUN I KLONDIKE IIIG \
8759 2016-01-01 0000 8.112838 3.949518 3.291540 7.629178
8760 2016-01-01 0100 7.977169 4.028678 3.097562 7.477159
KLONDIKE II LAGOA II LAGOA I PENASCAL II PENASCAL I SABINA \
8759 7.095450 NaN NaN 8.250527 8.911508 3.835205
8760 7.362562 NaN NaN 7.877099 7.858908 3.766714
SIERRA QUEMADA
8759 3.405049
8760 4.386598
我曾尝试将 'DATE' 列转换为日期时间以使用 groupby,但我不确定如何执行此操作。我在下面尝试了以下操作,但是当我在 Excel 中测试计算时,它没有按照预期的日或月平均值对我的数据进行分组:
davg_df2 = df2.groupby(by=df2['DATE'].dt.date).mean() #
davg_df2m = df2.groupby(by=df2['DATE'].dt.month).mean() #
谢谢您,我仍在学习 python 并了解如何使用日期和不同的数据类型!
试试这个:
df2['DATE'] = pd.to_datetime(df2['DATE'], format='%Y-%m-%d')
# monthly
davg_df2 = df2.groupby(pd.Grouper(freq='M', key='DATE')).mean()
# daily
davg_df2 = df2.groupby(pd.Grouper(freq='D', key='DATE')).mean()
# first convert the DATE column to datetime data type:
df2['DATE'] = pd.to_datetime(df2['DATE'])
# create new columns for month and day like so:
df2['month'] = df2['DATE'].apply(lambda t:t.month)
df2['day'] = df2['DATE'].apply(lambda t:t.day)
# then you group by day and month and get the mean like so:
davg_df2m = df2.groupby('month').mean()
davg_df2 = df2.groupby('day').mean()
我有一个 8784 x 13 的 DF (df2),它看起来像这样,带有 yyyy-mm-dd 格式的 "DATE" 列和小时数的 "TIME" 列,如下所示,我需要计算 2016 年的每日和每月平均值:
DATE TIME BAFFIN BAY GATUN II GATUN I KLONDIKE IIIG \
8759 2016-01-01 0000 8.112838 3.949518 3.291540 7.629178
8760 2016-01-01 0100 7.977169 4.028678 3.097562 7.477159
KLONDIKE II LAGOA II LAGOA I PENASCAL II PENASCAL I SABINA \
8759 7.095450 NaN NaN 8.250527 8.911508 3.835205
8760 7.362562 NaN NaN 7.877099 7.858908 3.766714
SIERRA QUEMADA
8759 3.405049
8760 4.386598
我曾尝试将 'DATE' 列转换为日期时间以使用 groupby,但我不确定如何执行此操作。我在下面尝试了以下操作,但是当我在 Excel 中测试计算时,它没有按照预期的日或月平均值对我的数据进行分组:
davg_df2 = df2.groupby(by=df2['DATE'].dt.date).mean() #
davg_df2m = df2.groupby(by=df2['DATE'].dt.month).mean() #
谢谢您,我仍在学习 python 并了解如何使用日期和不同的数据类型!
试试这个:
df2['DATE'] = pd.to_datetime(df2['DATE'], format='%Y-%m-%d')
# monthly
davg_df2 = df2.groupby(pd.Grouper(freq='M', key='DATE')).mean()
# daily
davg_df2 = df2.groupby(pd.Grouper(freq='D', key='DATE')).mean()
# first convert the DATE column to datetime data type:
df2['DATE'] = pd.to_datetime(df2['DATE'])
# create new columns for month and day like so:
df2['month'] = df2['DATE'].apply(lambda t:t.month)
df2['day'] = df2['DATE'].apply(lambda t:t.day)
# then you group by day and month and get the mean like so:
davg_df2m = df2.groupby('month').mean()
davg_df2 = df2.groupby('day').mean()