zoukankan      html  css  js  c++  java
  • python学习笔记(14):可视化分析

    一、Matplotlib

      1.用于创建出版质量图表的绘图工具库

      2.目的的为Python构建一个Matlab式的绘图接口

      3.import matplotlib.pyplot as plt:pyplot模块包含了常用的matplotlib API函数

      4.figure

        (1)Matplotlib的图像均位于figure对象中,创建figure:plt.figure()

    #引入 matplotlib包
    import matplotlib.pyplot as plt
    %matplotlib inline

    #创建figure
    fig = plt.figure()

      5.Subplot

        (1)fig.add_subplot(a,b,c)

          a,b表示将fig分割成axb的区域,c表示当前选中要操作的区域,注意编号从1号开始

          返回的是AxesSubplot对象

          plot绘图的区域是最后一次指定的subplot的位置

          在指定的sublot里结合scipy绘制统计图

    #在一张图上做子图
    ax1 = fig.add_subplot(2,2,1)
    ax2= fig.add_subplot(2,2,2)
    ax3=fig.add_subplot(2,2,4)
    ax4 = fig.add_subplot(2,2,4)

    #在subplot上来作图
    import numpy as np
    random_arr = np.random.randn(100) #生成100个随机数随机分布

    #print random_arr
    #默认是在最后一次使用subplot的位置上作图,但是在jupyter里是无效的
    plt.plot(random_arr) #这里默认作的是线图
    plt.show()

        (2)直方图  hist;s散点图scatter;柱状图 bar;矩阵绘图plt.imshow()

    #在指定的subplot上来绘图
    import scipy as sp 
    from scipy import stats
    
    x = np.linspace(-5,15,50)   #这里表示生成一组数,数据的范围是从-5到15,将数据平均分成50份
    print(x.shape)  #打印出数据的分布以及数据的大小
    print(x)
    
    #绘制高斯分布,下面的这个x是x轴,sp.stats.norm.pdf是y轴
    plt.plot(x,sp.stats.norm.pdf(x=x,loc = 5,scale=2))   
    
    #绘制叠加直方图 sp.stats.norm.rvs是生成一个正太分布的直方图,将数据分为50个小组,指定颜色,指定透明度
    plt.hist(sp.stats.norm.rvs(loc=5,scale=2,size=200),bins=50,normed=True,color='red',alpha=0.5)
    plt.show()   
    #绘制直方图
    plt.hist(np.random.randn(100),bins=10,color='b',alpha=0.3)
    plt.show()

        (3)散点图scatter

    #绘制散点图,x是一个向量,y也是一个向量
    x = np.arange(50)
    y = x + 5*np.random.rand(50)
    plt.scatter(x,y)

        (4)柱状图bar

    #柱状图,这个图包括了常规作图的基本的元素
    x= np.arange(5)  #要生成5个柱子,就需要生成5个坐标
    #下面需要绘制两个柱状图,np.random.randint(1,25,size=(2,5))表示生成从1到25的随机整数
    #最后生成的形状是2行5列的形状
    y1,y2=np.random.randint(1,25,size=(2,5))
    print(x)
    print('y1',y1)  #生成的是1到25之间的随机整数,生成的大小是5列的数据
    print(type(y1))   #<class 'numpy.ndarray'>
    print('y2',y2)
    width=0.25    #指定柱子的宽度为0.25
    ax = plt.subplot(1,1,1)  #生成1x1的图,现在在1的位置上
    ax.bar(x,y1,width,color='r') #这个地方先画第一组
    ax.bar(x+width,y2,width,color='g')  #因为现在0,1,2,3,4位置被占据了,现在再在原来的位置上作图会有叠加,挪动的位置就是前面柱子的宽度
    ax.set_xticks(x+width)  # 将x轴的标记挪动width宽度
    ax.set_xticklabels(['a','b','c','d','e'])  #这列设置xlabel的标签
    plt.show()
    
    #xticks,yticks
    #xlable,ylable
    #x_lim,y_lim
    #title

        (5)矩阵绘图 plt.imshow():混淆矩阵,三个维度的关系,通过颜色来进行分析

    import numpy as np
    
    #矩阵绘图
    m = np.random.rand(10,10)
    print(m)
    #interpolation='nearest'输出的时候默认的差值的方法,cmap=plt.cm.ocean设置蓝色的主题
    #在机器学习中主要用于绘制混淆矩阵,三分类问题,识别猫狗猪。当类比较多的时候,混淆矩阵就会很有用
    plt.imshow(m,interpolation='nearest',cmap=plt.cm.ocean)
    plt.colorbar()
    plt.show()

      (6)绘制子图

    #subplots(2,2s)是指定数据是几行几列,这里绘图是两行两列的子图
    fig,subplot_arr = plt.subplots(2,2)
    #这里是指定在0行0列的位置上绘制直方图,这是一个正常的情况
    subplot_arr[0][0].hist(np.random.randn(100),color='b',alpha=0.3)
    plt.show()

      (7)颜色、标记、线型

      ax.plot(x,y,'r--'):等价于ax.plot(x,y,linestyle='--',color='r')

         颜色:b blue

            g:green

            r:red

            c:cyan

            m:magenta

            y:yello

            k:black

            w:white

      (8)刻度、标签和图例

        设置刻度范围

          plt.xlim(),plt.ylim()

          ax.set_xlim(),ax.set_ylim()

        设置显示的刻度

          plt.xticks(),plt.yticks()

        设置刻度标签

          ax.set_xticklabels(),ax.set_yticklabels()

        设置坐标轴标签

          ax.set_xlabel(),ax.set_ylabel()  

        设置标题:ax.set_title()

        图例

          ax.plot(label='legend')

          ax.legend()、plt.legent()

            loc='best'   自动选择放置图例的最佳位置

    fig,ax = plt.subplots(1)
    ax.plot(np.random.randn(1000).cumsum(),label='line0')
    #设置刻度
    ax.set_xlim([0,800])
    
    #设置显示的刻度
    ax.set_xticks(range(0,500,100))
    
    
    #设置刻度标签
    ax.set_yticklabels(['Jan','Feb','Mar'])
    #设置坐标轴的标签
    ax.set_xlabel('Number')
    ax.set_ylabel('Month')
    
    #设置标题
    ax.set_title('Example')
    #图例
    ax.plot(np.random.randn(1000).cumsum(),label='学校')
    ax.plot(np.random.randn(1000).cumsum(),label='line2')
    ax.legend()
    ax.legend(loc='best')
    plt.legend()

        (9)matplotlib设置

          plt.rc()

    二、Seaborn

        1.什么是Seaborn

          (1)Python找那个的一个制图工具库,可以制作出吸引人的、信息量大的统计图

          (2)在Matplotlib上构建,支持numpy和pandas数据结构的可视化,甚至是scipy和statsmodels的统计模型的可视化

        2.特点:

          (1)多个内置主题以及颜色主题

          (2)可视化单一变量、二维变量用于比较数据中各变量的分布情况

          (3)可视化线性回归模型中的独立变量以及不独立的变量

          (4)可视化矩阵数据,通过聚类算法探究矩阵间的结构

          (5)可视化书剑序列的数据以及不确定性的展示

          (6)可在分割区域制图,用于复杂的可视化

        3.安装

          conda install seaborn

          pip install seaborn

        4.数据集分布可视化

          (1)单变量分布 sns.distplot()

          (2)直方图:sns.distplot(kde=False)

          (3)核密度估计:sns.distplot(hist=False)或者sns.kdeplot()

          (4)拟合参数分布:sns.distplot(kds=False,fit=)

          (5)双变量分布

          (6)散布图:sns.jointplot()

          (7)二维直方图 Hexbin sns.jointplot(kind = 'hex')

          (8)核密度估计sns.jointplot(kind='kde')

          (9)数据集中变量之间的可视化 sns.pairplot()

     三、Bokeh

      1.什么是Bokeh?

        (1)专门针对Web浏览器的交互式、可视化Python会图库

        (2)可以做出像D3.js简洁漂亮的交互可视化效果

      2.特点:

        (1)独立的HTML文档或者服务端程序

        (2)可以处理大量、动态或者数据流

        (3)支持Python(或者Scala,R,Julia......)

      3.安装

        (1)conda install bokeh

        (2)pip install bokeh

      4.bokeh接口

        (1)Charts:高层接口,以简单的方式绘制复杂的统计图

        (2)Plotting:中层接口,用于组装图形元素

        (3)Models:底层接口,为开发者提供了最大的灵活性

      5.包引用

        (1)from bokeh.io import outpu_file生成html文档

        (2)from bokeh.io import output_notebook在jupyter中使用

      6.bokeh.charts

        (1)散点图   Scatter

        (2)柱状图  Bar

        (3)盒子图  BoxPlot

        (4)...............

  • 相关阅读:
    构建之法阅读笔记02
    学习进度条
    构建之法阅读笔记01
    c++ 与C的区别
    c++ 菜单动态效果
    c++ 方框中绘制菜单代码
    c++ 绘制方框
    c++ 条件编译
    c++ 预处理和多重替换
    c++ 文件共享打开
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/10207360.html
Copyright © 2011-2022 走看看