Pandas 分组 index.month_name

Pandas groupby index.month_name

代码

def plot_data_by_month(data, x, y) :
    data_by_month = data[data[y] > 0].groupby(data[data[y] > 0].index.month_name())[y].mean()

    ax = data_by_month.plot(figsize=(15, 10))
    ax.set_title(y + ' ' + 'by Month of Year')
    ax.set_xlabel('Month')
    ax.set_ylabel(y)
    time_labels = data_by_month.index
    ticks = ax.set_xticks(range(len(time_labels)), time_labels)

plot_data_by_month(chiller1, 'Time', 'kWE')

结果

Picture of graph (Can't imbed photos yet)

不确定如何将月份从字母顺序转换为日历顺序,数据框是从最旧到最新(1 月到 12 月)的顺序,所以不确定如何解决这个问题。

您可以将行仅过滤一次以帮助 DataFrame df1,如有必要,排序 DatetimeIndex 并为防止排序添加 sort=Falsegroupby:

df1 = data[data[y] > 0].sort_index()
data_by_month = df1.groupby(df1.index.month_name(), sort=False)[y].mean()

改为:

data_by_month = data[data[y] > 0].groupby(data[data[y] > 0].index.month_name())[y].mean()