編者薦語(yǔ)用Python做數(shù)據(jù)分析光是掌握numpy和matplotlib可不夠,Pandas是必須要掌握的一個(gè)重點(diǎn),numpy雖然能夠幫我們處理處理數(shù)值型數(shù)據(jù),但是這還不夠,很多時(shí)候,我們的數(shù)據(jù)除了數(shù)值之外,還有字符串,還有時(shí)間序列等。轉(zhuǎn)載自 | AI算法與圖像處理今天來(lái)分享一些Pandas必會(huì)的用法,讓你的數(shù)據(jù)分析水平更上一層樓。
一、Pandas兩大數(shù)據(jù)結(jié)構(gòu)的創(chuàng)建
序號(hào)方法說(shuō)明
1pd.Series(對(duì)象,index=[ ])創(chuàng)建Series。對(duì)象可以是列表\ndarray、字典以及DataFrame中的某一行或某一列
2pd.DataFrame(data,columns = [ ],index = [ ])創(chuàng)建DataFrame。columns和index為指定的列、行索引,并按照順序排列
舉例:用pandas創(chuàng)建數(shù)據(jù)表:
df = pd.DataFrame({'id':[1001,1002,1003,1004,1005,1006],
'date':pd.date_range('20130102', periods=6),
'city':['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],
'age':[23,44,54,32,34,32],
'category':['100-A','100-B','110-A','110-C','210-A','130-F'],
'price':[1200,np.nan,2133,5433,np.nan,4432]},
columns =['id','date','city','category','age','price'])
二、DataFrame常見(jiàn)方法
序號(hào)方法說(shuō)明
1df.head()查詢數(shù)據(jù)的前五行
2df.tail()查詢數(shù)據(jù)的末尾5行
3pandas.qcut()基于秩或基于樣本分位數(shù)將變量離散化為等大小桶
4pandas.cut()基于分位數(shù)的離散化函數(shù)
5pandas.date_range()返回一個(gè)時(shí)間索引
6df.apply()沿相應(yīng)軸應(yīng)用函數(shù)
7Series.value_counts()返回不同數(shù)據(jù)的計(jì)數(shù)值
8df.reset_index()重新設(shè)置index,參數(shù)drop = True時(shí)會(huì)丟棄原來(lái)的索引,設(shè)置新的從0開(kāi)始的索引,常與groupby()一起用
舉例:重新索引
df_inner.reset_index()
三、數(shù)據(jù)索引
序號(hào)方法說(shuō)明
1.values將DataFrame轉(zhuǎn)換為ndarray二維數(shù)組
2.append(idx)連接另一個(gè)Index對(duì)象,產(chǎn)生新的Index對(duì)象
3.insert(loc,e)在loc位置增加一個(gè)元素
4.delete(loc)刪除loc位置處的元素
5.union(idx)計(jì)算并集
6.intersection(idx)計(jì)算交集
7.diff(idx)計(jì)算差集,產(chǎn)生新的Index對(duì)象
8.reindex(index, columns ,fill_value, method, limit, copy )改變、重排Series和DataFrame索引,會(huì)創(chuàng)建一個(gè)新對(duì)象,如果某個(gè)索引值當(dāng)前不存在,就引入缺失值。
9.drop()刪除Series和DataFrame指定行或列索引。
10.loc[行標(biāo)簽,列標(biāo)簽]通過(guò)標(biāo)簽查詢指定的數(shù)據(jù),第一個(gè)值為行標(biāo)簽,第二值為列標(biāo)簽。
11df.iloc[行位置,列位置]通過(guò)默認(rèn)生成的數(shù)字索引查詢指定的數(shù)據(jù)。
舉例:按索引提取單行的數(shù)值
df_inner.loc[3]
四、DataFrame選取和重新組合數(shù)據(jù)的方法
序號(hào)方法說(shuō)明
1df[val]從DataFrame選取單列或一組列;在特殊情況下比較便利:布爾型數(shù)組(過(guò)濾行)、切片(行切片)、或布爾型DataFrame(根據(jù)條件設(shè)置值)
2df.loc[val]通過(guò)標(biāo)簽,選取DataFrame的單個(gè)行或一組行
3df.loc[:,val]通過(guò)標(biāo)簽,選取單列或列子集
4df.1oc[val1,val2]通過(guò)標(biāo)簽,同時(shí)選取行和列
5df.iloc[where]通過(guò)整數(shù)位置,從DataFrame選取單個(gè)行或行子集
6df.iloc[where_i,where_j]通過(guò)整數(shù)位置,同時(shí)選取行和列
7df.at[1abel_i,1abel_j]通過(guò)行和列標(biāo)簽,選取單一的標(biāo)量
8df.iat[i,j]通過(guò)行和列的位置(整數(shù)),選取單一的標(biāo)量
9reindex通過(guò)標(biāo)簽選取行或列
10get_value通過(guò)行和列標(biāo)簽選取單一值
11set_value通過(guò)行和列標(biāo)簽選取單一值
舉例:使用iloc按位置區(qū)域提取數(shù)據(jù)
df_inner.iloc[:3,:2] #冒號(hào)前后的數(shù)字不再是索引的標(biāo)簽名稱,而是數(shù)據(jù)所在的位置,從0開(kāi)始,前三行,前兩列。
五、排序
序號(hào)函數(shù)說(shuō)明
1.sort_index(axis=0, ascending=True)根據(jù)指定軸索引的值進(jìn)行排序
2Series.sort_values(axis=0, ascending=True)只能根據(jù)0軸的值排序。
3DataFrame.sort_values(by, axis=0, ascending=True)參數(shù)by為axis軸上的某個(gè)索引或索引列表。
舉例:按照索引列排序
df_inner.sort_index()
六、相關(guān)分析和統(tǒng)計(jì)分析
序號(hào)方法說(shuō)明
1.idxmin()計(jì)算數(shù)據(jù)最小值所在位置的索引(自定義索引)
2.idxmax()計(jì)算數(shù)據(jù)最大值所在位置的索引(自定義索引)
3.argmin()計(jì)算數(shù)據(jù)最小值所在位置的索引位置(自動(dòng)索引)
4.argmax()計(jì)算數(shù)據(jù)最大值所在位置的索引位置(自動(dòng)索引)
5.describe()針對(duì)各列的多個(gè)統(tǒng)計(jì)匯總,用統(tǒng)計(jì)學(xué)指標(biāo)快速描述數(shù)據(jù)的概要
6.sum()計(jì)算各列數(shù)據(jù)的和
7.count()非NaN值的數(shù)量
8.mean( )計(jì)算數(shù)據(jù)的算術(shù)平均值
9.median()計(jì)算算術(shù)中位數(shù)
10.var()計(jì)算數(shù)據(jù)的方差
11.std()計(jì)算數(shù)據(jù)的標(biāo)準(zhǔn)差
12.corr()計(jì)算相關(guān)系數(shù)矩陣
13.cov()計(jì)算協(xié)方差矩陣
14.corrwith()利用DataFrame的corrwith方法,可以計(jì)算其列或行跟另一個(gè)Series或DataFrame之間的相關(guān)系數(shù)。
15.min()計(jì)算數(shù)據(jù)的最小值
16.max()計(jì)算數(shù)據(jù)的最大值
17.diff()計(jì)算一階差分,對(duì)時(shí)間序列很有效
18.mode()計(jì)算眾數(shù),返回頻數(shù)最高的那(幾)個(gè)
19.mean()計(jì)算均值
20.quantile()計(jì)算分位數(shù)(0到1)
21.isin()用于判斷矢量化集合的成員資格,可用于過(guò)濾Series中或DataFrame列中數(shù)據(jù)的子集
22.unique()返回一個(gè)Series中的唯一值組成的數(shù)組。
23.value_counts()計(jì)算一個(gè)Series中各值出現(xiàn)的頻率。
舉例:判斷city列的值是否為北京
df_inner['city'].isin(['beijing'])
七、分組的方法
序號(hào)方法說(shuō)明
1DataFrame.groupby()分組函數(shù)
2pandas.cut()根據(jù)數(shù)據(jù)分析對(duì)象的特征,按照一定的數(shù)值指標(biāo),把數(shù)據(jù)分析對(duì)象劃分為不同的區(qū)間部分來(lái)進(jìn)行研究,以揭示其內(nèi)在的聯(lián)系和規(guī)律性。
舉例:.groupby用法
group_by_name=salaries.groupby('name')
print(type(group_by_name))
輸出結(jié)果為:
<class 'pandas.core.groupby.DataFrameGroupBy'>
八、讀寫(xiě)文本格式數(shù)據(jù)的方法
序號(hào)方法說(shuō)明
1read_csv從文件、URL、文件型對(duì)象中加載帶分隔符的數(shù)據(jù)。默認(rèn)分隔符為逗號(hào)
2read_table從文件、URL、文件型對(duì)象中加載帶分隔符的數(shù)據(jù)。默認(rèn)分隔符為制表符(t)
3read_ fwf讀取定寬列格式數(shù)據(jù)(也就是說(shuō),沒(méi)有分隔符)
4read_clipboard讀取剪貼板中的數(shù)據(jù),可以看做read_table的剪貼板版。再將網(wǎng)頁(yè)轉(zhuǎn)換為表格時(shí)很有用
5read_excel從ExcelXLS或XLSXfile 讀取表格數(shù)據(jù)
6read_hdf讀取pandas寫(xiě)的HDF5文件
7read_html讀取HTML文檔中的所有表格
8read_json讀取JSON字符串中的數(shù)據(jù)
9read_msgpack二進(jìn)制格式編碼的pandas數(shù)據(jù)
10read_pickle讀取Python pickle格式中存儲(chǔ)的任意對(duì)象
11read_sas讀取存儲(chǔ)于SAS系統(tǒng)自定義存儲(chǔ)格式的SAS數(shù)據(jù)集
12read_sql讀取SQL 查詢結(jié)果為pandas的DataFrame
13read_stata讀取Stata文件格式的數(shù)據(jù)集
14read_feather讀取 Feather二進(jìn)制文件格式
舉例:導(dǎo)入CSV或者xlsx文件
df = pd.DataFrame(pd.read_csv('name.csv',header=1))
df = pd.DataFrame(pd.read_excel('name.xlsx'))
九、處理缺失數(shù)據(jù)
序號(hào)方法說(shuō)明
1.fillna(value,method,limit,inplace)填充缺失值
2.dropna()刪除缺失數(shù)據(jù)
3.info()查看數(shù)據(jù)的信息,包括每個(gè)字段的名稱、非空數(shù)量、字段的數(shù)據(jù)類型
4.isnull()返回一個(gè)同樣長(zhǎng)度的值為布爾型的對(duì)象(Series或DataFrame),表示哪些值是缺失的
舉例:查看數(shù)據(jù)表基本信息(維度、列名稱、數(shù)據(jù)格式等等)
df.info()
十、數(shù)據(jù)轉(zhuǎn)換
序號(hào)方法說(shuō)明
1.replace(old, new)用新的數(shù)據(jù)替換老的數(shù)據(jù),如果希望一次性替換多個(gè)值,old和new可以是列表。默認(rèn)會(huì)返回一個(gè)新的對(duì)象,傳入inplace=True可以對(duì)現(xiàn)有對(duì)象進(jìn)行就地修改。
2.duplicated()判斷各行是否是重復(fù)行,返回一個(gè)布爾型Series。
3.drop_duplicates()刪除重復(fù)行,返回刪除后的DataFrame對(duì)象。
舉例:刪除后出現(xiàn)的重復(fù)值:
df['city'].drop_duplicates()
結(jié)語(yǔ)
文章中總結(jié)的是都是一些Pandas常用的方法,至于一些基礎(chǔ)的概念還需要你學(xué)到Pandas的時(shí)候去理解,例如Series是什么?DataFrame是什么?如果你已經(jīng)清楚了Pandas的這些基礎(chǔ)東西之后,搭配上文章中的這些方法,那你用Pandas去做數(shù)據(jù)處理和分析必然會(huì)游刃有余。
END
雙一流大學(xué)研究生團(tuán)隊(duì)創(chuàng)建,專注于目標(biāo)檢測(cè)與深度學(xué)習(xí),希望可以將分享變成一種習(xí)慣!
點(diǎn)贊三連,支持一下吧↓