婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 分享Pandas庫中的一些寶藏函數transform()

分享Pandas庫中的一些寶藏函數transform()

熱門標簽:高德地圖標注收入咋樣 鶴壁手機自動外呼系統違法嗎 沈陽防封電銷電話卡 萊蕪電信外呼系統 企業微信地圖標注 B52系統電梯外呼顯示E7 怎么辦理400客服電話 銀川電話機器人電話 地圖標注多個

Pandas函數的核心功能是,既計算了統計值,又保留了明細數據。為了更好地理解transform和agg的不同,下面從實際的應用場景出發進行對比。

aggregation會返回數據的縮減版本,而transformation能返回完整數據的某一變換版本供我們重組。這樣的transformation,輸出的形狀和輸入一致。一個常見的例子是通過減去分組平均值來居中數據。

#數據構造
data = pd.DataFrame(
{"company":['百度', '阿里', '百度', '阿里', '百度', '騰訊', '騰訊', '阿里', '騰訊', '阿里'],
"salary":[43000, 24000, 40000, 39000, 8000, 47000, 25000, 16000, 21000, 38000],
"age":[25, 34, 49, 42, 28, 23, 45, 21, 34, 29]}) 
data
  company  salary  age
0      百度   43000   25
1      阿里   24000   34
2      百度   40000   49
3      阿里   39000   42
4      百度    8000   28
5      騰訊   47000   23
6      騰訊   25000   45
7      阿里   16000   21
8      騰訊   21000   34
9      阿里   38000   29

1、transform作用于Series

1)單個變換函數

當transform作用于單列Series時較為簡單 ,對salary列進行transform變換我們可以傳入任意的非聚合類函數,比如對工資列對數化

import pandas as pd 
import numpy  as np
# 對工資對數化
data['salary'].transform(np.log) 
0    10.668955
1    10.085809
2    10.596635
3    10.571317
4     8.987197
5    10.757903
6    10.126631
7     9.680344
8     9.952278
9    10.545341
Name: salary, dtype: float64

除了內置函數,還可以傳入lambda函數

# lambda函數
data['salary'].transform(lambda s: s+1)
0    43001
1    24001
2    40001
3    39001
4     8001
5    47001
6    25001
7    16001
8    21001
9    38001
Name: salary, dtype: int64

2)多個變換函數

也可以傳入包含多個變換函數的列表來一口氣計算出多列結果:

data['salary'].transform([np.log, lambda s: s+1, np.sqrt])
   log  lambda>        sqrt
0  10.668955     43001  207.364414
1  10.085809     24001  154.919334
2  10.596635     40001  200.000000
3  10.571317     39001  197.484177
4   8.987197      8001   89.442719
5  10.757903     47001  216.794834
6  10.126631     25001  158.113883
7   9.680344     16001  126.491106
8   9.952278     21001  144.913767
9  10.545341     38001  194.935887

而又因為transform傳入的函數,在執行運算時接收的輸入參數是對應的整列數據,所以我們可以利用這個特點實現諸如數據標準化、歸一化等需要依賴樣本整體統計特征的變換過程:

# 利用transform進行數據標準化
data['salary'].transform(lambda s: (s - s.mean()) / s.std())
0    0.991038
1   -0.468630
2    0.760564
3    0.683739
4   -1.697825
5    1.298337
6   -0.391806
7   -1.083228
8   -0.699104
9    0.606915
Name: salary, dtype: float64

2、 transform作用于DataFrame

當transform作用于整個DataFrame時,實際上就是將傳入的所有變換函數作用到每一列中:

data.loc[:,'salary':'age'].transform(lambda s:(s-s.mean()) /s.std())
     salary       age
0  0.991038 -0.832050
1 -0.468630  0.104006
2  0.760564  1.664101
3  0.683739  0.936057
4 -1.697825 -0.520031
5  1.298337 -1.040063
6 -0.391806  1.248075
7 -1.083228 -1.248075
8 -0.699104  0.104006
9  0.606915 -0.416025

