Python 熊猫中未正确显示箱线图

Python 熊猫中未正确显示箱线图,python,pandas,data-visualization,Python,Pandas,Data Visualization,有一个已清除、准备好的可视化数据集 category_id views likes dislikes comment_count 0 politics/celebrities 34785 308 26 413 1 talk show 69844 3417 33 160 2 talk show

有一个已清除、准备好的可视化数据集

        category_id             views   likes   dislikes    comment_count
0       politics/celebrities    34785     308    26         413
1       talk show               69844     3417   33         160
2       talk show               1496225   16116  236        605
3       talk show               1497519   15504  353        1084
4       various video           225286    1731   193        206
... ... ... ... ... ...
4119    music clips             6004782   210802 4166       15169
4120    talk show               5564576   46351  2295       2861
4121    music clips             5534278   45128  1591       806
4122    music clips             23502572  676467 15993      52432
4123    talk show               1066451   48068  1032       3992
当尝试在箱线图上使用

data.boxplot('views')
进行不正确的可视化


而不是普通的箱线图类型。在数据集的一小部分(数据[0:10])上,它工作正常,但在整个集合上-否。出了什么问题?

正如我在评论中所说的,您的
视图可能遵循了一个错误

为了用一个可复制的例子进行说明,让我们使用维基百科的页面浏览量来查看
en.Wikipedia.org
上一天的前1000篇文章:

导入urllib.request,json url='1〕https://wikimedia.org/api/rest_v1/metrics/pageviews/top/en.wikipedia.org/all-access/2021/04/11' 将urllib.request.urlopen(url)作为f: data=json.load(f.read().decode()) df=pd.json_规范化(数据,['items','articles'])
请注意,仅做
视图的箱线图与您观察到的非常相似:

df.boxplot(“视图”)
现在,这里是日志图,显示了该数据的Zipf定律的独特信号:

(事实证明,排名已经包含在上面的维基百科数据中,但为了通用性,我们将再次计算它)

plt.loglog(df['views'].rank(升序=False),df['views']))
plt.grid(真)
plt.xlabel('rank')
plt.ylabel('视图')
plt.title('en.wikipedia查看排名前1000的文章\non 2020-04-11')

考虑到这一点,您可以看到“异常值”的概念很难为幂律定义。再多的过滤也无助于你的箱线图,因为这样的分布基本上是尺度不变的。

你的数据有极端的正点?你可以设置
plt.ylim(ymax=data['views'].quantile(0.98))
将98%的数据放入视图中(隐藏太远的2%数据)。是的,但是在清除了异常值之后,什么都没有改变。你能解释一下你是如何清除异常值的,以及结果图是什么样的吗?您是否尝试过进一步降低分位数(如
plt.ylim(ymax=data['views'].quantile(0.90))
视图可能会出现问题。尝试在对数刻度上绘制
views/sum(views)
vs
rank(views)
,您可能会看到幂律的经典外观。