常用方法及函數(shù)★★

(文章待完善)
注意1:pandas本身包含很多函數(shù)pandas.method(obj)码秉,通常簡(jiǎn)寫為pd.method(df),df表示待處理“對(duì)象”(最常見的是Series和DataFrame對(duì)象)窑滞;而pandas產(chǎn)生的“對(duì)象”也包含自己的方法,通常以df.method()形式調(diào)用恢筝。部分函數(shù)和方法實(shí)現(xiàn)的是完全相同的功能哀卫,因此兩種方法都可使用,實(shí)際上前者是“函數(shù)式編程”撬槽,后者是“面向?qū)ο缶幊獭贝烁摹@缗袛嘁粋€(gè)DataFrame對(duì)象df是否含有null值,既可以用pd.isnull(df)也可以用df.isnull()侄柔。
注意2:pandas為了保護(hù)源數(shù)據(jù)共啃,對(duì)DataFrame對(duì)象的操作一般都不會(huì)更改源數(shù)據(jù),除非在函數(shù)中加上“inplace=True”暂题,該語句在下面的大部分方法和函數(shù)中都有移剪。
注意3df.method()表示對(duì)整個(gè)DataFrame進(jìn)行操作;而df[['col1','col2',…]].method():表示對(duì)指定列進(jìn)行相應(yīng)的操作薪者。通常前者返回針對(duì)整個(gè)DataFrame的結(jié)果挂滓,而后者返回指針對(duì)相應(yīng)列的結(jié)果。下面都以df.method()形式描述各種方法啸胧,對(duì)應(yīng)方法換成df[['col1','col2',…]].method()就是對(duì)指定列的操作。但需要注意幔虏,某些方法并不適用于Dataframe操作纺念,而某些反復(fù)也只針對(duì)列操作,根據(jù)實(shí)際情況而定想括。

導(dǎo)入包

import pandas as pd

1. 創(chuàng)建對(duì)象

df = pd.DataFrame(data=, columns=, index=)
s = pd.Series(data=, index=)

2. 數(shù)據(jù)導(dǎo)入

pd.read_csv(filename):從CSV文件導(dǎo)入數(shù)據(jù)
pd.read_table(filename):從限定分隔符的文本文件導(dǎo)入數(shù)據(jù)
pd.read_excel(filename):從Excel文件導(dǎo)入數(shù)據(jù)
pd.read_sql(query, connection_object):從SQL表/庫(kù)導(dǎo)入數(shù)據(jù)
pd.read_json(json_string):從JSON格式的字符串導(dǎo)入數(shù)據(jù)
pd.read_html(url):解析URL陷谱、字符串或者HTML文件
pd.read_clipboard():從粘貼板獲取內(nèi)容
pd.DataFrame(dict):從字典對(duì)象導(dǎo)入數(shù)據(jù)

3. 數(shù)據(jù)導(dǎo)出

df.to_csv(filename):導(dǎo)出數(shù)據(jù)到CSV文件
df.to_excel(filename):導(dǎo)出數(shù)據(jù)到Excel文件
df.to_sql(table_name, connection_object):導(dǎo)出數(shù)據(jù)到SQL表
df.to_json(filename):以Json格式導(dǎo)出數(shù)據(jù)到文本文件

4. 數(shù)據(jù)查看

df.head(n):查看DataFrame對(duì)象的前n行
df.tail(n):查看DataFrame對(duì)象的最后n行
df.shape():查看行數(shù)和列數(shù)
df.info():查看索引、數(shù)據(jù)類型瑟蜈、每列非數(shù)烟逊、內(nèi)存信息
df.dtypes:返回每一列的數(shù)據(jù)類型
df.index:返回每一行的“行標(biāo)簽”列表
df.columns:返回每一列的“列標(biāo)簽”列表
df.values:返回“值”,是numpy.ndarray類型
df.count():返回每一行或列包含的非空數(shù)據(jù)個(gè)數(shù)铺根,不包括None, NaN, NaT
df['col1'].unique():查看某一列內(nèi)有哪些不同的值
df.describe():查看數(shù)據(jù)值列的匯總統(tǒng)計(jì)
df.max():返回每一列的最大值
df.min():返回每一列的最小值
df.median():返回每一列的中位數(shù)
df.mean():返回所有列的均值
df.corr():返回列與列之間的相關(guān)系數(shù)
df.std():返回每一列的標(biāo)準(zhǔn)差

