Python pandas高效数据处理绘图

文章资讯 2020-06-15 00:53:08

Python pandas高效数据处理绘图

Pandas是Python中非常常用的数据处理工具,使用起来非常方便。它建立在NumPy数组结构之上,所以它的很多操作通过NumPy或者Pandas自带的扩展模块编写,这些模块用Cython编写并编译到C,并且在C上执行,因此也保证了处理速度。
今天我们就来体验一下它的强大之处。
1.创建数据
使用andas可以很方便地进行数据创建,现在让我们创建一个5列1000行的andasDataFrame:
mu1,sigma1=0,0.1
mu2,sigma2=0.2,0.2
n=1000df=d.DataFrame(
{
"a1":d.n.random.normal(mu1,sigma1,n),
"a2":d.n.random.normal(mu2,sigma2,n),
"a3":d.n.random.randint(0,5,n),
"y1":d.n.logsace(0,1,num=n),
"y2":d.n.random.randint(0,2,n),
}
)
a1和a2:从正态(高斯)分布中抽取的随机样本。
a3:0到4中的随机整数。
y1:从0到1的对数刻度均匀分布。
y2:0到1中的随机整数。生成如下所示的数据:2.绘制图像
Pandas绘图函数返回一个matlotb的坐标轴(Axes),所以我们可以在上面自定义绘制我们所需要的内容。比如说画一条垂线和平行线。这将非常有利于我们:
1.绘制平均线
2.标记重点的点
imortmatlotb.ylotaslt
ax=df.y1.lot()
ax.axhne(6,color="d",nestyle="--")
ax.axvne(775,color="d",nestyle="--")
lt.show()
我们还可以自定义一张图上显示多少个表:
fig,ax=lt.sublots(2,2,figsize=(14,7))
df.lot(x="index",y="y1",ax=ax[0,0])
df.lot.scatter(x="index",y="y2",ax=ax[0,1])
df.lot.scatter(x="index",y="a3",ax=ax[1,0])
df.lot(x="index",y="a1",ax=ax[1,1])
lt.show()
3.绘制直方图
Pandas能够让我们用非常简单的方式获得两个图形的形状对比:
df[["a1","a2"]].lot(bins=30,kind="hist")
lt.show()
还能允许多图绘制:
df[["a1","a2"]].lot(bins=30,kind="hist",sublots=True)
lt.show()
当然,生成折线图也不在画下:
df[['a1','a2']].lot(by=df.y2,sublots=True)
lt.show()
4.线性拟合
Pandas还能用于拟合,让我们用andas找出一条与下图最接近的直线:最小二乘法计算和该直线最短距离:
df['ones']=d.n.ones(len(df))
m,c=d.n.nalg.lstsq(df[['index','ones']],df['y1'],rcond=None)[0]根据最小二乘的结果绘制y和拟合出来的直线:
df['y']=df['index'].aly(lambdax:x*m+c)
df[['y','y1']].lot()
lt.show()