美文网首页我爱编程
Python数据分析与展示Numpy、Matplotlib

Python数据分析与展示Numpy、Matplotlib

作者: 凌勇 | 来源:发表于2017-08-01 16:23 被阅读0次

    Python 数据分析与展示

    学习内容

    Numpy数据表示、Matplotlib绘图、Pandas数据分析这三个库

    Anaconda IDE的使用

    conda、Spyder、IPython的使用

    实例:图像的手绘风格、引力波的绘制、房价趋势分析、股市数据的分析


    Anaconda IDE的使用

    使用anaconda navigator 启动

    anaconda来源于conda(用于管理python的第三方包与python环境)其包含了conda、Python与一批第三方的库

    编程工具 Spyder 包含了IPython(交互式命令行)
    IPython中的?可以得到变量信息与函数信息、%run命令可以运行python程序,在运行时会使用空的命令空间、%magic可以显示所有的魔术命令


    plt运行结果.png

    同样也可以这样绘制:

    
    plt.plot([0,2,4,6,8],[3,1,4,5,2])
    
    
    # 给出横纵坐标的范围 横-1到10,纵0到6
    plt.axis([-1,10,0,6])
    
    # 绘图区域分割
    plt.subPlot(nrows,ncols,plot_number) # 与matlab一样,标号从左到右,从上到下
    
    # 也可以将逗号去掉,比如plt.subplot(324)
    
    
    
    

    plt.plot(x,y,format_string,**kwargs)

    • x: X轴数据,列表或者数组,可选,可组合使用
    • y: Y轴数据,列表或者数组
    • format_stirng: 控制输出字符串,可选
      • 'b'/'g'/'#008000'/'0.8' 颜色控制字符
      • '-' 实线 '--' 破折线 '-.' 点划线 ':' 虚线 '''' 无线条 曲线风格字符
      • '.' 点标记 ',' 像素标记 'o' 实心圈标记 'v' 倒三角标记 '^' 上三角标记 ...... 标记字符
    • **kwargs: 第二组或者更多组的(x,y,format_string)

    plt中的文本显示函数

    • plt.xlabel()、plt.ylabel() 对轴加上标签
    • plt.title() 增加文件头
    • plt.text() 任意位置增加文本
      • plt.text(2,1,'str') 前两个参数表示text出现范围
    • plt.annotate() 增加带箭头的注释文本
    • plt.grid() 显示网格线

    plt.subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)

    设定网格,选中网格,设计成不同大小的绘图子区域

    • GridSpec 元组,表示将区域分成什么样子的子区域
    • CurSpec 元组,表示子区域的起始格子坐标
    • colspan、rowspan 表示子区域占用列、行数
      同样,此函数可以使用如下库实现:
    import matplotlib.gridspec as grs
    
    gs  = grs.GridSpec(3,3)
    ax1 = plt.subplot(gs[0:])
    ax2 = plt.subplot(gs[1,:-1])
    
    

    pyplot基础图标函数

    plot()函数、箱形图函数boxplot()、条形图函数bar()、横向条形图函数barh()、极坐标图函数polar()、饼图pie()
    功率谱密度图函数psd()、谱图specgram()、X-Y相关性图cohere()、散点图scatter()、直方图hist()、步阶图step()、等值图contour()、垂直图vlines()、柴火图stem()、数据日期plot_date()

    下面以代码说明:

    # -*- coding: utf-8 -*-
    """
    Created on Tue Aug  1 14:07:25 2017
    
    @author: Administrator
    """
    
    import matplotlib.pyplot as plt
    
    
    # 饼图的标签
    labels = 'Frogs','Hogs','Dogs','Logs'
    
    # 饼图对应的尺寸,即所占比例
    sizes = [15,30,45,10]
    
    # 突出与突出的量
    explode = (0,0.1,0,0)
    
    # autopct显示百分数的方式、shadow阴影效果、startangele起始角度
    
    plt.pie(sizes,explode=explode,labels=labels,autopct = '%1.1f%%',shadow = False,startangle = 90)
    
    
    # 使得轴的度量成为一样
    plt.axis('equal')
    plt.show()
    
    pie.png
    # -*- coding: utf-8 -*-
    """
    Created on Tue Aug  1 15:39:08 2017
    
    @author: Administrator
    """
    # 绘制直方图
    
    import matplotlib.pyplot as plt
    import numpy as np
    
    np.random.seed(0)
    mu,sigma = 100,20 #均值与标准差
    
    a = np.random.normal(mu,sigma,size=100) # 正态分布
    
    
    # a 给定数组 bin 表示直方的个数,就是取值区间的划分,纵轴表示为频次/区间长度
    # normed = 0 显示频次,normed=1 显示频次/区间长度
    # histtype 绘制类型 facecolor 绘制颜色
    
    plt.hist(a,20,normed = 1,histtype = 'stepfilled',facecolor = 'b',alpha = 0.75)
    
    plt.title('Histgram')
    
    plt.savefig('D:/Histgram',dpi = 150)
    
    plt.show()
    
    
    Histgram.png
    # -*- coding: utf-8 -*-
    """
    Created on Tue Aug  1 15:48:07 2017
    
    @author: Administrator
    """
    
    # 极坐标图的绘制
    import matplotlib.pyplot as plt
    import numpy as np
    
    # 极坐标图中的数据个数
    N = 20
    
    # 等分出20个不同的角度 0-360度
    theta = np.linspace(0.0,2*np.pi,N,endpoint = False)
    
    # 生成每个角度对应的值
    radii = 10*np.random.rand(N)
    
    # 生成宽度值
    width = np.pi/4*np.random.rand(N)
    
    
    # 获得绘制极坐标图的子区域
    ax = plt.subplot(111,projection = 'polar')
    
    # 前三个参数对应 theta 从何地开始绘制 radii 从中心点绘制出来的长度,width 指绘图区域的面积
    bars = ax.bar(theta,radii,width=width,bottom=0.0)
    
    for r,bar in zip(radii,bars):
        bar.set_facecolor(plt.cm.viridis(r/10.))
        bar.set_alpha(0.5)
    
    
    plt.savefig('D:/polar',dpi = 150)
    
    plt.show()
    
    polar.png
    # -*- coding: utf-8 -*-
    """
    Created on Tue Aug  1 16:02:32 2017
    
    @author: Administrator
    """
    
    import numpy as np 
    import matplotlib.pyplot as plt
    
    fig,ax = plt.subplots()
    
    ax.plot(10*np.random.randn(100),10*np.random.randn(100),'o')
    ax.set_title('Simple Scatter')
    
    plt.savefig('D:/Scatter',dpi = 150)
    
    plt.show()
    
    Scatter.png

    相关文章

      网友评论

        本文标题:Python数据分析与展示Numpy、Matplotlib

        本文链接:https://www.haomeiwen.com/subject/sbmjlxtx.html