pandas是Python中處理表格數據的強大工具,而數據統計分析是數據分析的基礎。今天,我們就來聊聊5個最常用的pandas統計函數,讓你快速掌握基礎分析技能,即使是初學者也能輕鬆上手!

一、sum():快速求和,統計總量

作用:計算某列(或某行)所有數值的總和。
場景:比如統計全班某科目的總分、某班級所有學生的銷售額總和等。

示例
假設我們有一個學生成績表,包含數學、語文、英語三門課的分數:

import pandas as pd

# 創建數據
data = {
    "學生ID": [1, 2, 3, 4, 5],
    "數學": [85, 92, 78, 90, 88],
    "語文": [76, 88, 95, 80, 79],
    "英語": [90, 85, 82, 93, 87]
}
df = pd.DataFrame(data)

# 計算數學總分(單列求和)
math_total = df["數學"].sum()
print("數學總分:", math_total)  # 輸出:數學總分: 433(85+92+78+90+88=433)

# 計算所有科目總分(對所有數值列求和)
all_subjects_total = df.sum()
print(all_subjects_total)  # 會輸出各列的總和,包括學生ID(但ID是整數,求和無意義,pandas會自動忽略非數值列)

注意
- sum()默認會自動跳過缺失值(NaN),如果數據中有空值,結果不會受影響。
- 想對行求和(比如每行學生的總分),可以加參數 axis=1df.sum(axis=1)

二、mean():計算平均值,反映集中趨勢

作用:計算某列(或某行)的平均值(總和除以數量)。
場景:比如統計某科目的平均分、班級平均分數等。

示例
用上面的成績表計算數學平均分:

# 數學平均分
math_avg = df["數學"].mean()
print("數學平均分:", math_avg)  # 輸出:數學平均分: 86.6(433/5=86.6)

# 所有科目平均分(對數值列求平均)
all_subjects_avg = df.mean()
print(all_subjects_avg)  # 各科目平均分:數學86.6,語文83.6,英語87.4

注意
- 同樣會自動忽略缺失值,若數據無缺失,結果更準確。
- 平均值容易受極端值影響(比如個別高分/低分會拉高/拉低整體),後續可結合中位數分析。

三、median():計算中位數,抗極端值干擾

作用:找到數據排序後的中間值,反映數據的“中間水平”。
場景:當數據中有極端值(如滿分或0分)時,中位數比平均值更可靠。

示例
假設數學成績中有一個極端低分(比如學生6的數學是50分,替換原數據中的某個值):

# 先修改數據(添加極端值)
data["數學"] = [85, 92, 78, 90, 88, 50]  # 新增學生6
df = pd.DataFrame(data)

# 計算數學平均分(受極端低分影響)
math_avg = df["數學"].mean()  # 433+50=483,483/6=80.5
print("數學平均分(含極端值):", math_avg)  # 輸出:80.5

# 計算中位數(不受極端值影響)
math_median = df["數學"].median()  # 排序後:50,78,85,88,90,92 → 中間兩個數(85+88)/2=86.5
print("數學中位數(含極端值):", math_median)  # 輸出:86.5

結論:中位數更適合反映“大多數數據的真實水平”,尤其是數據分佈不均時。

四、max()min():找出最大/最小值

作用:分別返回某列(或某行)的最大值和最小值。
場景:統計最高分、最低分,或者某指標的波動範圍。

示例

# 數學最高分
math_max = df["數學"].max()
print("數學最高分:", math_max)  # 輸出:92

# 數學最低分
math_min = df["數學"].min()
print("數學最低分:", math_min)  # 輸出:50

# 對整個DataFrame所有數值列找最大/最小值
df_max = df.max()  # 各列最大值
df_min = df.min()  # 各列最小值
print("各科目最高分:", df_max[["數學", "語文", "英語"]])  # 輸出:數學92,語文95,英語93

五、describe():一站式描述性統計

作用:對數據進行“全方位體檢”,一次性輸出count(數量)、mean(均值)、std(標準差)、min/max(極值)、25%/50%/75%(分位數)。
場景:快速瞭解數據的整體分佈、波動範圍和離散程度。

示例

# 對所有數值列(如數學、語文、英語)做統計
df_describe = df[["數學", "語文", "英語"]].describe()
print(df_describe)

輸出結果(簡化):

          數學        語文        英語
count  6.000000  6.000000  6.000000
mean  80.500000  82.166667  84.166667
std   14.720756   9.622553   8.516326
min   50.000000  76.000000  79.000000
25%   78.000000  79.250000  80.750000
50%   86.500000  83.000000  85.000000
75%   88.750000  88.000000  90.000000
max   92.000000  95.000000  93.000000

關鍵指標解釋
- std(標準差):數值越大,數據波動越劇烈(比如英語std=8.5,數學std=14.7,說明數學分數差距更大)。
- 25%/75%:四分之一分位數和四分之三分位數,中間50%的數據落在這個區間內。

總結:5個函數,從“基礎”到“進階”

這5個函數(sum/mean/median/max/min/describe)是數據分析的“基本功”。通過它們,你可以快速回答以下問題:
- 數據總量是多少?(sum
- 平均水平如何?(mean
- 中間水平和波動範圍?(median/std
- 極值是多少?(max/min

後續你可以繼續學習分組統計groupby)、標準差std)等進階內容,逐步提升數據分析能力!

小練習:試着用上述方法統計自己學習資料裏的成績數據,或者用pandas生成隨機數據,練習這些函數的使用吧!

小夜