人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

Pandas中的 transform()結(jié)合 groupby()用法示例詳解

發(fā)布日期:2022-01-13 18:29 | 文章來源:CSDN

首先,假設(shè)我們有如下餐廳數(shù)據(jù)集:

import pandas as pd
df = pd.DataFrame({
  'restaurant_id': [101,102,103,104,105,106,107],
  'address': ['A','B','C','D', 'E', 'F', 'G'],
  'city': ['London','London','London','Oxford','Oxford', 'Durham', 'Durham'],
  'sales': [10,500,48,12,21,22,14]
})

如果我們想知道:每個餐廳在城市中所占的銷售額百分比是多少?預(yù)期得到的輸出是:

相比于原來的數(shù)據(jù)集,多了兩列,分別是某個城市所有餐廳的銷售總額,以及每個餐廳在城市中所占的銷售額百分比。解決方案有兩個:

方案一(較麻煩):

1、使用 groupby('city') 基于城市進(jìn)行分組,對于這些組中的每一個組,選中其銷售額列 ['sales'],然后使用函數(shù) apply(sum) 或者sum() 對城市的銷售額進(jìn)行求和。

之后,新列被重命名為 city_total_sales 并且索引被重置(注意不能漏了 reset_index() ,因為 groupby('city') 生成的索引是城市,而我們希望城市作為普通列)。

city_sales = df.groupby('city')['sales']
 .sum().rename('city_total_sales').reset_index()

得到的 city_sales 如下:

2、用 merge() 函數(shù)把 city_sales 合并回去,得到的 df_new 如下:

df_new = pd.merge(df, city_sales, how='left')


3、最后,求百分比并保留兩位小數(shù),結(jié)果如下:

df_new['pct'] = df_new['sales'] / df_new['city_total_sales']
df_new['pct'] = df_new['pct'].apply(lambda x: format(x, '.2%'))

方案二(便捷):

1
transform() 函數(shù)在執(zhí)行轉(zhuǎn)換后保留與原始數(shù)據(jù)集相同數(shù)量的項目。因此,使用 groupby() 然后使用 transform(sum) 會返回相同的輸出,結(jié)果如下圖:

df['city_total_sales'] = df.groupby('city')['sales'].transform('sum')

代碼翻譯過來就是:數(shù)據(jù)集基于城市進(jìn)行分組,然后選定銷售額列,對每組的銷售額進(jìn)行求和,返回一個和原列長度一樣的新列。

2

與方案一相同。

df['pct'] = df['sales'] / df['city_total_sales']
df['pct'] = df['pct'].apply(lambda x: format(x, '.2%'))

總結(jié):可以看出,在對 DataFrame 進(jìn)行分組 groupby() 之后,如果是使用 apply() 或者直接使用某個統(tǒng)計函數(shù),得到的新列的長度與分組得到的組數(shù)是一樣的;而如果使用 transform() ,得到的新列與 DataFrame 中列的長度是一樣的

到此這篇關(guān)于Pandas中的 transform()結(jié)合 groupby()用法示例詳解的文章就介紹到這了,更多相關(guān)Pandas groupby() 用法內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部