python柱状图加百分比_关于Python数据分析进行整理柱状图加百分比

问题分析

Python数据分析作为现在时兴的技术,有着以下几种优势:

1、面向对象语言。(相对于面向过程的语言拥有可维护性、可读性)

2、强大的标准库,代码量极少。

3、海量第三方模块

在这里我们使用Python数据分析来完成产品贡献度分析的工作,作为柱状图和百分比的分析图表也具有更直观的分析体验。对于数据可视化的应用也有着重要的意义。

贡献度分析也称为帕累托分析,其原理简单来说就是20/80定律,即为80%的利润常常来自于20%的产品,那么为了能够更好的推广产品,加大力度进行投入资金、重点宣传对于企业来说可以带来更大的收入。那么,我们在实际应用中应该如何进行分析、找到这20%的产品并且用图表进行显示就成为了企业更关注的问题。

解决方案

首先我们了解一个公式:

累计贡献率(%)=(累加销售收入/销售总收入)×100%

通过上面的公式,累计贡献率在接近80%的时候,找到该产品在图标中相应的位置进行标注。

(注明:我们说的80/20法则只能说是一个比喻和实用的标准,真正的比例不一定正好是80%:20%,80/20法则表明在多数情况下该关系很可能是不平衡的,并且接近80/20。)

在Python的Matplotlib图表中提供了一个方法:annotate()方法,这种方法常常用于给图标上的数据添加文本标注,并且支持带箭头的划线工具,方便我们在合适的位置添加描述信息。常用的参数如下:

s:标注文本的内容

xy:设置箭头尖的坐标(传入一个元组)

xytest:设置标注内容显示的起始位置(传入一个元组)

arrowprops:用来设置箭头的样式

facecolor:设置箭头的颜色

headlength:箭头头部的长度

headwidth:箭头头部的宽度

width:箭头的宽度

下面是代码:

import pandas as pd

import matplotlib.pyplot as plt

aa = 'r./data/data1.xls'

df = pd.DataFrame(pd.read_excel(aa))

# 分组统计排序

# 通过reset_index()函数将groupby()的分组结果重新设置索引

df1 = df.groupby(["图书编号"])[买家实际支付金额].sum().reset_index()

df1 = df1.set_index('图书编号')# 设置索引

df1 = df1[u'买家实际支付金额'].copy()

df2 = df1.sort_values(ascending = False)

# 图表字体为华文细黑,字号10

plt.rc('font', family = 'SimHei', size = 10)

plt.figure('贡献度分析')

df2.plot(kind = 'bar')

plt.ylabel(u'销售收入(元)')

p = 1.0*df2.cumsum() / df2.sum()

print(p)

p.plot(color = 'r', secondary_y = True, style = '-o', linewidth = 0.5)

plt.annotate(format(p[9],'.4%'), xy = (9,p[9]), xytext = (9*0.9, p[9]*0.9),

# 添加标记,并且指定箭头样式

arrowprops = dict(arrowstyle = "->",connectionstyle = "arc3,rad = .1"))

plt.ylabel(u'收入(比例)')

plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值