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=False
到 groupby
:
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()
代码
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=False
到 groupby
:
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()