如何使用pandas将同列内不同类型数据拆分到独立列并按ID绘图
实现方案
1. 读取数据源
首先读取分号分隔的结构化数据:
import pandas as pd import matplotlib.pyplot as plt # 本地csv文件读取方式 df = pd.read_csv("你的文件存储路径.csv", sep=";")
2. 拆分不同ID的独立数据集
提供两种实现方案,可根据实际场景选择:
方案1:固定ID手动筛选(适合ID取值固定且数量少的场景)
直接按ID字段筛选生成两个独立DataFrame:
df_id123 = df[df["ID"] == 123].reset_index(drop=True) df_id456 = df[df["ID"] == 456].reset_index(drop=True)
方案2:分组批量处理(适合ID取值多、后续会新增ID的场景)
用分组逻辑批量获取所有ID的独立数据集:
id_groups = df.groupby("ID")
3. 生成独立可视化图表
对应方案1的绘图代码
# 绘制ID=123的独立图表 plt.figure(figsize=(8,4)) # 可替换为你需要的折线图、散点图等其他图表类型 plt.bar(df_id123["position"], df_id123["Number"]) plt.title("ID 123 数据图表") plt.savefig("id123_chart.png") plt.show() # 绘制ID=456的独立图表 plt.figure(figsize=(8,4)) plt.bar(df_id456["position"], df_id456["Number"]) plt.title("ID 456 数据图表") plt.savefig("id456_chart.png") plt.show()
对应方案2的批量绘图代码
for id_value, group_df in id_groups: plt.figure(figsize=(8,4)) plt.bar(group_df["position"], group_df["Number"]) plt.title(f"ID {id_value} 数据图表") plt.savefig(f"id{id_value}_chart.png") plt.show()
附加:将不同ID数据拆分到同一表格的独立列
如果需要把不同ID的数值拆分到同一个表的不同列存储,可使用透视表实现:
df_pivot = df.pivot_table( index=df.groupby("ID").cumcount(), columns="ID", values=["Number", "position"], aggfunc="first" ) # 重命名列名方便调用,最终生成Number_id_123、position_id_123、Number_id_456、position_id_456四个独立列 df_pivot.columns = [f"{col[0]}_id_{col[1]}" for col in df_pivot.columns]
内容的提问来源于stack exchange,提问作者needshelpwithcoding
相关产品推荐
相关产品推荐

