pandas分組計算平均值 Pandas之分組計算

2021-10-13 08:23:13 字數 1732 閱讀 2962

技術總編:張學人

好訊息!!!爬蟲俱樂部將於2023年5月2日至4日在武漢舉行stata程式設計技術五一訓練營,此次採用理論與案例相結合的方式,旨在幫助大家熟悉stata資料分析技巧,能夠通過程式設計讀取不同型別的資料來源、實現複雜資料合併、清洗的程式化,並且熟悉stata核心的爬蟲技術。

我們以auto資料為例,首先執行如下程式:

import pandas aspd

auto=pd.read_stata(r"e:python程式pandasauto.dta") #讀入dta檔案

auto.head() #展示前五行

資料集的前五行如下:

如果我們想要按照foreign來計算**的均值數,可以直接使用 groupby(「foreign」) 進行分組,然後使用 mean() 函式計算中位數,形式如下:

price_m=auto.groupby("foreign")["price"].mean()

print(price_m)

輸出的是乙個series格式的資料:

接下來我們想做的是想要生成一列變數price_m,當屬於國產時price_m等於國產車**的均值;當屬於進口時,price_m等於進口車**的均值。下面我們將price_m使用merge合併到auto資料集(資料集的合併函式merge、join、concat不是本節重點,我們將在之後進行介紹):

auto=auto.merge(price_m,on="foreign") #將price_m並到auto中,按是否進口合併

auto.rename(columns=,inplace=true) #重新命名由於合併auto的price被命名為price_x,price_m被命名為price_y

auto.head()

這樣,我們便將均值資料與原資料集進行了合併:

以上是對單個變數的分組計算,但面對兩個及以上變數時,該如何處理呢?這裡只需將列標籤設定為列表形式,程式如下:

price_m2=auto.groupby(["mpg","foreign"])["price"].mean()

auto=auto.merge(price_m2,on=["foreign","mpg"]) #將price_m2並到auto中,按是否進口合併

auto.rename(columns=,inplace=true) #重新命名

auto.head()

輸出結果如下:

func:我們定義的函式名。

axis:axis=0表示將函式應用於每列;axis=1表示將函式應用於每行。

auto.groupby('foreign').sort_values('price')

def sort(group):

group=group.sort_values("price")

returngroup#定義乙個排序函式,返回按**公升序後的物件

輸出結果也正是我們所需要的:

defmean(df):

df['price_mean'] = df["price"].mean()

returndf #定義對分組後的物件求均值函式

輸出結果:

def fun(df):

df['price_mean']=df["price"]>= df["price"].mean()

returndf

最終結果如下:

投稿要求:

1)必須原創,禁止抄襲;

2)必須準確,詳細,有例子,有截圖;

注意事項:

2)郵件請註明投稿,郵件名稱為「投稿+推文名稱」。

分組統計(平均值計算)

1.以樣地號分組求值,cast as.指轉換型別 decimal 指保留小數點 select 樣地號,cast sum 平均樹高 斷面積 樣地活株數 sum 斷面積 樣地活株數 as decimal 4,2 as 平均樹高 from sheet2 group by 樣地號 2.case.when.t...

pandas求滑動平均值

df.rolling 3,center true mean 如果求最小值 最大值 求和等,可以改變最後面的函式,比如 df.rolling 3,center true min df.rolling 3,center true max df.rolling 3,center true sum 其他引數...

php 平均值,PHP 根據日期值計算平均值

我有乙個帶有日期和評分的陣列.摘錄如下 array 111 0 array 2 date string 19 2018 03 03 17 15 42 rating int 3 1 array 2 date string 19 2018 02 24 09 56 03 rating int 1 2 ar...