同步查看各组员工销售能力分布

CDA老师1

Python 管理
# 同步查看各组员工销售能力分布 ```                             --------每篇一个pandas小知识之一,分组数据绘制箱线图 ``` **文中代码使用的pandas版本1.3.2** **假设某公司有多个销售小组同时销售A、B、C三种产品,现在想要查看各小组对这三种产品的销售情况,作为判断每个组销售能力的参考和测评产品受欢迎程度的依据。** **原始数据如下:** ![.png](/z_anli/upload/pgc/202212/168d753f1b8c2055a98331628e3e89a4.png) **如果只是单独分组后看每个组对每种产品的总销售额或者平均销售额,对销售水平和产品的畅销程度观测不够详细,可以考虑绘制分组的箱线图展现具体情况。** **首先,先对原始数据按照组别进行分组,代码如下:** ``` gp = df.groupby("组别") ``` **每组的成员数量不一样,了解每组的成员数量:** ``` gp.size() ``` **代码结果如下:** ![.png](/z_anli/upload/pgc/202212/27d6b41140e8b252f0603a6bb083aa27.png) ## 图一 **对分组数据进行绘图,展现每个销售组销售每种产品的情况。通过groupby对象调用boxplot方法:** ``` import matplotlib.pyplot as plt #导入绘图库 #设置rc动态参数 plt.rcParams['font.sans-serif']=['Simhei']  #显示中文 plt.rcParams['axes.unicode_minus']=False    #设置显示中文后,负号显示受影响,显示负号   gp.boxplot(figsize=(16,8),subplots=False,rot=30) plt.show() ``` **绘图效果如下:** ![1.png](/z_anli/upload/pgc/202212/ff0275764d58ee081edc5f28f934e869.png) **代码中用到的boxplot方法的参数有3个:** `figsize=(16,8)`表示绘制图形的尺寸,因为分了9组,每组3种产品,箱体较多,所以画布尺寸需要设置成16*8,稍微大一些,该参数的具体取值,根据绘图的实际需求自行调整即可; `subplots=False`表示不添加子图,所有的箱型图都在同一块画布中。上述结果图显示,所有的箱型图都在尺寸为16*8的画布中,如果感觉这种展现形式对数据的描述不够清晰,也可以考虑分成子图显示,后边会修改该参数展示子图形式的多个箱型图; `rot=30`表示刻度标签的倾斜度。x轴刻度的标签比较长同时展现分组和产品信息,如果没有倾斜度,标签会被相互覆盖,通过设置倾斜度参数。让标签倾斜显示,避免被覆盖影响展示效果。 **从这幅图中明显可以看出,1组和2组的销售业绩好于其他组,并且组内成员销售水平差距不大,其他组的销售水平差异会更大一些。但是1组和2组的产品C销售情况明显比产品A和产品B的销售情况差,可以重点查找下相关原因。** **注:所有数据都是随机生成的虚拟数据** ## 图二 **如果分组太多,在一块画布中展现效果不好,可以考虑绘制子图,只需要修改一个参数即可,代码如下:** ``` gp.boxplot(figsize=(10,8),subplots=True,sharex=True) plt.show() ``` **效果如下:** ![2.png](/z_anli/upload/pgc/202212/f6584dc0863848eaf520101c6429e62b.png) **与绘图一中的代码相比,少了标签倾斜度的参数,**`subplots=True`表示添加子图,而以子图形式展现后,刻度标签不会有被覆盖的情况,所以不用对``rot`参数进行设置。 **另外,多了一个参数**`sharex=True`,表示同一列的子图共享一个x轴刻度和标签。从图中可以观察到,只有最下边一行的子图有x轴标签,上边两子图使用最下行子图的x轴标签。如果不设置x轴共享。各子图的x轴刻度标签会和每个子图的标题(即显示分组的文字)重叠,影响图形展现效果。 **除了共享x轴标签之外,其实还有一个参数**`sharey`表示是否共享y轴标签,这个参数默认值为`True`,即默认共享,所以每一行的子图都共享最左侧子图的y轴标签,由于默认共享,所以代码中没有对该参数进行设置。 ## 其他常用参数设置 **除了上述常用参数设置外,还有另外三个常用参数:** * `layout`参数接收一个元组,表示子图的布局。 **例如,如果有6幅子图,布局可以是两行三列或者是三行两列,即**`layout=(2,3)`或者`layout=(3,2)` **注意,布局中子图的数量必须大于实际子图的数量,假如有6幅子图,布局可以是(3,3),但是不能是(2,2),** **即可以有空的位置,不能有放不下的子图。** * `grid`参数接收布尔值,表示是否显示网格线,默认值为`True`,即默认显示网格线。如果不想显示网格线,修改参数取值为`False`即可。 * `column`参数接收字符串或者由字符串组成的列表。 **表示选取哪些列参与绘图,默认对所有数值型的列绘制箱线图,如果只需要展现一部分数值型列的箱线图,则通过该参数进行设置。** **在上述例子中,假设只需要展现产品A和产品C的数据,则代码如下:** ``` gp.boxplot(figsize=(10,8),subplots=True,sharex=True,column=["产品A","产品C"]) plt.show() ``` **代码图如下:** ![3.png](/z_anli/upload/pgc/202212/683516426b520b2247af527569a33886.png) **以上是对多组数据绘制箱线图的介绍,下一篇文章我们会介绍分组数据的其他操作。**
0.2367 4 0 关注作者 收藏 2022-12-16   阅读量: 1394

评论(0)


暂无数据

博客推荐