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

获取列表唯一标签并合并多组数据为DataFrame用于Seaborn绘图

问题描述

现有多组label与value对应列表:

label = [0, 2, 1, 3, 4, 9, 8, 24, 86, 5] 
value = [103, 16, 10, 9, 5, 4, 4, 3, 3, 3]

label1 = [0, 2, 3, 1, 9, 15, 4, 6, 5, 23] 
value1 = [73, 14, 8, 7, 3, 3, 3, 2, 2, 2]

label2 = [0, 2, 1, 3, 9, 6, 10, 15, 4, 114] 
value2 = [48, 11, 7, 6, 3, 2, 2, 2, 2, 1]

需要将所有唯一label作为DataFrame的单列,合并各组value数据,对应label不存在的位置填充0,最终用于Seaborn的scatterplot/pairplot绘图,也可接受直接绘制原始数据的方案。

解决方案

方法一:构建目标格式DataFrame

通过字典映射和去重处理,生成符合要求的宽格式DataFrame:

import pandas as pd

# 定义原始数据
label = [0, 2, 1, 3, 4, 9, 8, 24, 86, 5] 
value = [103, 16, 10, 9, 5, 4, 4, 3, 3, 3]
label1 = [0, 2, 3, 1, 9, 15, 4, 6, 5, 23] 
value1 = [73, 14, 8, 7, 3, 3, 3, 2, 2, 2]
label2 = [0, 2, 1, 3, 9, 6, 10, 15, 4, 114] 
value2 = [48, 11, 7, 6, 3, 2, 2, 2, 2, 1]

# 将每组label-value转为字典,方便快速映射
group0 = dict(zip(label, value))
group1 = dict(zip(label1, value1))
group2 = dict(zip(label2, value2))

# 收集所有唯一label并保持原始出现顺序(Python3.7+字典有序)
all_unique_labels = list(dict.fromkeys(label + label1 + label2))

# 构建目标DataFrame
df = pd.DataFrame({'label': all_unique_labels})
df['value'] = df['label'].map(group0).fillna(0).astype(int)
df['value1'] = df['label'].map(group1).fillna(0).astype(int)
df['value2'] = df['label'].map(group2).fillna(0).astype(int)

# 查看结果
print(df)

输出结果与需求一致,可直接用于Seaborn绘图。

方法二:直接使用原始数据绘图

无需合并填充,将原始数据整理为长格式后直接绘制,更适合scatterplot:

import seaborn as sns
import matplotlib.pyplot as plt

# 整理为长格式数据
plot_data = []
# 添加第一组数据
for l, v in zip(label, value):
    plot_data.append({'label': l, 'value': v, 'group': '组1'})
# 添加第二组数据
for l, v in zip(label1, value1):
    plot_data.append({'label': l, 'value': v, 'group': '组2'})
# 添加第三组数据
for l, v in zip(label2, value2):
    plot_data.append({'label': l, 'value': v, 'group': '组3'})

df_long = pd.DataFrame(plot_data)

# 绘制散点图
sns.scatterplot(data=df_long, x='label', y='value', hue='group')
plt.title('各组label-value散点图')
plt.show()

# 若需绘制pairplot,使用方法一生成的宽格式DataFrame即可
sns.pairplot(df[['value', 'value1', 'value2']])
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:15:32