Python数据分析与展示Numpy、Matplotlib
2017-08-01 本文已影响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