NumPy、Matplotlib、Pandas

NumPy、Matplotlib、Pandas

一、引言

1. NumPy(Numerical Python)1: N维数组对象ndarray, 矩阵运算, 数学函数库

2. Matplotlib(matrix plot library): 线图、散点图、条形图、柱状图
3. Pandas: 从CSV、JSON、SQL、Excel等文件格式导入数据进行数据清洗、加工和分析
4. SciPy(Scientific Python): 最优化、线性代数、积分、插值、快速傅里叶变换、信号处理和图像处理、常微分方程求解
5. Seaborn: 可视化库,对matplotlib进行二次封装,将多个图封装成一个接口,即绘图接口更为集成,可通过少量参数设置实现大量封装绘图。

二、NumPy

  1. numpy类、子模块、函数:
    dtype/complex64/ndarray/char(字符串包)/linalg(det/solve/inv线性代数包)
    方法arange/array/empty/ones/zeros/linspace/logspace(返回ndarray类的对象/实例),nditer,transpose,expend_dims/squeeze(维度),concatenate/stack(连接),split,resize/append/insert/delet/unique(增删),arctan,around,substract/divide/multiply/power/mod(计算),amin/median/mean/average/std/var(统计),sort/argsort/argmax/nonzero/where(排序、筛选),view/copy,dot/vdot/inner/matmul(线性代数),meshgrid(生成坐标矩阵)
  2. ndarray对象/实例,如array([1, 2])是用于存放同类型元素的多维数组:
    属性ndim,shape,size,dtype,itemsize,real,image
    方法astypere,flatten,ravel(形状),T,
  3. 索引:二维a[…,1:],a[[0,2],[1,2]],a[0:,[1,2]],a[a>5],a[~np.isnan(a)],a[[1,0,2]]

