python可视化之matplotlib(介绍和python-matplotlib可视化)
python可视化之matplotlib(介绍和python-matplotlib可视化)2.1 不是自然规律,而是一种观察:==========1.3 是由维尔弗雷多·帕累托(Vilfredo Pareto)(1848年7月15日 - 1923年8月19日)提出的。1.4 帕累托是意大利土木工程师、经济学家和社会学家,经典精英理论的创始人。2 帕累托法则
1 介绍
====
1.1 帕累托法则:20/80定律。
1.2 在数据特征分析中,又叫:帕累托分析(贡献度分析),是一项很重要的数据分析方法。
1.3 是由维尔弗雷多·帕累托(Vilfredo Pareto)(1848年7月15日 - 1923年8月19日)提出的。
1.4 帕累托是意大利土木工程师、经济学家和社会学家,经典精英理论的创始人。
2 帕累托法则
==========
2.1 不是自然规律,而是一种观察:
20%的商店产生80%的收入;
20%的软件错误导致80%的系统崩溃;
20%的产品功能驱动80%的销售;
一个公司,80%利润来自于20%的畅销产品,而其他80%的产品只产生了20%的利润;
在一个国家的医疗体系中,20%的人口与20%的疾病,会消耗80%的医疗资源;
男性约会成功,80%的女性会争夺20%的最具吸引力的男性;
2.2 一个思路:通过二八原则,去寻找关键的那20%决定性因素!
2.3 企业高管长期以来一直将其用于战略规划和决策。
2.4 受到广泛欢迎,善于分析的企业尝试在他们自己的商业世界中找到这样的帕累托法则。通过这种方式,他们可以计划并确定其行动的优先顺序。事实上,今天,数据科学在筛选大量复杂数据,以助识别未来帕累托场景方面发挥着重要作用。
3 帕累托图
========
3.1 是一种包含条形图和折线图的图表,其中各个值均以条形降序形式表示,上升的累计总计由线条来表示。
3.2 帕累托法则是一个非常简单但功能非常强大的管理工具。
3.3 python-matplotlib的代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 创建数据,10个品类产品的销售额
data = pd.Series(np.random.randn(10)*1200 3000
index = list('ABCDEFGHIJ'))
#由大到小排列
data.sort_values(ascending = False inplace = True)
#创建营收柱状图
plt.figure(figsize = (12 4))
data.plot.bar(color = 'y' alpha = 0.8 width = 0.6 rot = 0)
#计算累计占比,关键点
p = data.cumsum()/data.sum()
key = p[p>0.8].index[0]
key_num = data.index.tolist().index(key)
#画累计占比曲线(secondary_y = True创建第二坐标轴)
p.plot(kind = 'line' style = '--o' color = 'k' secondary_y = True)
#标注
plt.axvline(key_num linestyle = '--' color = 'r')
plt.text(key_num p[key_num] 'sun percent:{:.2f}%'.format(p[key_num]*100) color = 'r' fontdict = {'size':15})
#图标标题
plt.title('Pareto Chart')
plt.show()
3.4 图
4 读取xls做数据可视化
=================
4.1 注意matplotlib中文设置法:建议采用一劳永逸法
参考文章《强!3种方法实现python-matplotlib显示中文》
4.2 数据:举例
catering_dish_profit.xls
4.3 数据:假设数据:catering_dish_profit.xls
菜品名 盈利
A1 9321
A2 5782
A3 5543
A4 4321
A5 3765
A6 3542
A7 3324
A8 2783
A9 2567
A10 2341
4.4 代码:python3.8 linux操作系统
import pandas as pd
import matplotlib.pyplot as plt
#读取数据
data=pd.read_excel('/home/xgj/Desktop/Pareto/catering_dish_profit.xls' index_col='菜品名')
data=data['盈利'].copy()
#图标定义
plt.figure()
#必须放在这里,才有效
plt.xlabel('菜品名' fontsize=20)
#这里的字体大小就是x坐标轴的柱状图数据标签大小
data.plot(kind='bar' fontsize=20)
plt.ylabel('盈利(元)' fontsize=20)
p=1.0*data.cumsum()/data.sum()
#右侧y刻度数字设置
p.plot(color='r' secondary_y=True style='-o' linewidth=2 fontsize=20)
#标注设置
plt.annotate(format(p[6] '.4%') fontsize=20 xy=(6 p[6]) xytext=(5.4 p[6]*0.9) arrowprops=dict(arrowstyle='->' connectionstyle='arc3 rad=.2'))
plt.ylabel('盈利百分比' fontsize=20)
#放在这里,无法设置x坐标轴标签字体大小
#plt.xlabel('菜品名' fontsize=20)
plt.show()
4.5 图
5 小结
非常完整,适合收藏。