Ivan Mukhin Asked:2022-10-02 06:03:21 +0000 UTC2022-10-02 06:03:21 +0000 UTC 2022-10-02 06:03:21 +0000 UTC matplotlib 图的问题 772 matplotlib 中有一个关于时间表的问题。有一个汽车数据集。最后一列的数据类型是“numpy.float64”,决定绘制。第一张图很好,但第二张图不行。这里有什么问题?为什么 x 轴看起来像这样?我对 Price 和 Mileage 进行了排序并制作了 numpy 数组,第一个一切都很好,第二个不一样。 python 1 个回答 Voted Best Answer CrazyElf 2022-10-02T13:53:05Z2022-10-02T13:53:05Z 您的数据中有一个异常值,即一个与其他值非常不同的值。正因为如此,图在大部分(正常)值所在的地方缩小了很多。这种爆发是从哪里来的,它是否符合现实——这是一个单独的问题,它的决定决定了如何处理它。让我们模拟一下情况: import pandas as pd import matplotlib.pylab as plt import random model = list(range(2100, 2200)) mileage = list(range(100_000, 200_000, 1000)) random.shuffle(mileage) mileage[50] = 1_000_000 df = pd.DataFrame({'Model': model, 'Mileage': mileage}) plt.scatter(df['Mileage'], df['Model']); 最简单的做法是简单地删除异常值,例如采用 99% 的分位数: tmp = df[df['Mileage'] < df['Mileage'].quantile(0.99)] plt.scatter(tmp['Mileage'], tmp['Model']); 然后可以在单独的图表上绘制异常值: tmp = df[df['Mileage'] >= df['Mileage'].quantile(0.99)] plt.scatter(tmp['Mileage'], tmp['Model']); 但总的来说,异常值是一个相当有趣的话题,一般来说,异常值的起源问题通常需要更仔细的研究。但是,如果您只想查看一个正常的图形,那么删除异常值是一种完全可以接受的做法。
您的数据中有一个异常值,即一个与其他值非常不同的值。正因为如此,图在大部分(正常)值所在的地方缩小了很多。这种爆发是从哪里来的,它是否符合现实——这是一个单独的问题,它的决定决定了如何处理它。让我们模拟一下情况:
最简单的做法是简单地删除异常值,例如采用 99% 的分位数:
然后可以在单独的图表上绘制异常值:
但总的来说,异常值是一个相当有趣的话题,一般来说,异常值的起源问题通常需要更仔细的研究。但是,如果您只想查看一个正常的图形,那么删除异常值是一种完全可以接受的做法。