pandas常用函數(shù)清單

1 import語句

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 
import datetime
import re

2 文件讀取

df = pd.read_csv(path='file.csv')
參數(shù):header=None  用默認列名,0呜舒,1呀癣,2昌执,3...
     names=['A', 'B', 'C'...] 自定義列名
     index_col='A'|['A', 'B'...]  給索引列指定名稱垦细,如果是多重索引擒贸,可以傳list
     skiprows=[0,1,2] 需要跳過的行號干旁,從文件頭0開始盖喷,skip_footer從文件尾開始
     nrows=N 需要讀取的行數(shù)养渴,前N行
     chunksize=M 返回迭代類型TextFileReader雷绢,每M條迭代一次,數(shù)據(jù)占用較大內(nèi)存時使用
     sep=':'數(shù)據(jù)分隔默認是','理卑,根據(jù)文件選擇合適的分隔符翘紊,如果不指定參數(shù),會自動解析
     skip_blank_lines=False 默認為True藐唠,跳過空行帆疟,如果選擇不跳過,會填充NaN
     converters={'col1', func} 對選定列使用函數(shù)func轉換宇立,通常表示編號的列會使用(避免轉換成int)
     
dfjs = pd.read_json('file.json')  可以傳入json格式字符串
dfex = pd.read_excel('file.xls', sheetname=[0,1..]) 讀取多個sheet頁踪宠,返回多個df的字典
     

3 數(shù)據(jù)預處理

df.duplicated()           返回各行是否是上一行的重復行
df.drop_duplicates()      刪除重復行,如果需要按照列過濾妈嘹,參數(shù)選填['col1', 'col2',...]
df.fillna(0)              用實數(shù)0填充na
df.dropna()               axis=0|1  0-index 1-column
                          how='all'|'any' all-全部是NA才刪  any-只要有NA就全刪
del df['col1']            直接刪除某一列              
df.drop(['col1',...], aixs=1)   刪除指定列柳琢,也可以刪除行                          
df.column = col_lst       重新制定列名
df.rename(index={'row1':'A'},   重命名索引名和列名
          columns={'col1':'A1'})  
df.replace(dict)          替換df值,前后值可以用字典表,{1:‘A’, '2':'B'}

def get_digits(str):
    m = re.match(r'(\d+(\.\d+)?)', str.decode('utf-8'))
    if m is not None:   
        return float(m.groups()[0])
    else:
        return 0
df.apply(get_digits)      DataFrame.apply柬脸,只獲取小數(shù)部分痘绎,可以選定某一列或行
df['col1'].map(func)      Series.map,只對列進行函數(shù)轉換

pd.merge(df1, df2, on='col1', 
         how='inner'肖粮,sort=True) 合并兩個DataFrame孤页,按照共有的某列做內(nèi)連接(交集),outter為外連接(并集)涩馆,結果排序
         
pd.merge(df1, df2, left_on='col1', 
         right_on='col2')   df1 df2沒有公共列名行施,所以合并需指定兩邊的參考列


pd.concat([sr1, sr2, sr3,...], axis=0) 多個Series堆疊成多行,結果仍然是一個Series
pd.concat([sr1, sr2, sr3,...], axis=1) 多個Series組合成多行多列魂那,結果是一個DataFrame蛾号,索引取并集,沒有交集的位置填入缺省值NaN
 
df1.combine_first(df2)   用df2的數(shù)據(jù)補充df1的缺省值NaN涯雅,如果df2有更多行鲜结,也一并補上

df.stack()              列旋轉成行,也就是列名變?yōu)樗饕钅妫饕兂啥鄬铀饕ⅲY果是具有多層索引的Series,實際上是把數(shù)據(jù)集拉長

df.unstack()            將含有多層索引的Series轉換為DataFrame蔗候,實際上是把數(shù)據(jù)集壓扁怒允,如果某一列具有較少類別,那么把這些類別拉出來作為列
df.pivot()              實際上是unstack的應用锈遥,把數(shù)據(jù)集壓扁

pd.get_dummies(df['col1'], prefix='key') 某列含有有限個值纫事,且這些值一般是字符串,例如國家所灸,借鑒位圖的思想丽惶,可以把k個國家這一列量化成k列,每列用0爬立、1表示

                        

4 數(shù)據(jù)篩選

df.columns             列名钾唬,返回Index類型的列的集合
df.index               索引名,返回Index類型的索引的集合
df.shape               返回tuple懦尝,行x列
df.head(n=N)           返回前N條
df.tail(n=M)           返回后M條
df.values              值的二維數(shù)組知纷,以numpy.ndarray對象返回
df.index               DataFrame的索引,索引不可以直接賦值修改
df.reindex(index=['row1', 'row2',...]
           columns=['col1', 'col2',...]) 根據(jù)新索引重新排序
df[m:n]                切片陵霉,選取m~n-1行
df[df['col1'] > 1]     選取滿足條件的行
df.query('col1 > 1')   選取滿足條件的行
df.query('col1==[v1,v2,...]') 
df.ix[:,'col1']        選取某一列
df.ix['row1', 'col2']  選取某一元素
df.ix[:,:'col2']       切片選取某一列之前(包括col2)的所有列
df.loc[m:n]            獲取從m~n行(推薦)
df.iloc[m:n]           獲取從m~n-1行
df.loc[m:n-1,'col1':'coln']   獲取從m~n行的col1~coln列


