iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0
佛心分享-讓我升級的那些書

菜雞學習 pandas 的 30 日讀書分享系列 第 28

菜雞學習 pandas 的 30 日讀書分享【Day 28】總結與計算描述性統計數據

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20250828/20168290QTGdM3Flja.jpg

總結與計算描述性統計數據

pandas 物件具備一組常用的數學和統計方法,他們大多是歸約或總結統計方法,可以從 Series 提取一個值(如 sum()mean()),或是從 DataFrame 的列或欄取出一個 Series。

與 NumPy 陣列的類似方法相比他們具備缺失資料的處理機制,考慮一個小型的 DataFrame:

In [267]: df = pd.DataFrame([[1.4, np.nan], [7.1, -4.5],
   .....:                    [np.nan, np.nan], [0.75, -1.3]],
   .....:                   index=["a", "b", "c", "d"],
   .....:                   columns=["one", "two"])
   
In [268]: df
Out[268]:
    one  two
a  1.40  NaN
b  7.10 -4.5
c   NaN  NaN
d  0.75 -1.3

呼叫 DataFrame 的 sum 方法會得到一個包含直欄總和的 Series:

In [269]: df.sum()
Out[269]:
one    9.25
two   -5.80
dtype: float64

傳入 axis="columns"axis=1 會改成跨欄加總:

In [270]: df.sum(axis="columns")
Out[270]:
a    1.40
b    2.60
c    0.00
d   -0.55
dtype: float64

當整列或整欄都是 NA 值,總和或是 0,如果有任何值不是 NA,那麼結果將不是NA

可以使用 skipna 來停用此功能,此時在一列或一欄裡的任何 NA 值都會讓相應的結果變成 NA:

In [271]: df.sum(axis="index", skipna=False)
Out[271]:
one   NaN
two   NaN
dtype: float64

In [272]: df.sum(axis="columns", skipna=False)
Out[272]:
a     NaN
b    2.60
c     NaN
d   -0.55
dtype: float64

有些彙總統計至少需要一個非 NA 值才能產生值,如 mean:

In [273]: df.sum(axis="columns")
Out[273]:
a    1.400
b    1.300
c      NaN
d   -0.275
dtype: float64

以下為歸約方法的常見選項:

axis :想歸約的軸,index 是 DataFrame 的列,columns 是欄。
skipna :排除缺失值,預設為 True
level :如果軸是分層檢索 (MuliIndex),那就依層分組歸約。

今日的分享就到這囉,我們明天見,掰掰!


上一篇
菜雞學習 pandas 的 30 日讀書分享【Day 27】重複標籤
下一篇
菜雞學習 pandas 的 30 日讀書分享【Day 29】唯一值、值的數量以及成員資格
系列文
菜雞學習 pandas 的 30 日讀書分享30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言