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

如何循环绘制Pandas DataFrame中指定列的各行数据

循环绘制Pandas DataFrame中指定列的每行数据

你的需求核心是先把x列中逗号分隔的字符串转换成可用于绘图的数值序列,再循环遍历每行数据完成绘制。以下是具体实现方案:

步骤说明

  • 数据预处理:将x列的每个字符串按逗号分割,转换为整数/浮点数数组,这是绘图的前提(字符串无法直接用于可视化)
  • 循环绘图:遍历DataFrame的每一行,取出处理后的x数据,结合matplotlib完成绘制,可根据需求选择单图叠加或多子图展示

完整代码示例

方案1:单图叠加展示所有行的x数据

import pandas as pd
from matplotlib import pyplot as plt
import numpy as np

df = pd.DataFrame({
    'name': ['joe', 'sue', 'mike'],
    'x': ['0,1,5,3,4,5', '0,4,4,2,8', '0,4,6,7,8,9,0'],
    'y': ['0,3,8', '1,9,5', '1,6,4,5,6,2,3,4,6']
})

# 预处理x列:将字符串转为整数数组
df['x_values'] = df['x'].apply(lambda s: np.array(s.split(','), dtype=int))

# 初始化画布
plt.figure(figsize=(8, 5))

# 循环每行绘制x数据
for idx, row in df.iterrows():
    # 生成x轴坐标(用数据的索引位置)
    x_axis = np.arange(len(row['x_values']))
    # 绘制折线图,添加标签区分不同用户
    plt.plot(x_axis, row['x_values'], label=row['name'], marker='o')

# 添加图表元素
plt.title('X列各行数据对比')
plt.xlabel('数据点索引')
plt.ylabel('数值')
plt.legend()
plt.grid(alpha=0.3)

plt.show()

方案2:多子图分别展示每行数据

如果需要单独查看每个用户的x数据,可以用子图布局:

# 初始化子图,3行1列
fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(8, 10))

for idx, row in df.iterrows():
    ax = axes[idx]
    x_axis = np.arange(len(row['x_values']))
    ax.plot(x_axis, row['x_values'], marker='o', color='blue')
    ax.set_title(f"{row['name']}的X数据")
    ax.set_xlabel('数据点索引')
    ax.set_ylabel('数值')
    ax.grid(alpha=0.3)

# 调整子图间距
plt.tight_layout()
plt.show()

关键细节说明

  • 使用df.apply()批量处理x列,比循环处理更高效
  • 用np.arange()生成x轴坐标,因为每行数据长度不同,无法用统一的x轴范围
  • iterrows()适合小数据集遍历,如果DataFrame行数很多,推荐用itertuples(),性能更优

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:55:22