s.value_counts(dropna=False):查看Series對(duì)象的唯一值宪躯、重復(fù)值和計(jì)數(shù)
s.values: 抽取Series對(duì)象的數(shù)據(jù)
s.index: 抽取Series對(duì)象的索引
df.apply(pd.Series.value_counts):查看DataFrame對(duì)象中每一列的唯一值和計(jì)數(shù)
說明:apply的用處很多,比如可以通過跟lambda函數(shù)聯(lián)合位迂,完成很多功能:將包含某個(gè)部分的元素挑出來等等访雪。

5. 數(shù)據(jù)選取

一般選取
df[ ['列1' ,'列2'…]]:取單列或多列详瑞,不能用連續(xù)方式取,也不能用于取行臣缀。
df[ i:j ]:起始行下標(biāo)(i)和終止行下標(biāo)(j)取單行或者連續(xù)多行坝橡,不能用于列的選取。
df.列名:只用于取單列精置,不能用于行计寇。
df.loc[行名,列名]:用對(duì)象的.loc[]方法實(shí)現(xiàn)各種取數(shù)據(jù)方式。
df.iloc[行下標(biāo),列下標(biāo)]:用對(duì)象的.iloc[]方法實(shí)現(xiàn)各種取數(shù)據(jù)方式脂倦。**
更詳細(xì)參見:https://blog.csdn.net/xtfge0915/article/details/52938740
df.values:獲取所有數(shù)據(jù)
df.values[i]:獲取第i行數(shù)據(jù)
df.values[i][j]:獲取第i行j列數(shù)據(jù)
條件選取
df[df.a>0]:選擇a列中元素>0的所有行
df[(df.a>0) & (df.b<0)]:選擇a列中元素>0同時(shí)b列中元素<0的所有行
df[列l(wèi)ist] [df.a>0]:在a列中元素>0的所有行中番宁,抽取‘列l(wèi)ist’指定列的數(shù)據(jù)
df[列l(wèi)ist] [(df.a>0) & (df.b<0)]:關(guān)系同上
詳見:http://www.reibang.com/p/9e904db7a2a7

(待增加)
自帶函數(shù)?狼讨?贝淤??政供?播聪??布隔?离陶??衅檀?招刨?
df.query():

排序

df.sort_values():按照某列或某幾列(某行或某幾行)多樣化排序。
df.sort_index():默認(rèn)按照index或columns排序(推薦)哀军,也可當(dāng).sort_values()使用(不推薦)沉眶。
詳見:http://www.reibang.com/p/f0ed06cd5003

數(shù)據(jù)清洗

列索引(columns)處理

df.columns = ['a','b','c']:直接重命名列標(biāo)簽
df.rename():批量或者單個(gè)更改列標(biāo)簽

行索引(index)處理

df.set_index():將某列作為行索引,可處理多重索引
df.reset_index():更改行索引杉适,可處理多重索引

判斷某值是否存在

df.isin([……]):判斷[……]內(nèi)的元素是否在df中谎倔,返回一個(gè)與df同維的bool型DataFrame

null和na處理

pd.isnull(df)或df.isnull():判斷哪些是null,返回一個(gè)與df同維的bool型DataFrame
pd.isna(df)或df.isna():判斷哪些是null猿推,返回一個(gè)與df同維的bool型DataFrame
pd.notnull(df)或df.notnull():判斷哪些不是null片习,返回一個(gè)與df同維的bool型DataFrame
pd.notna(df)或df.notna():判斷哪些不是na,返回一個(gè)與df同維的bool型DataFrame
df.fillna(value):用value填充所有的空值

df['列名'].isna()蹬叭、df['列名'].isnull()藕咏、df['列名'].notna()、df['列名'].notnull():判斷某列是否有空值秽五,返回列同維布爾值孽查。
df['列名'].fillna(value):用value填充某列所有空值

df.dropna(axis=, how=):刪除所有包含空值的行(axis=0)或列(axis=1),how='any'只要出現(xiàn)一個(gè)空值就刪坦喘,how='all'只有當(dāng)所以值空才刪卦碾。
df['列名'].dropna():刪除某列的空值

重復(fù)數(shù)據(jù)判斷處理

df.duplicated(subset=['col1','col2',……],keep=) 等同于df[['col1','col2',……]].duplicated(keep=):返回一個(gè)與“行數(shù)”同維的bool型Series對(duì)象铺坞,標(biāo)True的行表示,這些行里面某幾列(由['列名'list]指定)或所有列都相同洲胖。keep='first'/'last'/False济榨。'first':第一次出現(xiàn)的行不標(biāo)注True;'表示':最后一次出現(xiàn)的行不標(biāo)注True绿映;False(無引號(hào)):所有滿足要求的行都表True擒滑。
df.duplicated():標(biāo)出完全相同的行,且第一次出現(xiàn)那行不標(biāo)注叉弦。
df.duplicated(subset=['age','id'] ,keep=False):比較‘a(chǎn)ge’和‘id’這兩列完全相同的行丐一,并全部標(biāo)注為True,比如第2行:age=5淹冰,id=123库车;第7行:age=5,id=123樱拴,顯然第2行和第7行在age和id這兩個(gè)維度上是完全相同的柠衍,那么這兩行都將被標(biāo)注為True。該結(jié)果同df[['city','price']].duplicated(keep=False)晶乔。

