数据分析之matplotlib
绘制折线图
需求1
假设一天中每隔两个小时(range(2, 25, 2))的气温©分别是[15, 13, 14.5, 17, 20, 25, 26, 26, 27, 22, 18, 15]
运行效果
注意:先保存图片在展示图片
升级版
运行效果
需求2
列表a表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况?
a= [random.randint(20,35) for i in range(120)]
运行效果
横坐标用字符串表示
注意 此时中文有乱码
设置中文显示
运行效果
添加图形描述信息
运行效果
需求3
假设大家在30岁的时候,根据自己的实际情况统计出来从11岁到30岁每年交的女(男)朋友的数量如a,请绘制出该数据的折线图,以便分析每年交女(男)朋友的数量走势
a = [1,0,1,1,2,5,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
要求:
y轴表示个数
x轴表示岁数,比如11岁,12岁
运行效果
绘制网格 添加图例
运行效果
总结
绘制散点图
需求1
假设通过爬虫你获取到了某地3月10月的每天白天的最高气温(分别位于列表a,b)那么此时如何寻找出气温和随时间(天)变化的某种规律?
运行效果
绘制条形图
需求1
假设你获取了2018年国内地电影票房前20的电影(列表a)和电影票房数据(列表b)哪么如何更加直观的展示该数据
运行效果
运行效果
绘制横版条形图
运行效果
需求2
假设列表a中电影分别在2017-09-14(b_14),2017-09-15(b_15),2017-09-16(b_16)三天的票房,为展示列表中电影本身的票房以及同其他电影的数据对比情况,应该如何直观呈现该数据?
a = [“星球崛起3:终极之战”,“敦刻尔克”,“英雄归来”,“战狼2”]
b_16 =[15746,312,4497,319]
b_15 =[12357,156,2045,168]
b_14 =[2358,399,2358,362]
运行效果
运行效果
运行效果
绘制直方图
直方图,形状类似柱状图却有着与柱状图完全不同的含义。直方图牵涉统计学的概念,首先要对数据进行分组,然后统计每个分组内数据元的数量。 在坐标系中,横轴标出每个组的端点,纵轴表示频数,每个矩形的高代表对应的频数,称这样的统计图为频数分布直方图。
相关概念:
- 组数:在统计数据时,我们把数据按照不同的范围分成几个组,分成的组的个数称为组数
- 组距:每一组两个端点的差
把数据分为多少组进行统计??
组数要适当,太少会有较大的统计误差,太多规律不明显
组数:将数据分组,当数据在100个以内时,按数据多少常分5-12组。
组距:指每个小组的两个端点的距离。
组数 = 极差/组距 = (max(a)-min(a))/ bin_width
需求1
假设你获取了250部电影的时长a列表,希望从这些电影时长的分布状态(比如时长100分钟到120分钟电影的数量出现的频率)等信息你应该如何分析呈现的数据?
运行效果
运行效果
频数分布直方图
运行效果
频率分布直方图
需求2
美国2004年人口普查发现,有124million人在离家较远的地方工作,根据他们从家到上班地点所需要的时间,通过抽样统计(最后一列)出以下表的数据,这些数据能绘制成直方图吗?
Data by absolute numbers
Interval | Width | Quantity | Quantity/width |
0 | 5 | 4180 | 836 |
5 | 5 | 13687 | 2737 |
10 | 5 | 18618 | 3723 |
15 | 5 | 19634 | 3926 |
20 | 5 | 17981 | 3596 |
25 | 5 | 7190 | 1438 |
30 | 5 | 16369 | 3273 |
35 | 5 | 3212 | 642 |
40 | 5 | 4122 | 824 |
45 | 15 | 9200 | 613 |
60 | 30 | 6461 | 215 |
90 | 60 | 3435 | 57 |
interval = [0,5,10,15,20,25,30,35,40,45,60,90]
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,57]
前面的问题问的是 : 那些数据能够绘制直方图
给出的数据都是统计之后的数据
所以为了达到直方图的效果 需要绘制条形图
所以: 一般来说能够使用plt.hist的方法的是那些没有经过统计过的数据
运行效果
运行效果
运行效果
运行效果
直方图更多应用场景:
用户的年龄分布状态
一段时间内用户点击次数的分布
用户活跃时间的分布状态
饼图
注意显示的百分比的位数
plt.pie(x, labels=,autopct=,colors)
- x:数量,自动算百分比
- labels:每部分名称
- autopct:占比显示指定%1.2f%%
- colors:每部分颜色
需求
显示不同的电影的排片占比
运行效果
对比常用统计图
折线图:
以折线的上升或下降来表示统计数量的增减变化的统计图
特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)
直方图:
由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据范围,纵轴表示分布情况。
特点:绘制连续性的数据,展示一组或者多组数据的分布状况(统计)
条形图:
排列在工作表的列或行中的数据可以绘制到条形图
特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别(统计)
散点图:
用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。
特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
饼图:
用于表示不同分类的占比情况,通过弧度大小来对比各种分类。
特点:分类数据的占比情况(占比)
Plot的图表函数
plt.plot(x,y , fmt) :绘制坐标图
plt.bar(left, height, width, bottom) : 绘制条形图
plt.barh(width, bottom, left, height) : 绘制横向条形图
plt.pie(data, explode) : 绘制饼图
plt.scatter(x, y) :绘制散点图
plt.hist(x, bings, normed) : 绘制直方图