【資料處理】Pandas庫:陣列運算

語言: CN / TW / HK

theme: cyanosis highlight: a11y-dark


持續創作,加速成長!這是我參與「掘金日新計劃 · 10 月更文挑戰」的第4天,點選檢視活動詳情

注意:本案例使用 Jupyter Notebook 進行案例演示

1. Pandas陣列運算

1.1 統計運算

在資料處理中,可以使用以下函式檢視資料的基本情況,獲取統計學基本資料資訊,比如平均值,中位數等,該方法只會針對資料型別的數進行統計計算,對於字串形式的列無效。

data.describe() - 返回值: - count:樣本個數 - mean:平均值 - std:標準差 - min:最小值 - max:最大值 - 25%:25%分位數 - 50%:中位數 — 75%:75%分位數

匯入相關庫並讀取資料:讀取資料以後,使用上述函式進行統計計算 import pandas as pd people = pd.read_csv("data/data140190/人口.csv") people.describe()

執行結果如下圖所示:將統計基本資訊進行了計算。

image.png

.max()函式 - 可以求陣列最大值 - 預設按照每列進行計算:axis=0

獲取資料的最大值:

people.max() # 預設按列求最大值 axis=0 執行結果如下圖所示:

image.png

.idxmax()函式: - 可以獲取最大值所在的位置 - 返回所在位置的索引

```python

獲取最大值所在位置

people.idxmax() ``` 執行結果如下圖所示:

image.png

1.2 累計統計函式

.cumsum()函式 - 作用主要就是計算軸向的累加和。 - axis=0:按行累加 - axis=1:按列累加 - 可以通俗理解成:返回陣列的第n個數就是原陣列前n個數的累加

對錶中年份那一列進行累加,並將返回的陣列繪製成折線圖 people["年份"].cumsum() people["年份"].cumsum().plot() 執行結果如下圖所示:注意此步需要匯入matplotlib模組,import matplotlib.pyplot as plt

image.png

1.3 自定義運算

apply(func, axis=0)

  • func:自定義函式
  • axis=0:預設是列,axis=1為行運算

案例:定義每一列最大值-最小值操作

案例中還用到了lambda表示式,在此簡單普及一下: - 在python中使用lambda表示式表示匿名函式(即沒有函式名的函式) - lambda在內部只能包含一行程式碼 - :後面就是函式體 - <函式物件名> = lambda <形式引數列表>:<表示式> people.apply(lambda x: x.max()-x.min()) 執行結果如下圖所示:

image.png

1.4 邏輯運算

邏輯運算子號 1. $<$ 2. $>$ 3. | 4. &

1.4.1 邏輯運算子

比如,我想篩選出年份>2010的資料,就用到了邏輯運算子:

people[people["年份"] >2010] 執行結果如下圖所示:

image.png

1.4.2 邏輯運算函式

query(expr)

  • expr:查詢字串 通過query使得剛才的過程更加方便簡單

比如,我們還想判斷年份裡是否有2018和2019,具體程式碼如下所示: people["年份"].isin([2018, 2019]) 執行結果如下圖所示:True表示是你想要查詢的內容,False表示不是你想要查詢的內容

image.png