而當傳入多個變換函數時,對應的返回結果格式類似agg中的機制,會生成MultiIndex格式的字段名

data.loc[:, 'salary': 'age'].transform([np.log, lambda s: s+1])
  salary                age         
         log lambda>       log lambda>
0  10.668955    43001  3.218876       26
1  10.085809    24001  3.526361       35
2  10.596635    40001  3.891820       50
3  10.571317    39001  3.737670       43
4   8.987197     8001  3.332205       29
5  10.757903    47001  3.135494       24
6  10.126631    25001  3.806662       46
7   9.680344    16001  3.044522       22
8   9.952278    21001  3.526361       35
9  10.545341    38001  3.367296       30

而且由于作用的是DataFrame,還可以利用字典以鍵值對的形式,一口氣為每一列配置單個或多個變換函數:

(data.loc[:, 'salary': 'age']
.transform({'age': lambda s: (s - s.mean()) / s.std(),
                'salary': [np.log, np.sqrt]}))
   age     salary            
   lambda>        log        sqrt
0 -0.832050  10.668955  207.364414
1  0.104006  10.085809  154.919334
2  1.664101  10.596635  200.000000
3  0.936057  10.571317  197.484177
4 -0.520031   8.987197   89.442719
5 -1.040063  10.757903  216.794834
6  1.248075  10.126631  158.113883
7 -1.248075   9.680344  126.491106
8  0.104006   9.952278  144.913767
9 -0.416025  10.545341  194.935887

3、transform作用于groupby分組后

在原來的數據中,我們知道了如何求不同公司的平均薪水,假如需要在原數據集中新增一列salary_mean,代表該公司的平均薪水,該怎么實現呢?

data['salary_mean'] = data.groupby('company')[['salary']].transform('mean')
data 
  company  salary  age   salary_mean
0      百度   43000   25  30333.333333
1      阿里   24000   34  29250.000000
2      百度   40000   49  30333.333333
3      阿里   39000   42  29250.000000
4      百度    8000   28  30333.333333
5      騰訊   47000   23  31000.000000
6      騰訊   25000   45  31000.000000
7      阿里   16000   21  29250.000000
8      騰訊   21000   34  31000.000000
9      阿里   38000   29  29250.000000

通過上面的數據可以看出,利用transform輸出既得到了統計數據,形狀也沒有變化。

當然,也可對多個數據列進行計算

data.groupby('company')[['salary', 'age']].transform('mean')
         salary   age
0  30333.333333  34.0
1  29250.000000  31.5
2  30333.333333  34.0
3  29250.000000  31.5
4  30333.333333  34.0
5  31000.000000  34.0
6  31000.000000  34.0
7  29250.000000  31.5
8  31000.000000  34.0
9  29250.000000  31.5

我們也可以用map函數實現類似的功能,但是稍微復雜點,但是有助于我們理解transform的含義。

avg_dict = data.groupby('company')['salary'].mean().to_dict()
avg_dict#得到了一個平均工資的字典
{'百度': 30333.333333333332, '騰訊': 31000.0, '阿里': 29250.0}
#利用map函數,將得到的字典映射到對應的列
data['salary_mean'] = data['company'].map(avg_dict)
data
company  salary  age   salary_mean
0      百度   43000   25  30333.333333
1      阿里   24000   34  29250.000000
2      百度   40000   49  30333.333333
3      阿里   39000   42  29250.000000
4      百度    8000   28  30333.333333
5      騰訊   47000   23  31000.000000
6      騰訊   25000   45  31000.000000
7      阿里   16000   21  29250.000000
8      騰訊   21000   34  31000.000000
9      阿里   38000   29  29250.000000

以圖解的方式來看看進行groupby后transform的實現過程(公司列包含ABC,salary列為每個員工的工資明細):

