在進行統計分析時,pandas提供了多種工具來幫助我們理解資料,
pandas提供了多個聚合函式,其中包括均值、標準差、最大值、最小值等等,
此外,pandas還可以進行基于列的統計分析,例如通過groupby()函式對資料進行聚合,并計算每組的統計分析結果,
除了基本的統計分析之外,pandas還可以進行更高級的分析,例如基于時間序列的分析等,
總之,pandas是一個非常強大的資料處理工具,可以幫助我們更輕松地進行資料分析和探索,
1. 一般統計
拿到資料之后,第一步我們會通過一些常用的統計資訊來大體了解下資料的整體情況,
pandas中常用的統計函式有:
- .sum():計算物件的總和
- .mean():計算物件的平均值
- .median():計算物件的中位數
- .max():計算物件的最大值
- .min():計算物件的最小值
- .count():計算物件數量
- .std():計算物件標準差
- .var():計算物件方差
通過agg函式可以一次將所有的統計資訊分析出來,
import pandas as pd
df = pd.DataFrame(
{
"數學": [100, 88, 94, 76, 84],
"語文": [98, 80, 86, 76, 90],
"英語": [95, 91, 86, 95, 83],
},
index=["小紅", "小明", "小汪", "小李", "小張"],
)
df.agg(["sum", "mean", "median","max", "min", "count", "std", "var"])

2. 分組統計
如果要分析的資料集中不同的多個行存在同屬于一個分類時,可以先分組之后再用上面的統計分析方法,
比如下面的示例,按年級分組統計的是同一個年級中所有學生的成績情況,而按學生分組統計的則是該學生在各個年級階段的成績情況,
按年級分組統計:
(agg函式除了可以指定統計函式,還可以指定統計的列,下面的示例只統計了語文和數學情況)
df = pd.DataFrame(
{
"姓名": ["小紅", "小明", "小紅", "小明", "小汪", "小汪"],
"年級": ["初二", "初一", "初一", "初二", "初一", "初二"],
"數學": [100, 88, 94, 76, 84, 78],
"語文": [98, 80, 86, 76, 90, 88],
"英語": [95, 91, 86, 95, 83, 65],
},
)
agg_funcs = ["max", "min", "mean"]
df.groupby(by="年級").agg({"語文": agg_funcs, "數學": agg_funcs})

按學生分組統計:
df.groupby(by="姓名").agg({"語文": agg_funcs, "數學": agg_funcs})

3. 透視表
pandas透視表(Pivot Table)是資料分析中的一種非常強大的功能,可以實作資料的按列匯總、按行匯總、按列和行同時匯總、資料透視和資料分析等功能,
同樣使用上一節中的示例資料,原始資料中,年級,姓名和分數混在一起,要看按人或者按年級查看成績情況的時候,需要進行過濾和排序等操作,

如果使用透視表的話,可以將原始資料中的某些列的值作為新的索引,某些列的值作為新的列,那么資料會更加一目了然,
另外,透視表的結果用來繪制折線圖,柱狀圖等也非常方便,
用年級作為索引,姓名作為列名的透視表:
df = pd.DataFrame(
{
"姓名": ["小紅", "小明", "小紅", "小明", "小汪", "小汪"],
"年級": ["初二", "初一", "初一", "初二", "初一", "初二"],
"數學": [100, 88, 94, 76, 84, 78],
"語文": [98, 80, 86, 76, 90, 88],
"英語": [95, 91, 86, 95, 83, 65],
},
)
pd.pivot_table(df, values=["數學", "語文", "英語"], index=["年級"], columns=["姓名"])

用姓名作為索引,年級作為列名的透視表:
pd.pivot_table(df, values=["數學", "語文", "英語"], index=["姓名"], columns=["年級"])

4. 同比和環比
同比和環比是統計中經常用到的概念,用來評估資料的變化情況,
同比一般指跟上一年度同一時期統計的資料的比較,環比一般指跟上一次統計的資料的比較,
原始資料如下(某同學初中三年每學期的平均分):
df = pd.DataFrame(
{
"年級": ["初一上", "初一下", "初二上", "初二下", "初三上", "初三下"],
"平均分": [90, 85, 86, 80, 90, 88],
},
)
df

環比就是看每個學期比上個學期是否進步:
df["平均分環比"] = df["平均分"].pct_change(periods=1)
df

第一條資料是NaN,因為它沒有上一條資料可以參考,
pct_change 得出的數值就是同比增長的百分比,負數表示下降的百分比,
同比就是比較每個學年同學期的成績變化,比如初二上和初一上比較,初三下和初二下比較等等,
df["平均分同比"] = df["平均分"].pct_change(periods=2)
df

我們觀察這個示例資料,同比與環比的差別僅僅在于:同比是隔一個資料比較,而環比是相鄰的資料比較,
所以,用pct_change來計算同比的時候,只要設定periods引數為2即可,
periods引數默認為1,所以其實計算環比的時候也可以不設定periods引數,
5. 總結回顧
本篇介紹的資料統計時常用的幾種方法,其中分組統計和透視表是使用比較頻繁的,
上面的示例主要介紹統計的函式,假造的資料非常簡單,其實在資料統計時,統計前清理資料,排序資料等才是耗費時間最長的程序,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/554525.html
標籤:Python
下一篇:返回列表
