如何为小时级时间序列DataFrame绘制月度箱线图?
解决方法
你不需要先通过groupby分组后再绘图,更简单的方式是先给DataFrame添加一个月份标识列,然后直接用seaborn的boxplot按这个列分组绘制:
步骤1:添加月份列
可以选择提取月份名称(比如"January")或者月份数字(1-12),前者可读性更强:
# 提取月份名称(如"January") df['Month'] = df['Time'].dt.month_name() # 或者提取月份数字(1-12) # df['Month'] = df['Time'].dt.month
步骤2:绘制月份箱线图
用seaborn的boxplot,指定x轴为月份列,y轴为数值列X即可:
import seaborn as sns import matplotlib.pyplot as plt sns.boxplot(data=df, x='Month', y='X') plt.title('Monthly Distribution of X') plt.xticks(rotation=45) # 旋转x轴标签避免重叠 plt.show()
补充说明
如果想用月份的自然顺序绘图(避免名称按字母排序),可以提前定义月份顺序:
# 定义月份的自然顺序 month_order = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] # 按指定顺序绘制箱线图 sns.boxplot(data=df, x='Month', y='X', order=month_order) plt.title('Monthly Distribution of X') plt.xticks(rotation=45) plt.show()
内容的提问来源于stack exchange,提问作者PSB
相关产品推荐
相关产品推荐

