【问题标题】:Boxplots from count table in PythonPython中计数表的箱线图
【发布时间】:2016-12-10 05:08:07
【问题描述】:

我有一个计数表作为 Python 中的数据框,我想将我的分布绘制为箱线图。例如:

df=pandas.DataFrame.from_items([('Quality',[29,30,31,32,33,34,35,36,37,38,39,40]), ('Count', [3,38,512,2646,9523,23151,43140,69250,107597,179374,840596,38243])])

我通过按计数重复我的质量值来“解决”它。但我认为这不是一个好方法,而且我的数据框变得非常非常大。

在 R 中,它只有一个衬里:

ggplot(df, aes(x=1,y=Quality,weight=Count)) + geom_boxplot()

这将输出:!Boxplot from R1

我的目标是比较不同组的分布,它应该看起来像 Python也能这样解决吗?

【问题讨论】:

  • 看起来python有一个ggplot接口,也许同样的语法可以工作:ggplot.yhathq.com
  • 我更新了我的问题并添加了 R 的情节。它现在看起来不太好,但这只是一个例子。我已经看过 ggplot,但我想避免使用很多不同的包。我认为 pandas 和 matplotlib 非常强大,我想知道为什么在这些包中不可能......
  • python生成的boxplot和R得到的一样吗?我的意思是情节必须与您为给定数据发布的图像相同吗?
  • 如果我在 python 中绘制计数表并假设我的列是独立的。所以它返回一个用于计数和质量的箱线图,这对我来说没有意义。

标签: python python-3.x pandas matplotlib ggplot2


【解决方案1】:

你想在这里看什么?下面的箱线图会返回下图。

import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline
df=pd.DataFrame.from_items([('Quality',[29,30,31,32,33,34,35,36,37,38,39,40]), ('Count', [3,38,512,2646,9523,23151,43140,69250,107597,179374,840596,38243])])
plt.figure()
df_box = df.boxplot(column='Quality', by='Count',return_type='axes')

如果您想查看在 Count 上加权的质量分布,您可以尝试绘制直方图:

plt.figure()
df_hist = plt.hist(df.Quality, bins=10, range=None, normed=False, weights=df.Count)

【讨论】:

  • 我需要一个箱线图,因为我想比较多个样本的分布。我更新了我的问题并在最后添加了我想要得到的情节。
猜你喜欢
  • 1970-01-01
  • 2018-04-15
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 2020-09-09
相关资源
最近更新 更多