pandas深入學習-高階函數(shù)

一、轉置:T函數(shù)

df.T

二、排序:sort函數(shù)

數(shù)據(jù)框排序:

df.sort_values(by = '編號')

數(shù)組排序:

df.編號.sort_values()? ##區(qū)別:這個只顯示對應列

降序:(默認是升序)

df.sort_values(by = '編號',ascending = False)

多列排序:

df.sort_values(['編號','網(wǎng)站情況'] ,ascending = False)

三涣觉、排名賦值:rank函數(shù)

df['rank']=df.編號.rank()

有一個特殊情況: 數(shù)值一樣的話嚷节,排名可以按照不同的方式排列吞鸭,可以在method參數(shù)配置不同的值

df['rank']=df.編號.rank(method='min')

min表示最小值俊扳,也是我們日常見到的

max最大值

默認是平均值

first不考慮并列情況,按照順序排序

四抄淑、查重復值:unique函數(shù),結果顯示的唯一值

針對的是數(shù)組級別

df.網(wǎng)站情況.unique()

五屠凶、對重復計數(shù)value_counts()

針對的是數(shù)組級別

df.網(wǎng)站情況.value_counts()

六、描述統(tǒng)計describe()

針對數(shù)值

df.describe()

指定某一列

df.編號.describe()

所以還可以是這樣的函數(shù)肆资,min阅畴,max,mean

df.max()

分析師好的習慣迅耘,拿到數(shù)據(jù):

df.info()→df.head()→df.describe()

七贱枣、累加函數(shù)cumsum()

這個函數(shù)的功能是返回給定axis上的累計和

df['cumsum']=df.編號.cumsum()

八、分段函數(shù)cut()颤专,按照指分

df['cut']=pd.cut(df.編號,bins=4,labels=list('abcd'))

bins代表等分個數(shù)纽哥,labels表示別名,比如20-30歲少年

###不等分:

df['bin']=pd.cut(df.編號,bins=[0,500,1000,2000])

分為法分段函數(shù)pd.qcut()栖秕,按照排名分

數(shù)據(jù)聚合(與sql中的group by類似)

一春塌、groupby()

###max()最大值,還可以是avg等

df.groupby(by = '網(wǎng)站情況').max()

###指定某列:

df.groupby(by = '網(wǎng)站情況').編號.max()

###多個字段分組簇捍,結果是多重索引

df.groupby(by = ['網(wǎng)站情況','名稱']).編號.max()

###k[0]只壳,k[1]分別表示元組和數(shù)據(jù)框

for k in df.groupby(by = '網(wǎng)站情況'): print(k) 結果是一個元組,每個值是一個數(shù)和一個數(shù)據(jù)框

for k in df.groupby(by = '網(wǎng)站情況'): print(k[1])

###分組后最大值與最小值的差值

for k,v in df.groupby(by = '網(wǎng)站情況'):

????????print(max(v.編號)-min(v.編號))

多表關聯(lián)

三種關聯(lián)函數(shù)

一暑塑、concat(類似于堆疊吼句,類似于sql 的union)

應用場景:表1:1月份銷售明細;表2:2月份銷售明細事格,則可以進行拼接

參數(shù):objs是[a惕艳,b]

axis=1 是左右拼接搞隐,默認為0是上下拼接

兩張表放在一起,字段合并

二远搪、join(針對的是索引)

如果是針對的某一列關聯(lián)劣纲,用merge

多表索引不一致,關聯(lián)后數(shù)據(jù)錯誤谁鳍,一般用在時間索引等

三癞季、merge(根據(jù)介質,也就是某一列)

1倘潜、直接數(shù)據(jù)框使用merge

df.merge()

right是右邊绷柒,on參數(shù)是當兩張表的關鍵字段名一樣時,當兩張表關聯(lián)字段名不一樣時使用right_on=窍荧,left_on

2、pd.merge()

這里多出來一個left參數(shù)

多重索引

一恨憎、groupby的多重索引切片

關鍵點:serise級別可以直接輸入索引標簽進行切片查詢

###第一步得出來是數(shù)據(jù)框形式

df.groupby(by = ['網(wǎng)站情況','編號']).mean()

###第二步等出來結果是Serise

df.groupby(by = ['網(wǎng)站情況','編號']).mean().rank

###第三步對Serise形式數(shù)據(jù)進行篩選

df.groupby(by = ['網(wǎng)站情況','編號']).mean().rank ['未嵌碼']

注意:數(shù)據(jù)框下多重索引需要使用loc

df.groupby(by = ['網(wǎng)站情況','編號']).mean().loc['網(wǎng)站打不開']

二蕊退、多重索引的變化

1、set_index():列名變成索引

df.sort_values(by=['網(wǎng)站情況','編號']).set_index(['網(wǎng)站情況','編號'])

2憔恳、reset_index()索引變成列

