如何基于按日DataFrame绘制按年月分组的sns.boxplot?
实现步骤
1. 预处理日期列
首先确保你的date列是datetime类型,否则无法提取年月信息:
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 转换date列为datetime格式 df['date'] = pd.to_datetime(df['date'])
2. 提取年月作为分组字段
从date列中提取<年,月>格式的字段,有两种常用方式:
- 方式一:生成
Period类型(自带时间排序,推荐)
df['year_month'] = df['date'].dt.to_period('M')
- 方式二:生成字符串格式(格式为
YYYY-MM,直观易读)
df['year_month'] = df['date'].dt.strftime('%Y-%m')
3. 绘制箱线图
直接使用seaborn.boxplot,指定x为新生成的年月列,y为B列:
# 绘制箱线图 sns.boxplot(data=df, x='year_month', y='B') # 旋转x轴标签,避免标签重叠 plt.xticks(rotation=45) # 显示图形 plt.show()
补充说明
- 若用
to_period('M')生成年月字段,x轴会自动按时间顺序排列;若用字符串格式且数据未按时间排序,可先执行df = df.sort_values('year_month') - 可通过
palette参数自定义箱线图配色,例如sns.boxplot(..., palette='Set2')
内容的提问来源于stack exchange,提问作者Cranjis
相关产品推荐
相关产品推荐

