中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

pandas指南:做更高效的數(shù)據(jù)科學(xué)家

2019-01-30    來(lái)源:raincent

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

摘要:Python是開(kāi)源的,所以有很多開(kāi)源固有的問(wèn)題。如果你是Python新手,很難知道針對(duì)特定任務(wù)的包哪個(gè)是最好的。你需要有經(jīng)驗(yàn)的人來(lái)告訴你。今天我要告訴你們的是:在數(shù)據(jù)科學(xué)中,有一個(gè)軟件包是你們絕對(duì)需要學(xué)習(xí)的,那就是pandas。

 

 

而pandas真正有趣的地方是,很多其他的包也在里面。pandas是一個(gè)核心包,因此它具有來(lái)自其他各種包的特性。

pandas類似于Python中的Excel:它使用表(即DataFrame)并對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換,但它還能做更多。

如果你已經(jīng)熟悉Python,可以直接進(jìn)入第三部分

現(xiàn)在讓我們開(kāi)始:

import pandas as pd

pandas包最基本的功能

1、讀取數(shù)據(jù):

data = pd.read_csv('my_file.csv')
data=pd.read_csv('my_file.csv',sep=';',encoding='latin-1',nrows=1000, kiprows=[2,5])

sep變量代表分隔符。因?yàn)镋xcel中的csv分隔符是“;”,因此需要顯示它。編碼設(shè)置為“latin-1”以讀取法語(yǔ)字符。nrows=1000表示讀取前1000行。skiprows=[2,5]表示在讀取文件時(shí)將刪除第2行和第5行

最常用的函數(shù):read_csv, read_excel

還有一些很不錯(cuò)的函數(shù):read_clipboard、read_sql

2、寫(xiě)入數(shù)據(jù)

data.to_csv('my_new_file.csv', index=None)

index=None將簡(jiǎn)單地按原樣寫(xiě)入數(shù)據(jù)。如果你不寫(xiě)index=None,會(huì)得到額外的行。

我通常不使用其他函數(shù),比如to_excel,to_json,to_pickle,to_csv,雖然它們也做得很好,但是csv是保存表最常用的方法。

3、檢查數(shù)據(jù):

data.shape
data.describe()
data.head(3)

.head(3)打印數(shù)據(jù)的前3行,.tail()函數(shù)將查看數(shù)據(jù)的最后一行。

data.loc[8]

打印第8行。

data.loc[8, 'column_1']

將第8行值打印在“column_1”上。

data.loc[range(4,6)]

打印第4行到第6行。

pandas的初級(jí)功能

1、邏輯運(yùn)算

data[data['column_1']=='french']
data[(data['column_1']=='french') & (data['year_born']==1990)]
data[(data['column_1']=='french')&(data['year_born']==1990)&(data['city']=='London')]

如果要根據(jù)邏輯操作對(duì)數(shù)據(jù)進(jìn)行運(yùn)算,在使用& (AND)、~ (NOT)和| (OR)等邏輯操作之前和之后添加“(”&“)”。

data[data['column_1'].isin(['french', 'english'])]

不要為同一列編寫(xiě)多個(gè)OR,最好是使用.isin()函數(shù)。

2、基本繪圖

多虧了matplotlib包,這個(gè)特性才得以實(shí)現(xiàn)。就像我們?cè)诮榻B中說(shuō)的,它可以直接用在pandas身上。

data['column_numerical'].plot()

 

 

圖 1 .plot() 輸出示例

data['column_numerical'].hist()

繪制分布圖(直方圖)

 

 

圖 2 .hist() 函數(shù)輸出示例

%matplotlib inline

如果你使用Jupyter,在繪圖之前,不要忘記寫(xiě)這一行(在代碼中只寫(xiě)一次)

3、更新數(shù)據(jù)

data.loc[8, 'column_1'] = 'english'

將' column_1 '的第8行值替換為' english '

data.loc[data['column_1']=='french', 'column_1'] = 'French'

在一行中更改多行值

