pandas按列分组的Excel数据和用均值分组的图散点图

我从一些Excel文件中读取数据的集合。 我可以轻松地读取,合并和分组的数据与pandas。 我在数据中有两列兴趣点,“产品types”和“testing持续时间”。

包含从Excel文件读取的数据的数据框称为oData。

oDataGroupedByProductType = oData.groupby(['Product Type']) 

我曾经积极地做了一个如下的图表,但是积极地不保留数据隐私,如果我想要数据是私人的,我必须支付。 支付不是一种select。 在这里输入图像描述 我如何使用pandas和/或matplotlib制作同样的graphics,而且还要显示每个产品types的平均值?

就像Bound说的那样,你可以用条纹图做几行(seaborn文档页面的例子)。

 import seaborn as sns sns.set_style("whitegrid") tips = sns.load_dataset("tips") # load some sample data ax = sns.stripplot(x="day", y="total_bill", data=tips) 

在这里输入图像说明

假设你有一些dataframe:

 In [4]: df.head(20) Out[4]: product value 0 c 5.155740 1 c 8.983128 2 c 5.150390 3 a 8.379866 4 c 8.094536 5 c 7.464706 6 b 3.690430 7 a 5.547448 8 a 7.709569 9 c 8.398026 10 a 7.317957 11 b 7.821332 12 b 8.815495 13 c 6.646533 14 c 8.239603 15 c 7.585408 16 a 7.946760 17 c 5.276864 18 c 8.793054 19 b 11.573413 

您需要为产品绘制一个数字值,以便快速干预,只需通过映射数值创build一个新列:

 In [5]: product_map = {p:r for p,r in zip(df['product'].unique(), range(1, df.values.shape[0]+1))} In [6]: product_map Out[6]: {'a': 2, 'b': 3, 'c': 1} 

当然,有很多方法可以做到这一点…

现在,做一个新的专栏:

 In [8]: df['product_code'] = df['product'].map(product_map) In [9]: df.head(20) Out[9]: product value product_code 0 c 5.155740 1 1 c 8.983128 1 2 c 5.150390 1 3 a 8.379866 2 4 c 8.094536 1 5 c 7.464706 1 6 b 3.690430 3 7 a 5.547448 2 8 a 7.709569 2 9 c 8.398026 1 10 a 7.317957 2 11 b 7.821332 3 12 b 8.815495 3 13 c 6.646533 1 14 c 8.239603 1 15 c 7.585408 1 16 a 7.946760 2 17 c 5.276864 1 18 c 8.793054 1 19 b 11.573413 3 

现在,在pandas使用plot helper方法,它基本上是matplotlib一个包装:

 In [10]: df.plot(kind='scatter', x = 'product_code', y = 'value') Out[10]: <matplotlib.axes._subplots.AxesSubplot at 0x12235abe0> 

而输出:

在这里输入图像说明

显然,这是快速和肮脏的,但它应该让你在路上…

如果有其他人有类似的问题,并希望看到最终结果,我结束了使用seaborn,如下所示:

 import seaborn as sns import matplotlib.pyplot as plt ... sns.set_style("whitegrid") sns.boxplot(x=oData['Product Type'], y=oData['Test Duration?'], data=oData) plt.savefig('Test Duration vs. Product Type.png') 

图表出来如下。 出于隐私的原因,我已经模糊了图上的产品标签。

在这里输入图像描述