df.drop_duplicates(subset=['col1','col2',……],keep=):參數(shù)作用完全同上珍坊,該函數(shù)是刪除選定列內(nèi)相同行所在的整行,返回的是一個(gè)刪除了指定行后的DataFrame對(duì)象正罢。df[['col1','col2',……]].drop_duplicates(keep=)返回的是指定列中刪除了相同行的剩余結(jié)果阵漏,只有指定列。

數(shù)據(jù)替換

df.replace():?jiǎn)沃捣摺⒍嘀档榷喾N替換方式履怯。https://blog.csdn.net/kancy110/article/details/72719340/

大小寫轉(zhuǎn)換

df['列名'].str.lower():將某列中所有的大寫字母改小寫(只適用于單列)

數(shù)據(jù)類型轉(zhuǎn)換

df.astype():數(shù)據(jù)類型轉(zhuǎn)換

數(shù)據(jù)處理(待完善)

df.groupby(col):返回一個(gè)按列col進(jìn)行分組的Groupby對(duì)象
df.groupby(col1).agg(np.mean):返回按列col1分組的所有列的均值
df.pivot_table(index=col1, values=[col2,col3], aggfunc=max):創(chuàng)建一個(gè)按列col1進(jìn)行分組,并計(jì)算col2和col3的最大值的數(shù)據(jù)透視表
df.sample():重采樣
apply()
agg()
map()
mapapply()

數(shù)據(jù)合并

pd.merge():根據(jù)一個(gè)或多個(gè)鍵將不同DataFrame中的行連接起來
df1.append(df2):將df2中的行添加到df1的尾部
df.concat([df1, df2],axis=1):將df2中的列添加到df1的尾部
df1.join(df2,on=col1,how='inner'):對(duì)df1的列和df2的列執(zhí)行SQL形式的join

Pandas支持的數(shù)據(jù)類型

int 整型
float 浮點(diǎn)型
bool 布爾類型
object 字符串類型
category 種類
datetime 時(shí)間類型

參考文章:

參考博客(重要):https://blog.csdn.net/brucewong0516/article/details/81782312
其他:https://blog.csdn.net/qq_42415326/article/details/89678833
pandas官網(wǎng):http://pandas.pydata.org/
pandas官方文檔:http://pandas.pydata.org/pandas-docs/stable/index.html
pandas部分用法:https://link.zhihu.com/?target=https%3A//www.dataquest.io/blog/pandas-cheat-sheet/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末裆泳,一起剝皮案震驚了整個(gè)濱河市虑乖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晾虑,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仅叫,死亡現(xiàn)場(chǎng)離奇詭異帜篇,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)诫咱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門笙隙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人坎缭,你說我怎么就攤上這事竟痰∏┕常” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵坏快,是天一觀的道長(zhǎng)铅檩。 經(jīng)常有香客問我,道長(zhǎng)莽鸿,這世上最難降的妖魔是什么昧旨? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮祥得,結(jié)果婚禮上兔沃,老公的妹妹穿的比我還像新娘。我一直安慰自己级及,他們只是感情好乒疏,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著饮焦,像睡著了一般怕吴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上追驴,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天械哟,我揣著相機(jī)與錄音,去河邊找鬼殿雪。 笑死暇咆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的丙曙。 我是一名探鬼主播爸业,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼亏镰!你這毒婦竟也來了扯旷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤索抓,失蹤者是張志新(化名)和其女友劉穎钧忽,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逼肯,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡耸黑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了篮幢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片大刊。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖三椿,靈堂內(nèi)的尸體忽然破棺而出缺菌,到底是詐尸還是另有隱情葫辐,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布伴郁,位于F島的核電站耿战,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蛾绎。R本人自食惡果不足惜昆箕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望租冠。 院中可真熱鬧鹏倘,春花似錦、人聲如沸顽爹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽镜粤。三九已至捏题,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肉渴,已是汗流浹背公荧。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留同规,地道東北人循狰。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像券勺,于是被迫代替她去往敵國(guó)和親绪钥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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