pandas的中級(jí)功能

現(xiàn)在你可以做一些在Excel中很容易做的事情。讓我們來(lái)挖掘一些在Excel中做不到的神奇事情。

1、計(jì)算功能

data['column_1'].value_counts()

 

 

圖 3 .value_counts() 輸出示例

2、對(duì)全行、全列或所有數(shù)據(jù)的操作

data['column_1'].map(len)

len()函數(shù)應(yīng)用于“column_1”的每個(gè)元素

map()操作將一個(gè)函數(shù)應(yīng)用于列的每個(gè)元素。

data['column_1'].map(len).map(lambda x : x/100).plot()

pandas的另一個(gè)特點(diǎn)是進(jìn)行鏈?zhǔn)讲僮。它可以幫助你在一行代碼中執(zhí)行多個(gè)操作,從而更加簡(jiǎn)單和高效。

data.apply(sum)

.apply()將函數(shù)應(yīng)用于列。

.applymap()將一個(gè)函數(shù)應(yīng)用于表(DataFrame)中的所有單元格。

3、tqdm包

在處理大型數(shù)據(jù)集時(shí),pandas可能需要一些時(shí)間來(lái)運(yùn)行.map()、.apply()、.applymap()操作。tqdm是一個(gè)非常有用的包,它可以幫助預(yù)測(cè)這些操作何時(shí)完成。

from tqdm import tqdm_notebook
tqdm_notebook().pandas()

用pandas設(shè)置tqdm

data['column_1'].progress_map(lambda x : x.count('e'))

將.map()替換為.progress_map(),.apply()和.applymap()也是一樣

 

 

圖4 這是你在Jupyter上看到的的進(jìn)度條

4、相關(guān)矩陣和散射矩陣

data.corr()

data.corr().applymap(lambda x : int(x*100)/100)

 

 

圖 5.corr() 函數(shù)會(huì)得到相關(guān)矩陣

pd.plotting.scatter_matrix(data, figsize=(12,8))

 

 

圖 6散射矩陣的例子,它繪制同一圖表中兩列的所有組合

pandas的高級(jí)功能

1、??行列合并

在pandas中,行列合并非常簡(jiǎn)單。

data.merge(other_data, on=['column_1', 'column_2', 'column_3'])

合并3列只需要一行代碼

2、分組

分組一開(kāi)始并不簡(jiǎn)單,但是如果掌握其語(yǔ)法,你將發(fā)現(xiàn)這非常簡(jiǎn)單。

data.groupby('column_1')['column_2'].apply(sum).reset_index()

按列分組,選擇要在其上操作函數(shù)的另一列。reset_index()將數(shù)據(jù)重新生成DataFrame(表)

 

 

圖 7使用鏈?zhǔn)讲僮,只需一行代碼

3、遍歷行

dictionary = {}
for i,row in data.iterrows():
dictionary[row['column_1']] = row['column_2']

iterrows()循環(huán)兩個(gè)變量:行索引和行(上面代碼中的i和row)。

總體來(lái)說(shuō),pandas是一個(gè)幫助數(shù)據(jù)科學(xué)家快速閱讀和理解數(shù)據(jù)的工具包,它也可以說(shuō)是Python如此優(yōu)秀的原因之一。我還可以展示更多pandas包其他有趣的特點(diǎn),但以上所述足以讓人理解為什么數(shù)據(jù)科學(xué)家離不開(kāi)pandas包?傊,pandas包有以下特點(diǎn):

1、 簡(jiǎn)單易用,隱藏了所有復(fù)雜和抽象的計(jì)算;
2、非常直觀;
3、快速。

文章原標(biāo)題《Be a more efficient data scientist, master pandas with this guide》,譯者:黃小凡,

標(biāo)簽: 代碼

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:中國(guó)地方政府?dāng)?shù)據(jù)治理機(jī)構(gòu)的初步研究:現(xiàn)狀與模式

下一篇:2019 年關(guān)于數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)和人工智能的五大預(yù)測(cè)