df.groupby(by = ['網(wǎng)站情況','編號']).mean().reset_index(['網(wǎng)站情況','編號'])

文本函數(shù)

str()函數(shù)

針對的是這個表格進行操作(也就是字符串)

df.網(wǎng)站情況.str[-1,1]

replace()函數(shù)也是針對表格的具體值替換

當需要針對值里的某個字符替換時瓤荔,則還需要套用一個str()函數(shù)

df.網(wǎng)站情況.str.replace('未','沒有')

去重函數(shù)

1、空值填充fillna

某個值為空值
df.loc[df.名稱 == '扶貧辦','名稱'] = np.NaN

###指定某一列的空值填充

df.名稱=df.名稱.fillna('abc')

###整個數(shù)據(jù)框的空值填充

df = df.fillna('abc')

2钥组、空值行刪除

df.dropna()

3输硝、刪除重復元素

###判斷是否有重復值

df.duplicated()

###索引每一列是否有重復值

df[df.duplicated()]

###去除重復后的數(shù)據(jù)框

df[~df.duplicated()]

drop_duplicates() 直接返回數(shù)據(jù)

apply函數(shù)(自定義函數(shù)應用到列或者行)

1、對某個列

輸入:df.編碼的每一行

輸出:按照匿名函數(shù)lambda x:str(x)+'k'輸出

df.編號.apply(lambda x:str(x)+'k')

等價于

def func(x):?

? ? ? ?return str(x)+'k'?

df.編號.apply(func)??

2程梦、對整個數(shù)據(jù)框:

axis=0表示應用函數(shù)多每個列

axis=1表示應用函數(shù)多每個行

3点把、apply應用在聚合函數(shù)

不同網(wǎng)站情況編號排名前3的

def func(x):

????r = x.sort_values('編號',ascending=False) ????return r[:3]

df.groupby('網(wǎng)站情況').apply(func)

自定義取前幾個:

def func(x,n):

? ? r = x.sort_values('編號',ascending=False)? ??

? ? return r[:n]

df.groupby('網(wǎng)站情況').apply(func,n=3)

4、agg函數(shù)

df.groupby('網(wǎng)站情況').agg('mean')

等價于

df.groupby('網(wǎng)站情況').mean()

agg可以進行多個函數(shù)計算:

df.groupby('網(wǎng)站情況').agg(['mean','sum'])

數(shù)據(jù)透視表函數(shù)pivot_table

df.pivot_table(index= '網(wǎng)站情況',columns='名稱',values='編號')

1屿附、某個字段計算某個函數(shù)郎逃,使用字典:介質對

df.pivot_table(index= '網(wǎng)站情況',columns='名稱',values=['編號','序號'],aggfunc={'編號':np.mean,'序號':len})

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市挺份,隨后出現(xiàn)的幾起案子褒翰,更是在濱河造成了極大的恐慌,老刑警劉巖匀泊,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件优训,死亡現(xiàn)場離奇詭異,居然都是意外死亡各聘,警方通過查閱死者的電腦和手機揣非,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來躲因,“玉大人妆兑,你說我怎么就攤上這事魂拦。” “怎么了搁嗓?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵芯勘,是天一觀的道長。 經(jīng)常有香客問我腺逛,道長荷愕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任棍矛,我火速辦了婚禮安疗,結果婚禮上,老公的妹妹穿的比我還像新娘够委。我一直安慰自己荐类,他們只是感情好,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布茁帽。 她就那樣靜靜地躺著玉罐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪潘拨。 梳的紋絲不亂的頭發(fā)上吊输,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機與錄音铁追,去河邊找鬼季蚂。 笑死,一個胖子當著我的面吹牛琅束,可吹牛的內容都是我干的扭屁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼涩禀,長吁一口氣:“原來是場噩夢啊……” “哼疯搅!你這毒婦竟也來了?” 一聲冷哼從身側響起埋泵,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤幔欧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后丽声,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體礁蔗,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年雁社,在試婚紗的時候發(fā)現(xiàn)自己被綠了浴井。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡霉撵,死狀恐怖磺浙,靈堂內的尸體忽然破棺而出洪囤,到底是詐尸還是另有隱情,我是刑警寧澤撕氧,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布瘤缩,位于F島的核電站,受9級特大地震影響伦泥,放射性物質發(fā)生泄漏剥啤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一不脯、第九天 我趴在偏房一處隱蔽的房頂上張望府怯。 院中可真熱鬧,春花似錦防楷、人聲如沸牺丙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冲簿。三九已至,卻和暖如春肖揣,著一層夾襖步出監(jiān)牢的瞬間民假,已是汗流浹背浮入。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工龙优, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人事秀。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓彤断,卻偏偏與公主長得像,于是被迫代替她去往敵國和親易迹。 傳聞我的和親對象是個殘疾皇子宰衙,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344