在Python中从计数表生成箱形图

4

我有一个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()

这将输出:!来自R的箱线图1 我的目标是比较不同组的分布,它应该看起来像this Python能否像这样解决它?

看起来Python有一个ggplot接口,也许相同的语法可以使用:http://ggplot.yhathq.com/ - Ed Smith
我更新了我的问题并添加了来自R的图表。它现在看起来不太好,但这只是一个例子。我已经看过ggplot,但我想避免使用很多不同的包。我认为pandas和matplotlib非常强大,我想知道为什么不能在这些包内实现... - Bamboo
使用Python生成的boxplot是否与R生成的相似?我的意思是,对于给定的数据,绘图是否必须与您发布的图像相同? - Nickil Maveli
如果我在Python中绘制计数表并假设我的列是独立的,那么它会返回一个计数和质量的箱线图,这在我的情况下没有意义。 - Bamboo
1个回答

1

你在这里想要查看什么?下面的箱线图将返回以下图像。

enter image description here

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')

如果您想查看按数量加权的质量分布情况,可以尝试绘制直方图:
plt.figure()
df_hist = plt.hist(df.Quality, bins=10, range=None, normed=False, weights=df.Count)

Histogramme


1
我需要一个箱线图,因为我想比较多个样本的分布情况。我更新了我的问题并添加了我最终想要得到的图表。 - Bamboo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接