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

如何对比DataFrame两列并可视化?大样本下展示真实与预估距离差异

真实距离与预估距离的可视化对比方案

针对你2346行的数据集,以下几种可视化方式能清晰展示每行数据的差异,结合不同场景选择即可:

1. 交互式分组柱状图(适合逐个查看样本)

普通静态柱状图面对大数据量会出现柱子重叠、刻度拥挤的问题,用交互式工具(如Plotly)可支持缩放、hover查看单样本细节,完美解决这个问题:

import plotly.express as px
import pandas as pd

# 替换为你的df_actual
df = pd.DataFrame(
    {'id': [53, 54, 55, 56, 57],
     'true_distance': [880.32,1278.87,838.44,6811.63,13339.92],
     'estimated_distance': [330.23,1099.73,534.86,6692.78,6180.8]}
)

# 转换为长格式适配分组绘图
df_melt = df.melt(id_vars='id', var_name='距离类型', value_name='距离值')

# 生成交互式柱状图
fig = px.bar(df_melt, x='id', y='距离值', color='距离类型', barmode='group',
             title='真实距离vs预估距离对比')
fig.update_layout(xaxis_tickangle=-45)
fig.show()

如果偏好静态图,可对数据做抽样/过滤(比如只展示差值Top50的样本),用Matplotlib+Seaborn实现:

import matplotlib.pyplot as plt
import seaborn as sns

df['diff'] = abs(df['true_distance'] - df['estimated_distance'])
# 取差异最大的50个样本展示
df_top_diff = df.sort_values('diff', ascending=False).head(50)
df_melt = df_top_diff.melt(id_vars='id', var_name='距离类型', value_name='距离值')

plt.figure(figsize=(14, 6))
sns.barplot(x='id', y='距离值', hue='距离类型', data=df_melt)
plt.title('差异Top50样本的真实与预估距离对比')
plt.xlabel('样本ID')
plt.ylabel('距离')
plt.xticks(rotation=45, ha='right')
plt.tight_layout()
plt.show()

2. 差值折线图(快速定位差异异常点)

直接计算每行的距离差值,用折线图展示差异变化,能一眼找到差值波动大的样本:

import matplotlib.pyplot as plt

df['distance_diff'] = df['true_distance'] - df['estimated_distance']

plt.figure(figsize=(16, 6))
plt.plot(df['id'], df['distance_diff'], marker='.', markersize=1, linestyle='-', linewidth=0.3)
# 绘制0差值基准线
plt.axhline(y=0, color='red', linestyle='--', label='无差异基准线')
plt.title('真实与预估距离的差值变化')
plt.xlabel('样本ID')
plt.ylabel('真实距离 - 预估距离')
plt.legend()
plt.tight_layout()
plt.show()

3. 散点图(查看整体趋势与异常值)

以真实距离为X轴、预估距离为Y轴绘制散点图,对角线代表完全匹配的理想情况,偏离对角线的点就是差异较大的样本,适合快速把握整体拟合效果:

import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(8, 8))
sns.scatterplot(x='true_distance', y='estimated_distance', data=df, alpha=0.5)
# 绘制完美匹配对角线
plt.plot([df['true_distance'].min(), df['true_distance'].max()],
         [df['true_distance'].min(), df['true_distance'].max()],
         color='red', linestyle='--')
plt.title('真实距离vs预估距离拟合散点图')
plt.xlabel('真实距离')
plt.ylabel('预估距离')
plt.tight_layout()
plt.show()

选择建议

  • 需逐个查看样本差异:选交互式分组柱状图
  • 需快速定位差异异常点:选差值折线图
  • 需把握整体拟合趋势:选散点图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:25:39