Python pandas高效數據處理之繪圖

Pandas是Python中很是經常使用的數據處理工具,使用起來很是方便。它創建在NumPy數組結構之上,因此它的不少操做經過NumPy或者Pandas自帶的擴展模塊編寫,這些模塊用Cython編寫並編譯到C,而且在C上執行,所以也保證了處理速度。python

今天咱們就來體驗一下它的強大之處。數組

1.建立數據

使用pandas能夠很方便地進行數據建立,如今讓咱們建立一個5列1000行的pandas DataFrame:bash

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中的隨機整數。

生成以下所示的數據:app

2.繪製圖像

Pandas 繪圖函數返回一個matplotlib的座標軸(Axes),因此咱們能夠在上面自定義繪製咱們所須要的內容。好比說畫一條垂線和平行線。這將很是有利於咱們:dom

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()
複製代碼

咱們還能夠自定義一張圖上顯示多少個表:spa

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()
複製代碼

3.繪製直方圖

Pandas可以讓咱們用很是簡單的方式得到兩個圖形的形狀對比:3d

df[["a1", "a2"]].plot(bins=30, kind="hist")
plt.show()
複製代碼

還能容許多圖繪製:code

df[["a1", "a2"]].plot(bins=30, kind="hist", subplots=True)
plt.show()
複製代碼

固然,生成折線圖也不在畫下:

df[['a1', 'a2']].plot(by=df.y2, subplots=True)
plt.show()
複製代碼

4.線性擬合

Pandas還能用於擬合,讓咱們用pandas找出一條與下圖最接近的直線:

最小二乘法計算和該直線最短距離:

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()
複製代碼

咱們的文章到此就結束啦,若是你但願咱們今天的Python 教程,請持續關注咱們,若是對你有幫助,麻煩在下面點一個贊/在看哦

有任何問題均可以在下方留言區留言,咱們都會耐心解答的!


​Python實用寶典 (pythondict.com)
不僅是一個寶典
歡迎關注公衆號:Python實用寶典

原文來自Python實用寶典:Python pandas高效數據處理之繪圖

Python實用寶典
相關文章
相關標籤/搜索