数据分析之Matplotlib的简单使用

Python可视化——matplotlib


Python可视化是将图表数据转换为直观易懂的图形表达
主要使用工具库有:

  • Matplotlib:最流行的Python二维底层绘图库,主要用作数据可视化图表绘制
  • Pandas
  • Seaborn
  • Echarts

Matplotlib载入和执行

使用页面GUI模式显示图像,图像可交互

#%matplotlib notebook  
import matplotlib.pyplot as plt  #载入绘图库

折线图——plot

折线图用于显示随时间或有序类别的变化趋势。

plt.plot(
    [1,2,3,4,5],  #x轴
    [2,5,1,8,4],  #y轴  只写一个坐标轴默认y轴
    #线条样式
    color = 'red',
    linestyle = '-',
    linewidth=2,
    
    #标记样式
    marker='o',
    markerfacecolor='#df448b',
    markersize=10,
    
    alpha =0.5 #透明度
)
plt.show()

数据分析之Matplotlib的简单使用_第1张图片

练习——人民币美元汇率图

#汇率
eurcny = [6.8007,6.8007,6.8015,6.8015,6.8060,6.8036,6.8025,6.7877,6.7835,6.7700,6.7463,6.7519,6.7595,6.7669,6.7511,6.7511,6.7539,6.7430]
#日期
date = [3,4,5,6,7,10,11,12,13,14,17,18,19,20,21,24,25,26]

#图像大小
plt.figure(figsize=(15,10))
plt.plot(
    date,
    eurcny,
    
    color ='r',
    marker ='o',
    markerfacecolor = 'g',
    linestyle='--',
    linewidth=10,
    markersize=20,
    alpha=0.3
)

plt.plot(eurcny)

plt.grid(linewidth=0.3)  #网格

数据分析之Matplotlib的简单使用_第2张图片

散点图/气泡图——scatter

散点图可以显示若干数据系列中各数值之间是否存在相关性

#数据
x=[1,3,5,7,9,11,13,15,17]
y=[2,-5,19,3,5,8,12,6,1]

plt.scatter(x,y)
plt.show()

数据分析之Matplotlib的简单使用_第3张图片

条形图/柱状图——bar、barh

条形图和柱状图用来比较各独立类别下的某单独数据的大小

x=[1,2,3,4,5]
y=[3,6,1,8,2]

#柱状图
plt.bar(x,y,width=0.5)
plt.xticks(x,['a','b','c','d','e'])    #x与y轴的坐标值可以修改
#plt.yticks([2,4,6,8,10],['a2','b2','c2','d2','e2'])
plt.show()

#条形图

plt.barh(
    x,
    y,
    height=0.4,

)
plt.show()

数据分析之Matplotlib的简单使用_第4张图片数据分析之Matplotlib的简单使用_第5张图片

练习——男女生各科成绩比较

  • 男生平均分(语文/数学/英语/物理/化学)

  • boy =[85.5,91,72,59,66]

  • 女生平均分

  • girl =[94,82,89.5,62,49]

x1 = [0.85,1.85,2.85,3.85,4.85]
x2 = [1.15,2.15,3.15,4.15,5.15]
boy =[85.5,91,72,59,66]
girl =[94,82,89.5,62,49]
plt.bar(
    x1,
    boy,
    color='r',
    alpha=0.3,
    width=0.3,
)
plt.xticks([1,2,3,4,5],['Chi','Math','Eng','Phy','Che'])
plt.bar(
    x2,
    girl,
    color='blue',
    alpha=0.3,
    width=0.3,
)
plt.grid(linewidth=0.1)
#进阶  分数显示到图上
for i,j in zip(x1,boy):
    plt.text(
        i,  #x轴,course学科位置
        j,  #y轴   boy分数
        '%.1f'%j,    #数据转为一位小数
        ha = 'center', #水平对齐
        va = 'bottom', #垂直对齐
        alpha=0.5
    )
for i,j in zip(x2,girl):
    plt.text(
        i,  #x轴,course学科位置
        j,  #y轴   boy分数
        '%.1f'%j,    #数据转为一位小数
        ha = 'center', #水平对齐
        va = 'bottom', #垂直对齐
        alpha=0.5
    )
plt.show()

数据分析之Matplotlib的简单使用_第6张图片

饼图——pie

饼图用于显示各项相对总和的百分比大小

p = [15,30,45,10]

plt.pie(p)

plt.show()

数据分析之Matplotlib的简单使用_第7张图片

练习——2017九国军费占比数据

mark = ['America','China','India','Saudi','Russia','Japan','Britain','Germany','France']
percent =[0.5548467,0.14444868,0.05094268,0.04846696,0.046753,0.04418206,0.04161112,0.03799276,0.03075605]