三、Matplotlib

  1. 绘图接口:figure/axes(面向对象:画板和子图),pyplot(面向当前图:绘制图表),
  2. 绘图步骤:
    (1)创建画板:figure/axes/subplot/sublopts实现不同区域画图
    (2)绘制图表:plot(折线图或点图)/scatter/bar/barh(水平条形图)/hist(离散标签下的数量对比)/pie/imshow(根据像素点数据完成绘图并显示)
    color(r,y,b),linestyle(-/--/:),marker样式(./o/>/1/*)
    (3)配置图例:title,axis/xlim/ylim(坐标轴范围),grid(网格线),legend(图例),xlable/ylable(坐标轴标题)loc,xticks/yticks(指定坐标轴刻度),text/arrow/annotation
    (4)中文、保存图片:plt.matplotlib.rcParams[‘font.family’]=‘STSong’/plt.matplotlib.rcParams[‘font.size’]=20/plt.rcParams[‘axes.unicode_minus’]=False#用来正常显示负号,savefig(在show前面)
  3. 普通画图实例2三维平面与曲面
'''一:一幅图画两条曲线'''
#(15到20摄氏度之间的)和(5到10摄氏度之间的)温度在11:00~12:00的两条变化曲线
import matplotlib.pyplot as plt
import random
plt.matplotlib.rcParams['font.family']='STSong'#显示中文及字号
plt.matplotlib.rcParams['font.size']=20
x = range(60)#数据
y = [random.uniform(15,20)for i in x]
y_another = [random.uniform(5,10)for i in x]
plt.figure( figsize=(12,8), dpi=80 )#画布
plt.plot(x,y,label='温度曲线1')#画带图例的图
plt.plot(x,y_another,color='g',linestyle='-.',label='温度曲线2')
z = range(40)#设置刻度及步长
x_label = ['11:{}'.format(i) for i in x]
plt.xticks( x[::5], x_label[::5])
plt.yticks(z[::5])
plt.grid(True, linestyle='--', alpha=0.5)#添加网格信息
plt.legend(loc='right')#显示图例
plt.xlabel('时间')#横纵标题
plt.ylabel('温度')
plt.title('温度随时间变化曲线')#图标题
plt.legend()#显示图例,默认loc=Best
plt.savefig('./test.png')#保存图片
plt.show()#展示

'''二、可以通过figure、subplot、subplots实现多个绘图区域画不同的曲线图,见上面创建画板处的链接,下面以subplots为例:'''
figure,axes=plt.subplots(nrows=1,ncols=2,figsize=(12,8), dpi=80)
axes[0].plot(x,y,label='温度曲线1')#画带图例的图
axes[1].plot(x,y_another,color='g',linestyle='-.',label='温度曲线2')
axes[0].set_title("曲线1")#设置图标题
axes[1].set_title("曲线2")
for ax in axes:
    ax.legend()#显示图例,默认loc=Best
    ax.set_yticks(z[::5])#设置步长
plt.show()

'''三、散点图、柱状图、直方图、饼图'''
x = range(8) 
y = [100,200,400,350,450,350,250,300]
z = [200,300,350,250,450,450,500,250]
plt.scatter(x,y,color='b',marker='>',linewidths=5,label='散点图')

plt.bar(x,y,width=0.4,color=['r','k','y','g','b','c','m','k'],label='柱状图')
plt.bar( [i+0.2 for i in x], z, width=0.2, color='r', label='与上面一起形成双柱状图' )

plt.hist(x=np.random.randint(50,200,[80]),bins=int((max(number)-min(number))//10),color='b',label='直方图',width=5)
		#每区间为10的区域内出现了多少次;y轴可以是频数,也可以是频率

plt.pie(x=y, labels=['class1','class2','class3','calss4','class5','class6','class7','calss8'], 
		color=['r','k','y','g','b','c','m','k'],label='饼图', explode=[0.2, 0., 0., 0., 0., 0., 0., 0.],autopct='%1.2f%%')
		#explode突出显示,值越大,距离中心越远;autopct各个扇形百分比显示

四、Pandas

  1. 数据结构
    (1)Series:类似表格中的一个。一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。
    (2)DataFrame 是一个表格型的数据结构。由 Series组成的字典(行索引和列索引)。
  2. pandas.Series(data,index)#index缺省时,行索引标签默认0~n
    (1) seri=pandas.Series(data=[“Google”,“Runoob”,“Wiki”],index=[“x”,“y”,“z”])
    (2) seri=pandas.Series({“x”:“Google”,“y”:“Runoob”,“z”:“Wiki”})
    (3) 返回指定某行数据:seri[“x”]
  3. pandas.DataFrame(data,index,columns)#index缺省时,行索引标签默认0~n
    (1) data=pandas.DataFrame(data=[[‘Google’,10],[‘Runoob’,12],[‘Wiki’,13]],index=[“a”,“b”,“c”],columns=[‘Site’,‘Age’])
    (2) data=pandas.DataFrame({‘sites’:[“Google”,“Runoob”,“Wiki”],‘number’:[1,2,3]})
    (3) data=pandas.DataFrame([{‘a’:1,‘b’:2},{‘a’:5,‘b’:10,‘c’:20}])#没有对应的部分数据为NaN
    (4) 返回指定列数据:data[“a”]
    (5) 返回指定行数据:data.loc[0]
  4. CSV文件:以纯文本形式存储表格数据。read_csv/to_csv/head/tail/info
  5. JSON(JavaScript Object Notation):存储和交换文本信息的语法,JavaScript对象表示法,[]保存数组,数组可以包含多个对象,对象用{}保存。read_json/(解析内嵌数据)先json.load(open(path))再json_normalize
	import pandas as pd
	import numpy as np
	
	# 5x2的DataFrame数据,index表示行的编号,columns表示列的编号print(df)
	data = pd.DataFrame(np.random.randn(5, 2), index=range(0, 5, 1), columns=list('AB'))
	
	# loc表示通过标签取数据,标签就是上面的‘0’-‘4’和‘A’-‘B’,若未设置标签索引,则默认为位置索引,即=iloc。
	print(data .loc[0])
	print(data .loc[0, :])
	print(data .loc[0:2, 'A'])
	print(data.loc[0]['A'])获取元素,行在前,列在后
	
	# iloc表示通过位置取数据,即第m行,第n列数据,只接受整型参数。记住:0:2为“包左不包右”,即取0, 1。
	print(data .iloc[0, :])
	print(data .iloc[:, 0])
	print(data .iloc[0:2, :])
	print(data.loc[0][0])获取元素,行在前,列在后

	# DataFrame可以直接使用数组方式索引,从而代替loc,但只能索引列,不能索引某行或某几行。
	print(data['A'])
	print(data['A'][2]) #根据列索引+行索引获取元素,注意列在前,行在后

  1. https://www.runoob.com/numpy/numpy-tutorial.html ↩︎

  2. https://blog.csdn.net/weixin_44414948/article/details/109703153 ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值