You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DataFrame数据按昼夜拆分后绘制seaborn分组箱线图

解决方案

首先新增昼夜标识列是最优方案,逻辑清晰易读,后续复用、调整统计规则或绘图参数时都不需要重复计算,比临时生成变量的方案可维护性高很多。

具体实现步骤

  • 第一步:先确保索引为datetime类型,根据时间提取小时判断昼夜
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 确认date索引为datetime格式
df.index = pd.to_datetime(df.index)

# 生成昼夜标识列:06:00-18:00为白昼,其余时段为夜间
df['period'] = df.index.hour.map(lambda x: '白昼' if 6 <= x <= 18 else '夜间')
  • 第二步:将原宽表转换为seaborn绘图所需的长表格式,适配分组箱线图的数据要求
# 转换长表:保留period列,把Bob、Ann列转为姓名维度,对应数值转为数值维度
df_long = df.melt(id_vars='period', value_vars=['Bob', 'Ann'], var_name='姓名', value_name='数值')
  • 第三步:调用seaborn的boxplot方法,直接传入period作为hue参数即可绘制分组箱线图
sns.boxplot(data=df_long, x='姓名', y='数值', hue='period')
plt.show()

补充说明

如果不想修改原DataFrame,也可以在转换长表时临时计算昼夜标识,但该方案后续调整昼夜划分规则时需要调整多处逻辑,灵活度远低于新增列的方案,一般不推荐。

内容的提问来源于stack exchange,提问作者lcsmmn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:06:01