plt.pie(
    percent,
    labels = mark,
    explode=(0,0.1,0,0,0,0,0,0,0),   #突出块,突出比例
    autopct='%1.1f%%',   #显示百分比方式
    shadow=False,  #阴影效果
    startangle=-110  #饼图起始的角度,度数,默认0为右侧水平180°开始,逆时针旋转
)
plt.axis('equal')  #正圆形饼图,x/y轴尺寸相等,默认是扁圆
plt.show()
    

数据分析之Matplotlib的简单使用_第8张图片

直方图——hist

  • 直方图是表达数据的分布情况的统计图表,一般用来表示同等区间内,某类数值出现的个数或频率(频率=出现次数/总数)

  • x轴表示分组数据,y轴表示分布情况

  • 从频率分布直方图可以直观估计出:

    • 众数:频率分布直方图中最高矩形的底部中点的横坐标
    • 中位数:把频率分布直方图分成两个面积相等部分的平行于Y轴的直线横坐标
  • 直方图与柱状图区别:

    • 直方图:分区之间连续无间断,表示连续变量;值用矩形面积表示
    • 条形图:各注之间有间隙,表示孤立的、不连续分类变量;值用矩形长度表示
#成绩数据

h1 = [88.2, 83.5, 68.8, 85.4, 78.6, 69.3, 60.6, 91.2, 52.7, 
      85.9, 57.1, 68. , 66.6, 78.2, 78.8, 85. , 89.1, 74.4,
      93.6, 75.7, 54.3, 55. , 90.9, 79.4, 94.4, 86.7, 82.4,
      76.7, 78.7, 72.3, 83.9, 78.6, 80. , 70.5, 87.1, 80.3,
      87.9, 65.1, 67.4, 61.5, 49.7, 77.1, 91.4, 72. , 61.5,
      73.9, 76.9, 88.2, 51.2, 53.9]
h2 = [79.5, 99. , 80. , 71. , 79.2, 85.6, 79.2, 68.8, 68.7, 96.5]

plt.hist(
    h1,
    10, #直方个数
    density=1, #默认0,数据出现个数    1,出现个数归一化为出现的频率
    histtype='bar',  #样式默认bar,stepfilled填充颜色,step不填充只有线条
    facecolor='b',  #直方图颜色
    edgecolor='g',   #直方图边框颜色
    alpha=0.3
)

数据分析之Matplotlib的简单使用_第9张图片

箱线图——boxplot

箱线图又名盒须图,是一种用作显示一组数据离散情况的统计图表,常用作多组数据的综合统计比较

四分位数:
第一四分位数(Q1),又称‘较小四分位数’,等于该样本中所有数值从小到大排列后第25%的数字
第二四分位数(Q2),又称‘中位数’,等于该样本中所有数值由小到大排列后第50%的数字
第三四分位数(Q3),又称‘较大四分位数’,等于该样本所有值中所有数值由小到大排列后第75%的数字

箱线图主要包含5个统计量,从上到下,从高到低

最大非异常值,上边线
Q3,箱体上边缘四分位数
Q2,中位线数
Q1,箱体下边缘下四分位数
最小非异常值,下边线
除了上面5个统计量,上下边缘外侧可能还有异常值

Q3和Q1的差值,即四分位数差

 大于Q3 1.5倍四分位数差的值,或小于Q1 1.5倍四分位数的值,划为异常值
a = [15,5,9,22,4,-5,45,-22]

plt.boxplot(a)
#plt.show()

数据分析之Matplotlib的简单使用_第10张图片

  • 在这里附上四分位数的计算,直接上草稿图了
    数据分析之Matplotlib的简单使用_第11张图片

练习——某班三组学员数学成绩统计分析

a =[42,55,79,68,15,98]
b =[32,59,77,100,92,88,5,0]
c =[92,98,97,65,97,100,0]

plt.boxplot(
    (a,b,c),
    labels=('a','b','c'),
    showfliers=True,  #是否显示异常值
    whis=1.5,  #指定异常值参数
    showmeans=True, #是否显示平均值
    meanline=True,  #是否用线标识平均值,默认用点
    
    widths=0.3,  #柱子宽度
    vert = True, #默认True纵向,False横向
    patch_artist=False, #是否填充颜色
    boxprops={'color':'green'}, #箱体样式
)
plt.show()

数据分析之Matplotlib的简单使用_第12张图片

热力图

热力图以二维形式展示数据的大小,主要用于数据的重要程度/相关度展示

a = [
    [1,2,3],
    [4,5,6],
    [7,8,9]
]

plt.imshow(
    a,
    #cmap='gray', #配色,gray灰度
    #origin='lower', #水平翻转,默认upper,lower
    interpolation='lanczos',  #渲染,模糊
)

plt.colorbar()  #侧栏

数据分析之Matplotlib的简单使用_第13张图片

你可能感兴趣的:(Pyhthon)