Pandas分組統計

Pandas是一個強大的數據分析工具,可以用來處理大量的數據,包括分組,匯總和統計等。當面對大量的數據時,經常需要按照特定的標準對數據進行分組,然後對每個組進行統計分析,這時候就需要用到Pandas的分組統計功能。下面將會從多個方面對Pandas分組統計進行詳細闡述。

一、分組

在對數據進行統計時,經常需要將數據進行分組,以便於進行更加精細的統計。在Pandas中,可以使用groupby()函數進行分組,它的基本語法是:

    df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)

其中,參數by表示按照哪列或者哪些列進行分組,也可以是一個函數;axis表示運算軸向,默認為0表示行方向,1表示列方向;level表示按照哪個級別進行分組,多重索引時使用;as_index表示是否以分組列為索引;sort表示分組後是否對結果進行排序;group_keys表示是否總是返回分組鍵作為一級索引;squeeze表示是否對單層索引進行降維操作。

下面是一個通過年齡對數據進行分組的代碼示例:

import pandas as pd

data = {
    'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Tom'],
    'Age': [28, 34, 29, 42, 23],
    'Country': ['US', 'UK', 'UK', 'US', 'US']}
df = pd.DataFrame(data)
print(df.groupby('Age').groups)

上述代碼中,通過groupby()函數按照年齡對數據進行分組,結果列印出各個分組中的索引。

二、匯總

分組完成後,接下來就是匯總統計了。Pandas提供了多種匯總統計方法,包括計數、求和、均值、方差、標準差、最小值和最大值等。

下面是一些常見的匯總統計方法:

  • count(): 統計每個分組中非空值的數量
  • sum(): 統計每個分組中數值的總和
  • mean(): 統計每個分組中數值的平均值
  • median(): 統計每個分組中數值的中位數
  • std(): 統計每個分組中數值的標準差
  • var(): 統計每個分組中數值的方差
  • min(): 統計每個分組中數值的最小值
  • max(): 統計每個分組中數值的最大值

下面是一個對數據進行匯總統計的代碼示例:

import pandas as pd

data = {
    'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Tom'],
    'Age': [28, 34, 29, 42, 23],
    'Country': ['US', 'UK', 'UK', 'US', 'US']}
df = pd.DataFrame(data)
print(df.groupby('Country')['Age'].agg(['count', 'sum', 'mean', 'std', 'min', 'max']))

上述代碼中,按照國家進行分組,並統計各個分組中年齡的count、sum、mean、std、min和max等匯總統計信息。

三、過濾

在進行數據分析時,我們常常需要篩選出滿足某些特定條件的數據,這時候就需要用到過濾功能。在Pandas中,可以使用filter()函數進行過濾,其基本語法是:

    df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs).filter(func, dropna=True)

其中,參數func表示用來進行篩選的函數,其返回值必須是True或False值;dropna表示是否刪除含有缺失值的行,默認為True。

下面是一個對數據進行過濾的代碼示例:

import pandas as pd

data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Tom'], 'Age': [28, 34, 29, 42, 23],
        'City': ['Beijing', 'Shanghai', 'Guangzhou', 'Shanghai', 'Beijing']}
df = pd.DataFrame(data)
df_filtered = df.groupby('City').filter(lambda x: len(x) >= 2)
print(df_filtered)

上述代碼中,按照城市進行分組,然後使用filter()函數對分組後的數據進行過濾,選取城市出現次數大於等於2次的數據,最後列印輸出篩選後的數據。

四、轉換

數據轉換是指在不改變數據結構的前提下,修改數據的值。在Pandas中,可以使用transform()函數進行轉換,其基本語法是:

    df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs).transform(func, axis=0)

其中,參數func表示用來進行轉換的函數;axis表示運算軸向,默認為0表示列方向,1表示行方向。

下面是一個對數據進行轉換的代碼示例:

import pandas as pd

data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Tom'], 'Age': [28, 34, 29, 42, 23],
        'City': ['Beijing', 'Shanghai', 'Guangzhou', 'Shanghai', 'Beijing']}
df = pd.DataFrame(data)
df['Age'] = df.groupby('City')['Age'].transform(lambda x: x.mean())
print(df)

上述代碼中,按照城市進行分組,然後使用transform()函數對分組後的數據進行轉換,將年齡列的值改為每個城市年齡的均值,最後列印輸出轉換後的數據。

