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

使用Pandas绘制DataFrame散点图结果异常,求解决方案及示例代码

问题排查与示例代码

散点图异常排查步骤

  • 检查数据类型:从文本文件读取的列可能默认是字符串类型,先执行 print(df.dtypes) 确认x、y列是否为float64或int64。如果是object类型,转成数值并处理无效值:
    df['x'] = pd.to_numeric(df['x'], errors='coerce')
    df['y'] = pd.to_numeric(df['y'], errors='coerce')
    # 删除转数值后产生的空值行
    df = df.dropna(subset=['x', 'y'])
    
  • 检查缺失值:执行 print(df[['x','y']].isnull().sum()),如果存在大量空值,大概率是文本文件格式(比如分隔符、换行)有问题,或者转数值时匹配规则不对,需要回头核对原始文本的结构。
  • 排查极端值:用 df[['x','y']].describe() 查看数据的极值,要是存在超大/超小的异常值,会把坐标轴拉得极开,导致正常散点挤成一团看起来异常。可以过滤掉极端值:
    # 保留中间98%的数据,过滤掉上下1%的极值
    df = df[(df['x'] > df['x'].quantile(0.01)) & (df['x'] < df['x'].quantile(0.99))]
    df = df[(df['y'] > df['y'].quantile(0.01)) & (df['y'] < df['y'].quantile(0.99))]
    
  • 核对绘图代码:确保列名调用正确,比如:
    import matplotlib.pyplot as plt
    plt.scatter(df['x'], df['y'])
    plt.show()
    
    或用Pandas原生绘图:
    df.plot.scatter(x='x', y='y')
    

按'pid'设置不同标记的散点图示例

import pandas as pd
import matplotlib.pyplot as plt

# 假设你的DataFrame为df,包含x、y、pid列
unique_pids = df['pid'].unique()
# 定义标记样式库,可根据需求补充
markers = ['o', 's', '^', 'D', 'v', '*', 'p']

plt.figure(figsize=(10,6))
# 循环绘制每个pid对应的数据点
for idx, pid in enumerate(unique_pids):
    subset = df[df['pid'] == pid]
    # 标记样式循环使用,避免数量不足
    marker = markers[idx % len(markers)]
    plt.scatter(subset['x'], subset['y'], marker=marker, label=f'pid={pid}', alpha=0.7)

plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('按pid区分标记的散点图')
plt.legend()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:45:10