濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Pandas中的 transform()結(jié)合 groupby()用法示例詳解

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

熱門標(biāo)簽:哈爾濱外呼系統(tǒng)代理商 南昌辦理400電話怎么安裝 湛江電銷防封卡 徐州天音防封電銷卡 不錯(cuò)的400電話辦理 佛山防封外呼系統(tǒng)收費(fèi) 電話機(jī)器人適用業(yè)務(wù) 獲客智能電銷機(jī)器人 鄭州智能外呼系統(tǒng)運(yùn)營(yíng)商

首先,假設(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]
})

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

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

方案一(較麻煩):

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

之后,新列被重命名為 city_total_sales 并且索引被重置(注意不能漏了 reset_index() ,因?yàn)?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ù)量的項(xiàng)目。因此,使用 groupby() 然后使用 transform(sum) 會(huì)返回相同的輸出,結(jié)果如下圖:

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

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

2、

與方案一相同。

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

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

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

您可能感興趣的文章:
  • pandas數(shù)據(jù)分組groupby()和統(tǒng)計(jì)函數(shù)agg()的使用
  • pandas之分組groupby()的使用整理與總結(jié)
  • 分享Pandas庫(kù)中的一些寶藏函數(shù)transform()

標(biāo)簽:蕪湖 安康 吉安 懷化 廣西 呂梁 紹興 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Pandas中的 transform()結(jié)合 groupby()用法示例詳解》,本文關(guān)鍵詞  Pandas,中的,transform,結(jié)合,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Pandas中的 transform()結(jié)合 groupby()用法示例詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Pandas中的 transform()結(jié)合 groupby()用法示例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    桃园市| 小金县| 望城县| 三河市| 丰城市| 临澧县| 漳平市| 祁门县| 开化县| 图木舒克市| 邵武市| 灵丘县| 寿阳县| 新丰县| 富阳市| 米脂县| 大洼县| 元谋县| 鹤岗市| 华安县| 渑池县| 兴海县| 石泉县| 玉树县| 广河县| 绵阳市| 黄冈市| 松溪县| 南汇区| 河曲县| 盐山县| 安多县| 于都县| 兰西县| 永宁县| 麟游县| 政和县| 晋州市| 绵竹市| 牡丹江市| 江川县|