五、應用

應用是指對分組後的數據進行操作,如刪除某些行、替換某些值等。在Pandas中,可以使用apply()函數進行操作,其基本語法是:

    df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs).apply(func, *args, **kwargs)

其中,參數func表示進行操作的函數;*args和**kwargs分別表示傳遞給函數的位置參數和關鍵字參數。

下面是一個對數據進行應用的代碼示例:

import pandas as pd

data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Tom'], 'Age': [28, 34, 29, 42, 23],
        'City': ['Beijing', 'Shanghai', 'Guangzhou', 'Shanghai', 'Beijing']}
df = pd.DataFrame(data)
df.groupby('City').apply(lambda x: x.sort_values(by='Age', ascending=False)[:2]).reset_index(drop=True)
print(df)

上述代碼中,按照城市進行分組,然後使用apply()函數對分組後的數據進行操作,選出每個城市中年齡最大的兩個人,並將結果進行合併。最後列印輸出應用後的數據。

六、總結

本文對Pandas分組統計進行了詳細的闡述,主要涉及到分組、匯總、過濾、轉換和應用等不同方面。在實際應用中,可以根據具體需求採取不同的方法進行數據分析和處理。希望本文可以為讀者提供一些參考和幫助。

原創文章,作者:XDGXH,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/372053.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
XDGXH的頭像XDGXH
上一篇 2025-04-23 18:08
下一篇 2025-04-23 18:08

相關推薦

  • Pandas下載whl指南

    本篇文章將從幾個方面為大家詳細解答如何下載Pandas的whl文件。 一、Pandas簡介 Pandas是一個基於Python的軟體庫,主要用於數據分析、清洗和處理。在數據處理方面…

    編程 2025-04-28
  • 如何在Python中安裝和使用Pandas

    本文將介紹如何安裝和使用Python的Pandas庫 一、Pandas庫的介紹 Pandas是Python的一個數據分析庫,提供了許多實用的數據結構和數據分析工具,可以幫助用戶輕鬆…

    編程 2025-04-27
  • 深入解析pandas的drop_duplicates()函數

    在數據處理和清洗過程中,一個經常出現的問題是如何移除重複的數據項。pandas提供了一種方便易用的方式來完成這項任務——drop_duplicates()函數。本文將從多個方面深入…

    編程 2025-04-24
  • 詳解pandas fillna 指定列

    一、fillna的基礎用法 fillna是pandas中一個常用的函數,它用於填充數據框或序列中的空值。我們先來看一個簡單的案例: import pandas as pd impo…

    編程 2025-04-24
  • Pandas apply函數詳解

    Pandas是Python的一個開源數據分析庫,專門用於數據操作和分析。其中apply()函數是Pandas中常用的數據操作函數之一,本文將從多個方面對這個函數進行詳細的闡述。 一…

    編程 2025-04-24
  • Pandas讀取txt文件詳解

    一、pandas讀取txt文件存入excel表 在數據處理中,我們通常將原始數據存儲為txt文件,而pandas提供了很多方法來讀取txt文件。下面我們演示如何將txt文件讀取並存…

    編程 2025-04-22
  • 深入探究pandas遍歷每一行

    pandas是一個強大的Python數據分析庫,它提供了豐富的數據結構和函數,用於數據清洗、數據處理和數據分析。其中,最重要的數據結構之一是DataFrame,它類似於SQL中的表…

    編程 2025-04-13
  • pandas unstack詳解

    一、概述 pandas是一個流行的數據處理庫,而unstack是pandas中一個很常見的操作,它可以將pivot後的表再次變換成我們需要的格式,比如將二維的DataFrame轉變…

    編程 2025-04-12
  • 從多個方面詳解pandas查詢

    一、基礎查詢 pandas作為Python數據分析的重要庫,提供了豐富的數據操作和查詢功能,但需要一定的基礎和經驗。pandas最基礎的查詢功能是根據索引號或者列名進行查詢。 im…

    編程 2025-04-02
  • 如何使用Pandas修改列名

    Pandas是一個用於數據操作和分析的Python庫,它提供了豐富的數據處理工具,包括DataFrame,它是一種二維表格數據結構。在使用DataFrame時,經常需要對列名進行修…

    編程 2025-02-27

發表回復

登錄後才能評論