数据展现(练习)

 


## 导入 pandas 库并将其简化为 pd
import pandas as pd
## 导入matplotlib库的pyplot模块
from matplotlib import pyplot as plt
#
## 读取练习数据,文件路径为 './工作/exercise_clean.csv',文件编码为 'utf-8'
exercise = pd.read_csv('./工作/exercise_clean.csv', encoding = 'utf-8')
## 求出不同明细商品的总销售额
sales_sum = exercise.groupby('明细')['订单金额'].sum()
## 设置中文字体
plt.rcParams['font.family'] = ['Source Han Sans CN']
## 生成画布,并设置画布的大小
plt.figure(figsize=(22, 22))
## 设置 x/y 坐标值
x = sales_sum.index
y = sales_sum.values
## 绘制柱状图,并调整柱子的样式
plt.bar(x , height=y, width=0.6, alpha=0.6)
## 设置图表标题名及字体大小
plt.title('各明细商品总销售额分布图', fontsize=20)
## 设置坐标轴的刻度字体大小
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
## 设置坐标轴的标题名及字体大小
plt.xlabel('商品明细', fontsize=15)
plt.ylabel('总销售额', fontsize=15)
#

 

 

知识拓展

坐标轴刻度旋转

刚才我们练习题生成的柱状图当中,x 轴的刻度比较密集,很多字都挤到了一起。这里我们可以旋转坐标轴的刻度,让它们纵向显示。

 还记得设置坐标轴的刻度的plt.xticks()函数吗?我们可以在里面设置 rotation 参数来旋转刻度。

像 rotation = 90 就是让刻度逆时针旋转 90 度

# 绘制柱状图,并调整柱子的样式
plt.bar(x, height=y, width=0.6, alpha=0.6)
# 设置图表标题名及字体大小
plt.title('各明细商品总销售额分布图', fontsize=20)
# 设置坐标轴的刻度字体大小,逆时针旋转x轴刻度90度
plt.xticks(fontsize=12, rotation=90)
plt.yticks(fontsize=12)
# 设置坐标轴的标题名及字体大小
plt.xlabel('商品明细', fontsize=15)
plt.ylabel('总销售额', fontsize=15)

 

除此之外,使用 pandas 库中plot()方法生成的图表也可以设置rot参数来旋转 x 轴刻度,比如:

sales_sum.plot(rot=90)就可以让 x 轴的刻度逆时针旋转 90 度,你可以运行下面的代码查看一下效果。

# 生成各类明细商品的总销售额的折线图,将 x 轴的刻度逆时针旋转 90 度
sales_sum.plot(rot=90)

 

Series 对象排序

下面我再来跟你拓展 Series 对象排序的相关知识。

在 pandas 中,我们可以使用s.sort_values()对 Series 对象的数值型数据进行排序。

默认为升序排列(从小到大),将 ascending 参数设置为 False 就可以让它降序排列(从大到小)。

# 降序排列sales_sum
sales_sum = sales_sum.sort_values(ascending=False)
# 查看sales_sum
sales_sum

 

# 设置 x/y 坐标值
x = sales_sum.index
y = sales_sum.values
# 绘制柱状图,并调整柱子的样式
plt.bar(x, height=y, width=0.6, alpha=0.6)
# 设置图表标题名及字体大小
plt.title('各明细商品总销售额分布图', fontsize=20)
# 设置坐标轴的刻度字体大小,逆时针旋转x轴刻度90度
plt.xticks(fontsize=12, rotation=90)
plt.yticks(fontsize=12)
# 设置坐标轴的标题名及字体大小
plt.xlabel('商品明细', fontsize=15)
plt.ylabel('总销售额', fontsize=15)

 

绘制帕累托图

最后再让我们回到第一天课后练习提到的帕累托法则。

使用帕累托法则进行分析时,有一种专门的可视化图表叫做帕累托图。

 通过帕累托图我们就能直观的找出累计销售额占比在80%的商品,他们分别是:红牛、可乐、魔爪、维他柠檬茶、宝矿力水特以及三得利乌龙茶。

# 生成画布,并设置画布的大小
plt.figure(figsize=(6, 6))
# 设置 x/y 坐标值
x = sales_sum.index
y = sales_sum.values
# 绘制柱状图,并调整柱子的样式
plt.bar(x, height=y, width=0.6, alpha=0.6)
# 设置图表标题名及字体大小
plt.title('各明细商品总销售额分布图', fontsize=20)
# 设置坐标轴的刻度字体大小,逆时针旋转x轴刻度90度
plt.xticks(fontsize=12, rotation=90)
plt.yticks(fontsize=12)
# 设置坐标轴的标题名及字体大小
plt.xlabel('商品明细', fontsize=15)
plt.ylabel('总销售额', fontsize=15)

# 求出累计销售额占比
p = 1.0*sales_sum.cumsum()/sales_sum.sum()

# 找到累计占比超过80%时候的index
key = p[p>0.8].index[0]  
key_num = sales_sum.index.tolist().index(key) 
print('超过80%累计占比的节点值索引为:' ,key)
print('------')

# 绘制折线图并将y轴设置为副坐标轴
p.plot(style = '--ko', secondary_y=True, rot=90)
plt.axvline(key_num,color='r',linestyle="--",alpha=0.8)
# 累计占比超过80%的节点
plt.text(key_num+0.2,p[key],'累计占比为:%.3f%%' % (p[key]*100), color = 'r')  
plt.ylabel('累计销售额占比')

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mez_Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值