亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pandas中transform()結合groupby()怎么用

發布時間:2021-09-09 10:07:38 來源:億速云 閱讀:1275 作者:小新 欄目:開發技術

小編給大家分享一下Pandas中transform()結合groupby()怎么用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

首先,假設我們有如下餐廳數據集:

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]
})

Pandas中transform()結合groupby()怎么用

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

Pandas中transform()結合groupby()怎么用

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

方案一(較麻煩):

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

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

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

得到的 city_sales 如下:

Pandas中transform()結合groupby()怎么用

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

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

Pandas中transform()結合groupby()怎么用
3、最后,求百分比并保留兩位小數,結果如下:

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

Pandas中transform()結合groupby()怎么用

方案二(便捷):

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

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

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

Pandas中transform()結合groupby()怎么用

2

與方案一相同。

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

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

看完了這篇文章,相信你對“Pandas中transform()結合groupby()怎么用”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广河县| 同心县| 和林格尔县| 金溪县| 泰顺县| 尼勒克县| 蚌埠市| 涟水县| 广德县| 江山市| 清苑县| 南京市| 马尔康县| 浠水县| 五常市| 巴中市| 邹城市| 蓝山县| 时尚| 满洲里市| 青岛市| 易门县| 丰宁| 临漳县| 涡阳县| 固镇县| 黄山市| 双城市| 文水县| 库伦旗| 青神县| 大余县| 多伦县| 离岛区| 筠连县| 峡江县| 秦皇岛市| 阿勒泰市| 永州市| 木兰县| 靖西县|