上圖中的大方框是transform和agg 所不一樣的地方,對agg而言,會計算并聚合得到 A,B,C 公司對應的均值并直接返回,每個公司一條數據,但對transform而言,則會對每一條數據求得相應的結果,同一組內的樣本會有相同的值,組內求完均值后會按照原索引的順序返回結果。

以上就是分享Pandas中的一些寶藏函數transform()的詳細內容,更多關于Pandas函數transform()的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • pandas數據分組groupby()和統計函數agg()的使用
  • pandas之分組groupby()的使用整理與總結
  • Pandas中的 transform()結合 groupby()用法示例詳解

標簽:銀川 安慶 葫蘆島 三亞 呼倫貝爾 烏魯木齊 呼倫貝爾 湘西

巨人網絡通訊聲明:本文標題《分享Pandas庫中的一些寶藏函數transform()》,本文關鍵詞  分享,Pandas,庫,中的,一些,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《分享Pandas庫中的一些寶藏函數transform()》相關的同類信息!
  • 本頁收集關于分享Pandas庫中的一些寶藏函數transform()的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    蜜桃久久av一区| 2021久久国产精品不只是精品| 欧美群妇大交群中文字幕| 亚洲天堂av一区| 99久久er热在这里只有精品66| 欧美激情在线观看视频免费| 国产乱子伦一区二区三区国色天香| 日韩欧美一区二区不卡| 久99久精品视频免费观看| 精品久久一二三区| 粉嫩一区二区三区在线看| 国产精品色眯眯| 91丨九色丨蝌蚪丨老版| 亚洲国产一区二区在线播放| 欧美人动与zoxxxx乱| 蜜臀久久99精品久久久久宅男| 精品久久久久久无| 国产成人av自拍| 亚洲欧美偷拍三级| 欧美日韩黄色一区二区| 久久精品av麻豆的观看方式| 久久众筹精品私拍模特| 97精品久久久午夜一区二区三区| 一区二区三区av电影| 欧美妇女性影城| 国产在线播精品第三| 亚洲国产成人午夜在线一区| 91在线无精精品入口| 亚洲成人免费视| 精品国产伦一区二区三区观看方式 | 欧美老肥妇做.爰bbww| 中文字幕国产一区二区| 欧美三级电影网站| 捆绑紧缚一区二区三区视频 | 蜜臀a∨国产成人精品| 欧美精品一区男女天堂| 99在线精品观看| 日韩成人一级片| 国产精品久久久久久久久免费樱桃| 色94色欧美sute亚洲13| 男女男精品视频| 亚洲欧洲日产国码二区| 日韩视频一区二区三区| 97久久超碰精品国产| 美美哒免费高清在线观看视频一区二区 | 欧美日韩另类国产亚洲欧美一级| 日本成人在线一区| 国产午夜精品福利| 色狠狠色噜噜噜综合网| 看国产成人h片视频| 中文字幕中文乱码欧美一区二区 | 亚洲图片激情小说| 欧美一级生活片| 99久久伊人久久99| 美国欧美日韩国产在线播放| 亚洲人吸女人奶水| 亚洲精品在线免费播放| 欧美性猛交xxxx乱大交退制版| 国产一区二区三区免费在线观看| 亚洲自拍偷拍欧美| 中文一区二区完整视频在线观看| 欧美电影一区二区| 日本高清不卡视频| 成人网男人的天堂| 青青草视频一区| 亚洲一区自拍偷拍| 国产精品美女久久福利网站| 精品sm捆绑视频| 在线播放日韩导航| 在线看国产日韩| 成人午夜激情在线| 精品一区二区三区在线观看国产| 亚洲一级二级三级| 亚洲桃色在线一区| 国产精品免费视频一区| 国产亚洲短视频| 精品国产髙清在线看国产毛片 | 91国内精品野花午夜精品 | 色婷婷av一区二区三区软件| 成人国产精品免费观看动漫| 激情综合网av| 老司机精品视频一区二区三区| 亚欧色一区w666天堂| 亚洲裸体xxx| 国产精品久久久久久久午夜片| 精品国产制服丝袜高跟| 欧美成人猛片aaaaaaa| 欧美一区二区私人影院日本| 欧美三片在线视频观看| 欧美午夜免费电影| 欧美日韩中文字幕一区| 欧美又粗又大又爽| 色婷婷狠狠综合| 色噜噜狠狠色综合欧洲selulu| 成人av在线观| 91蜜桃免费观看视频| 91麻豆精品秘密| 老司机一区二区| 欧美日韩国产一二三| 欧美在线制服丝袜| 精品一区二区免费看| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲欧洲日本在线| 国内精品伊人久久久久av影院| 美女视频黄久久| 韩国一区二区三区| 国内成人精品2018免费看| 狠狠网亚洲精品| 国产麻豆精品一区二区| 国产福利一区二区三区视频| 国产成人亚洲综合a∨猫咪| 国产+成+人+亚洲欧洲自线| 成人高清av在线| 成人h动漫精品一区二区| 91麻豆国产自产在线观看| 欧美三片在线视频观看| 欧美伦理影视网| 日韩精品一区二区三区swag| 久久久综合激的五月天| 国产精品久久久久婷婷二区次| 亚洲视频一区二区在线观看| 亚洲另类春色校园小说| 亚洲国产乱码最新视频| 日韩激情视频网站| 国产麻豆视频一区二区| 99视频精品在线| 欧美视频一区二区三区在线观看| 91精品蜜臀在线一区尤物| 精品999在线播放| 国产精品护士白丝一区av| 一区二区三区不卡在线观看| 美腿丝袜亚洲色图| 波多野结衣一区二区三区| 欧美综合在线视频| 精品国产第一区二区三区观看体验| 欧美韩日一区二区三区| 一区二区三区在线观看视频| 首页国产欧美日韩丝袜| 国产另类ts人妖一区二区| 一本久道久久综合中文字幕| 久久久久久久网| 艳妇臀荡乳欲伦亚洲一区| 精一区二区三区| 99视频一区二区| 欧美一区二区三区成人| 中国色在线观看另类| 亚洲成人动漫在线免费观看| 国产一区三区三区| 色成年激情久久综合| 亚洲精品一区二区精华| 一区二区三区四区视频精品免费 | 精品国产成人系列| 一区二区三区欧美视频| 国产一区二三区| 在线观看欧美黄色| 国产网站一区二区| 视频一区二区国产| 91尤物视频在线观看| 精品国产3级a| 亚洲夂夂婷婷色拍ww47| 成人免费电影视频| 欧美v亚洲v综合ⅴ国产v| 亚洲精选视频在线| 国产成人免费高清| 欧美一区二区三区在线观看| 亚洲美女偷拍久久| 国产a精品视频| 日韩女优视频免费观看| 亚洲国产中文字幕| 91蝌蚪国产九色| 国产精品丝袜黑色高跟| 极品销魂美女一区二区三区| 欧美日韩精品欧美日韩精品一 | 色综合婷婷久久| 亚洲精品一区二区三区蜜桃下载| 亚洲电影在线免费观看| 成人蜜臀av电影| 久久奇米777| 人人精品人人爱| 欧美日韩在线一区二区| 亚洲视频1区2区| 丰满放荡岳乱妇91ww| 久久新电视剧免费观看| 美女mm1313爽爽久久久蜜臀| 欧美日本在线观看| 亚洲专区一二三| 在线观看国产日韩| 亚洲欧美一区二区在线观看| 国产 欧美在线| 久久精品视频在线看| 国产专区综合网| 日韩欧美高清在线| 免费xxxx性欧美18vr| 欧美日韩国产高清一区| 亚洲福利一二三区| 欧美日韩一区视频| 五月天精品一区二区三区| 欧美色网一区二区| 一区二区免费在线播放| 色一情一乱一乱一91av|