sr=df['col']           取某一列琅轧,返回Series
sr.values              Series的值,以numpy.ndarray對象返回
sr.index               Series的索引踊挠,以index對象返回



5 數(shù)據(jù)運算與排序


df.T                   DataFrame轉置
df1 + df2              按照索引和列相加乍桂,得到并集冲杀,NaN填充
df1.add(df2, fill_value=0) 用其他值填充
df1.add/sub//mul/div   四則運算的方法
df - sr                DataFrame的所有行同時減去Series
df * N                 所有元素乘以N
df.add(sr, axis=0)     DataFrame的所有列同時減去Series


sr.order()             Series升序排列
df.sort_index(aixs=0, ascending=True) 按行索引升序
df.sort_index(by=['col1', 'col2'...])  按指定列優(yōu)先排序
df.rank()              計算排名rank值

6 數(shù)學統(tǒng)計

sr.unique             Series去重
sr.value_counts()     Series統(tǒng)計頻率,并從大到小排序睹酌,DataFrame沒有這個方法
sr.describe()         返回基本統(tǒng)計量和分位數(shù)

df.describe()         按各列返回基本統(tǒng)計量和分位數(shù)
df.count()            求非NA值得數(shù)量
df.max()              求最大值
df.min()              求最大值
df.sum(axis=0)        按各列求和
df.mean()             按各列求平均值
df.median()           求中位數(shù)
df.var()              求方差
df.std()              求標準差
df.mad()              根據(jù)平均值計算平均絕對利差
df.cumsum()           求累計和
sr1.corr(sr2)         求相關系數(shù)
df.cov()              求協(xié)方差矩陣
df1.corrwith(df2)     求相關系數(shù)

pd.cut(array1, bins)  求一維數(shù)據(jù)的區(qū)間分布
pd.qcut(array1, 4)    按指定分位數(shù)進行區(qū)間劃分权谁,4可以替換成自定義的分位數(shù)列表   

df['col1'].groupby(df['col2']) 列1按照列2分組,即列2作為key
df.groupby('col1')    DataFrame按照列1分組
grouped.aggreagte(func) 分組后根據(jù)傳入函數(shù)來聚合
grouped.aggregate([f1, f2,...]) 根據(jù)多個函數(shù)聚合憋沿,表現(xiàn)成多列旺芽,函數(shù)名為列名
grouped.aggregate([('f1_name', f1), ('f2_name', f2)]) 重命名聚合后的列名
grouped.aggregate({'col1':f1, 'col2':f2,...}) 對不同的列應用不同函數(shù)的聚合,函數(shù)也可以是多個


df.pivot_table(['col1', 'col2'], 
               rows=['row1', 'row2'], 
               aggfunc=[np.mean, np.sum]
               fill_value=0,
               margins=True)  根據(jù)row1, row2對col1辐啄, col2做分組聚合采章,聚合方法可以指定多種,并用指定值替換缺省值
               
          
pd.crosstab(df['col1'], df['col2']) 交叉表壶辜,計算分組的頻率


最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末悯舟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子砸民,更是在濱河造成了極大的恐慌抵怎,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岭参,死亡現(xiàn)場離奇詭異反惕,居然都是意外死亡,警方通過查閱死者的電腦和手機冗荸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門承璃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蚌本,你說我怎么就攤上這事“妫” “怎么了程癌?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長轴猎。 經(jīng)常有香客問我嵌莉,道長,這世上最難降的妖魔是什么捻脖? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任锐峭,我火速辦了婚禮,結果婚禮上可婶,老公的妹妹穿的比我還像新娘沿癞。我一直安慰自己,他們只是感情好矛渴,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布椎扬。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚕涤。 梳的紋絲不亂的頭發(fā)上筐赔,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音揖铜,去河邊找鬼茴丰。 笑死,一個胖子當著我的面吹牛天吓,可吹牛的內(nèi)容都是我干的较沪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼失仁,長吁一口氣:“原來是場噩夢啊……” “哼尸曼!你這毒婦竟也來了?” 一聲冷哼從身側響起萄焦,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤控轿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拂封,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茬射,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年冒签,在試婚紗的時候發(fā)現(xiàn)自己被綠了在抛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡萧恕,死狀恐怖刚梭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情票唆,我是刑警寧澤朴读,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站走趋,受9級特大地震影響衅金,放射性物質發(fā)生泄漏。R本人自食惡果不足惜簿煌,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一氮唯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧姨伟,春花似錦惩琉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肆糕。三九已至,卻和暖如春在孝,著一層夾襖步出監(jiān)牢的瞬間诚啃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工私沮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留始赎,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓仔燕,卻偏偏與公主長得像造垛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子晰搀,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎部分 基礎部分的順序:基本語法五辽,類相關的語法,內(nèi)部類的語法外恕,繼承相關的語法杆逗,異常的語法,線程的語...
    子非魚_t_閱讀 31,622評論 18 399
  • 一. Java基礎部分.................................................
    wy_sure閱讀 3,810評論 0 11
  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向對象的用電信息數(shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,954評論 6 13
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理鳞疲,服務發(fā)現(xiàn)罪郊,斷路器,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 家樂_d356閱讀 260評論 0 0