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

如何将DataFrame中Day列的层级提取为新列并绘制Day1-Day2图形

数据转换与可视化解决方案

1. 数据重塑步骤

要将原始DataFrame中的Day层级转为独立列,核心是通过组内序号标记+透视转换实现同Diet下Day1和Day2样本的一一对应:

代码实现

import pandas as pd

# 构建原始DataFrame
raw_data = {
    'Day': [1, 1, 1, 1, 2, 2, 2, 2],
    'Diet': ['A', 'A', 'B', 'B', 'A', 'A', 'B', 'B'],
    'weight': [52, 50, 25, 30, 26, 10, 15, 34]
}
df = pd.DataFrame(raw_data)

# 给每个(Diet, Day)组添加组内序号,确保样本匹配关系
df['sample_idx'] = df.groupby(['Diet', 'Day']).cumcount()

# 透视转换:将Day转为列,以Diet和样本序号为索引
pivoted = df.pivot(index=['Diet', 'sample_idx'], columns='Day', values='weight').reset_index()

# 整理列名和顺序,得到目标格式
final_df = pivoted.rename(columns={1: 'Day1', 2: 'Day2'})[['Day1', 'Day2', 'Diet']]
print(final_df)

输出结果

Day1  Day2 Diet
0    52    26    A
1    50    10    A
2    25    15    B
3    30    34    B

2. Day1 vs Day2 可视化

使用matplotlib绘制散点图,按Diet区分样本颜色,直观展示两天体重的关联:

代码实现

import matplotlib.pyplot as plt

plt.figure(figsize=(8, 6))
# 按Diet分组绘制散点
for diet_group in final_df['Diet'].unique():
    group_data = final_df[final_df['Diet'] == diet_group]
    plt.scatter(group_data['Day1'], group_data['Day2'], label=f'Diet {diet_group}', s=120, alpha=0.8)

# 设置图表属性
plt.xlabel('Day 1 Weight')
plt.ylabel('Day 2 Weight')
plt.title('Weight Comparison: Day 1 vs Day 2')
plt.legend()
plt.grid(linestyle='--', alpha=0.7)
plt.show()

图表说明

  • X轴为Day1的体重,Y轴为Day2的体重
  • 不同颜色代表不同Diet组,可清晰观察两组样本的体重变化趋势

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 13:13:34