python的pandas方法_python使用Pandas处理数据的方法

本文介绍了Python中Pandas库的使用,包括创建DataFrame、数据绘图、直方图绘制、散点图和线性拟合等功能,展示了Pandas在数据处理和分析中的强大能力。
摘要由CSDN通过智能技术生成

python使用Pandas处理数据的方法

发布时间:2020-06-17 13:50:10

来源:亿速云

阅读:119

作者:鸽子

Pandas是Python中非常常用的数据处理工具,使用起来非常方便。它建立在NumPy数组结构之上,所以它的很多操作通过NumPy或者Pandas自带的扩展模块编写,这些模块用Cython编写并编译到C,并且在C上执行,因此也保证了处理速度。

今天我们就来体验一下它的强大之处。

1.创建数据

使用pandas可以很方便地进行数据创建,现在让我们创建一个5列1000行的pandas DataFrame:mu1, sigma1 = 0, 0.1

mu2, sigma2 = 0.2, 0.2

n = 1000df = pd.DataFrame(

{

"a1": pd.np.random.normal(mu1, sigma1, n),

"a2": pd.np.random.normal(mu2, sigma2, n),

"a3": pd.np.random.randint(0, 5, n),

"y1": pd.np.logspace(0, 1, num=n),

"y2": pd.np.random.randint(0, 2, n),

}

)a1和a2:从正态(高斯)分布中抽取的随机样本。

a3:0到4中的随机整数。

y1:从0到1的对数刻度均匀分布。

y2:0到1中的随机整数。

生成如下所示的数据:

b83048b72f5d34d2a2e875eee0bdf811.png

2.绘制图像

Pandas 绘图函数返回一个matplotlib的坐标轴(Axes),所以我们可以在上面自定义绘制我们所需要的内容。比如说画一条垂线和平行线。这将非常有利于我们:

1.绘制平均线

2.标记重点的点import matplotlib.pyplot as plt

ax = df.y1.plot()

ax.axhline(6, color="red", linestyle="--")

ax.axvline(775, color="red", linestyle="--")

plt.show()

0d433b47f5a8e54af8077b577748a461.png

我们还可以自定义一张图上显示多少个表:fig, ax = plt.subplots(2, 2, figsize=(14,7))

df.plot(x="index", y="y1", ax=ax[0, 0])

df.plot.scatter(x="index", y="y2", ax=ax[0, 1])

df.plot.scatter(x="index", y="a3", ax=ax[1, 0])

df.plot(x="index", y="a1", ax=ax[1, 1])

plt.show()

4afdaecb4dfb5c6899daac704ba6fc01.png

3.绘制直方图

Pandas能够让我们用非常简单的方式获得两个图形的形状对比:df[["a1", "a2"]].plot(bins=30, kind="hist")

plt.show()

14c54fcd02d0f25788a87b1fce2eee21.png

还能允许多图绘制:df[["a1", "a2"]].plot(bins=30, kind="hist", subplots=True)

plt.show()

11aa34ca1e0d1b63b588e05cba3342a1.png

当然,生成折线图也不在画下:df[['a1', 'a2']].plot(by=df.y2, subplots=True)

plt.show()

ddab9477098fad06dde48711da366948.png

4.线性拟合

Pandas还能用于拟合,让我们用pandas找出一条与下图最接近的直线:

d385b0630b27e5ec407787041bfb95e6.png

最小二乘法计算和该直线最短距离:df['ones'] = pd.np.ones(len(df))

m, c = pd.np.linalg.lstsq(df[['index', 'ones']], df['y1'], rcond=None)[0]

根据最小二乘的结果绘制y和拟合出来的直线:df['y'] = df['index'].apply(lambda x: x * m + c)

df[['y', 'y1']].plot()

plt.show()

5331cc642bc3d92a21c5717abbcc859c.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值