当前位置:网站首页>Chapter 2数据分析
Chapter 2数据分析
2022-08-09 02:52:00 【桑之未落0208】
matplotlib绘制散点图
使用scatter方法设置散点图,与之前绘制折线图见Chapter1数据分析的唯一区别。
#coding=utf-8
from matplotlib import pyplot as plt
y_3=[11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
y_10=[26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]
x_3=range(1,32)
x_10=range(51,82)
#设置中文
import matplotlib
matplotlib.rc('font',family='SimHei')
#设置图形大小
plt.figure(figsize=(20,8),dpi=80)
plt.scatter(x_3,y_3,label='三月份')
plt.scatter(x_10,y_10,label='十月份')
#调整x轴的刻度
_x=list(x_3)+list(x_10)
_xtick_labels=['3月{}日'.format(i) for i in x_3]
_xtick_labels+=['10月{}日'.format(i-50) for i in x_10]
plt.xticks(_x[::3],_xtick_labels[::3],rotation=45)
#添加描述信息
plt.xlabel('时间')
plt.ylabel('温度')
plt.title('三月份和十月份的温度散点图')
#添加图例
plt.legend(loc='upper left')
#展示图形
plt.show()
matplotlib绘制条形图
条形图
使用bar方法设置条形图
#coding=utf-8
from matplotlib import pyplot as plt
a = ['战狼2','速度与激情8','功夫瑜伽','西游伏妖篇','变形金刚5:\n最后的骑士','摔跤吧!爸爸','加勒比海盗5:\n死无对证','金刚:骷髅岛','极限特工:\n终极回归','生化危机6:\n终章','乘风破浪','神偷奶爸3','智取威虎山','大闹天竺','金刚狼3:\n殊死一战','蜘蛛侠:\n英雄归来','悟空传','银河护卫队2','情圣','新木乃伊',]
b=[56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23]
#设置中文
import matplotlib
matplotlib.rc('font',family='SimHei')
#设置图形大小
plt.figure(figsize=(20,8),dpi=80)
#绘制条形图
plt.bar(range(len(a)),b,width=0.3)
#设置x轴
plt.xticks(range(len(a)),a,rotation=45)
#展示
plt.show()
横置条形图
如果遇到横坐标的每项太长,可以使用barh绘制横置条形图,width改为height,xticks改为yticks
#coding=utf-8
from matplotlib import pyplot as plt
a = ['战狼2','速度与激情8','功夫瑜伽','西游伏妖篇','变形金刚5:最后的骑士','摔跤吧!爸爸','加勒比海盗5:死无对证','金刚:骷髅岛','极限特工:终极回归','生化危机6:终章','乘风破浪','神偷奶爸3','智取威虎山','大闹天竺','金刚狼3:殊死一战','蜘蛛侠:英雄归来','悟空传','银河护卫队2','情圣','新木乃伊',]
b=[56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23]
#设置中文
import matplotlib
matplotlib.rc('font',family='SimHei')
#设置图形大小
plt.figure(figsize=(20,8),dpi=80)
#绘制横置条形图
plt.barh(range(len(a)),b,height=0.3,color='yellow') #因为横置条形图,所以用height
#设置y轴
plt.yticks(range(len(a)),a)
#设置网格
plt.grid(alpha=0.3)
#展示
plt.show()
绘制对比的条形图,要注意绘制条形图时宽度的设置
#coding=utf-8
from matplotlib import pyplot as plt
#设置中文
import matplotlib
matplotlib.rc('font',family='SimHei')
a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]
b_16 = [15746,312,4497,319]
b_15 = [12357,156,2045,168]
b_14 = [2358,399,2358,362]
#设置宽度变量
bar_width=0.2
#设置图形大小
plt.figure(figsize=(20,8),dpi=80)
#绘制条形图
x_14=list(range(len(a)))
x_15=[i+bar_width for i in x_14]
x_16=[i+2*bar_width for i in x_14]
plt.bar(x_14,b_14,width=bar_width,color='yellow',label='9月14')
plt.bar(x_15,b_15,width=bar_width,color='green',label='9月15日')
plt.bar(x_16,b_16,width=bar_width,color='blue',label='9月16日')
#设置x轴
plt.xticks(x_15,a) #x_15(正中间)是放置a的位置
#设置图例
plt.legend(loc='upper right')
#展示图片
plt.show()
条形图的应用场景
(1)数量统计
(2)频率统计
已经统计好的数据
最好使用条形图而避免使用直方图
#coding=utf-8
from matplotlib import pyplot as plt
import matplotlib
#matplotlib.rc('font',family='YaHei')
interval=[0,5,10,15,20,25,30,35,40,45,60,90] #时间段,x轴
width=[5,5,5,5,5,5,5,5,5,15,30,60] #组距
quantity=[836,2737,3723,3926,3596,1438,3273,642,824,613,215,47]
#设置图形大小
plt.figure(figsize=(20,8),dpi=80)
plt.bar(range(12),quantity,width=1)
#设置x轴刻度(难点)
_x=[i-0.5 for i in range(13)]
_xtick_labels=interval+[150]
plt.xticks(_x,_xtick_labels)
#显示图形
plt.show()
matplotlib绘制直方图
直方图
使用hist来绘制直方图,需要原始数据,即未统计过的数据。
组数:将数据分组,如果数据在100以内,按数据多少常分为5-12组
组距:按每个小组的两个端点距离
组数=极差/组距
#coding=utf-8
from matplotlib import pyplot as plt
#设置中文
import matplotlib
matplotlib.rc('font',family='SimHei')
a=[131,98,125,131,124,139,131,117,128,108,135,138,131,102,107,114,119,128,121,142,127,130,124, 101, 110, 116, 117, 110, 128, 128, 115, 99, 136, 126, 134, 95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117, 86, 95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123,86,101,99,136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125,127,105,120,107,129,116,108,132,103,136,118,102,120,114,105,115,132,145,119,121,112,139, 125, 138, 109, 132, 134,156, 106, 117, 127,144,139,139,119,140,83,110,102,123,107,143,115,136,118,139,123,112,118,125,109,119,133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144, 83, 123, 111, 110, 111, 100, 154,136,100,118,119,133,134,106,129,126, 110, 111,109,141,120,117,106,149,122,122,110,118,127,121,114,125,126,114,140,103,130,141,117,106,114,121,114,133,137,92,121,112,146,97,137,105,98,117,112,81,97,139,113,134,106,144,110,137,137,111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133,112,83,94,146,133,101,131,116,111,84,137,115,122,106,144,109,123,116,111,111,133,150]
#设置图形大小
plt.figure(figsize=(20,8),dpi=80)
#计算组数
d=3 #组距
num_bins=(max(a)-min(a))//d #整除,会导致条形图偏移,所以在设置组距时最好设置为max(a)-min(a)的除数。
#绘制直方图
plt.hist(a,num_bins) #num_bins组数,或者数组。加density=1,stacked=True是否绘制频率分布直方图,默认频数直方图
#设置x轴的刻度
plt.xticks(range(min(a),max(a)+d,d))
#添加网格
plt.grid(alpha=0.3)
#展示图形
plt.show()
直方图的更多应用场景
(1)用户年龄分布状态
(2)一段时间内用户点击次数的分布状态
(3)用户活跃时间的分布状态
更多的绘图工具的了解
选择哪种图形来呈现数据
展现变化——折线图
统计离散数据——条形图
matplotlib使用流程
明确问题——选择图形呈现方式——准备数据——绘图和图形完善
更多图形样式
(1)可以查看url地址:url地址
(2)实际使用数据可视化图表库就可以看到很多图形。
(3)plotly:可视化工具中的github,相对于matplotlib更加简单,图形更加漂亮。链接:Plotly
(4)seaborn
总结
边栏推荐
猜你喜欢
Matlab实现异构交通流
7月更新速递 | 产品实验室N+1,EasyV For Unreal上线!
CI/CD:持续集成/持续部署(难舍难分)
Solve the Final Fantasy 13-2 Clock Puzzle with DFS
【物理应用】基于El-centro地震波作用下隔震与非隔震支座下的顶层位移、速度、加速度的对比情况附matlab代码
Building PO layered architecture of automated testing framework from 0
Redis中SDS简单动态字符串
Pytest+request+Allure实现接口自动化框架
【es6】教程 Symbol数据以及迭代器和生成器
基于NLP的智能问答系统核心技术
随机推荐
高并发+海量数据下如何实现系统解耦?【中】
20220529设计问题:二叉树的序列化与反序列化
DSP28379学习笔记 (一)——GPIO基本操作
【面试整理】-- 多线程
The building had been registry cluster, load balancing
What are the most popular automated testing tools in 2022?The most complete and most detailed of the entire network is here
dice和iou
Shell脚本:函数
Building PO layered architecture of automated testing framework from 0
高性能 MySQL(十二):分区表
按钮点击动画
使用TensorRT对AlphaPose模型进行加速
online schema change and create index
iFLYTEK Written Exam Questions Review
MVVM项目开发(商品管理系统二)
第二部分:和查找表相关的问题
多线程 (进阶+初阶)
OpenLORIS-Object Datasets
多御安全浏览安卓版升级尝鲜,新增下载管理功能
Kubernetes:(十三)secret与configmap的那些事