如何为DataFrame中每一天的数据生成箱线图,时间戳存于普通列
适配方案
步骤1:转换时间列格式
首先将你存储时间戳的普通列转换为pandas datetime类型,假设你的时间列名为timestamp,如果实际列名不同自行替换即可:
import pandas as pd import matplotlib.pyplot as plt # 转换时间列格式 choosen_merged['timestamp'] = pd.to_datetime(choosen_merged['timestamp'])
步骤2:生成日期分组字段
新增一列存储精确到天的日期,作为后续分组的依据,无需修改原有索引:
# 提取日期作为分组标识 choosen_merged['date'] = choosen_merged['timestamp'].dt.date # 如果需要自定义日期显示格式可使用下方写法 # choosen_merged['date'] = choosen_merged['timestamp'].dt.strftime('%Y-%m-%d')
步骤3:按天生成箱线图
根据你的需求二选一即可:
场景1:所有天的箱线图展示在同一张画布
ax = choosen_merged.boxplot(column=pick_column, by='date') ax.set_title(f"Boxplot Sensor: {pick_column} {df_date}") ax.set_ylabel(f"{a_string}") # 移除pandas自动生成的分组顶层标题 plt.suptitle('') plt.show()
场景2:每天单独输出一张箱线图
# 按日期分组遍历绘制 grouped = choosen_merged.groupby('date') for day, day_df in grouped: ax = day_df.boxplot(column=pick_column) ax.set_title(f"Boxplot Sensor: {pick_column} 日期: {day}") ax.set_ylabel(f"{a_string}") plt.show() # 如果需要保存每张图可补充下方代码 # plt.savefig(f'箱线图_{day}.png') # plt.close()
内容的提问来源于stack exchange,提问作者mika
相关产品推荐
相关产品推荐

