Pandas學(xué)習(xí)<一>

Python作為現(xiàn)如今最常用的編程語言,以其易于上手和模塊豐富而著稱。在筆者使用python進(jìn)行數(shù)據(jù)分析時(shí),常常會(huì)面臨各種表格和數(shù)據(jù)的讀取、操作、輸出以及數(shù)據(jù)的可視化。Pandas作為一個(gè)非常高效的python數(shù)據(jù)處理模塊,以其簡便性和實(shí)用性而受到歡迎。恰巧筆者最近在處理數(shù)據(jù)過程中需要較多的使用pandas進(jìn)行數(shù)據(jù)處理。結(jié)合當(dāng)前可能仍有許多人(高手請自行忽略)對這一模塊不是特別了解,所以筆者嘗試從數(shù)據(jù)讀取、數(shù)據(jù)初級(jí)檢索、數(shù)據(jù)的高級(jí)操作、數(shù)據(jù)可視化三個(gè)方面對這一模塊進(jìn)行解讀。另一方面,考慮到對于大多數(shù)人而言,數(shù)據(jù)處理過程中最常用的文件格式是excel、txt和csv,因此本文在后續(xù)的介紹中也將以這三類格式的文件為主。事實(shí)上,pandas模塊擅長處理各種不同格式的數(shù)據(jù),遠(yuǎn)不止本文介紹的那么單調(diào)。所以如果讀者想要更多的了解這個(gè)模塊,(強(qiáng)烈)建議去此模塊的官方網(wǎng)站(https://github.com/pandas-dev/pandas/)進(jìn)行進(jìn)一步探索。由于這個(gè)系列更多的以筆者的工作需要為主,無法涵蓋所有內(nèi)容,有所疏漏(不僅有,還很多),還請讀者諒解。
本文作為系列開篇的第一章,主要從數(shù)據(jù)讀取和數(shù)據(jù)初級(jí)檢索這兩個(gè)方面來進(jìn)行介紹。
對于python而言,無論何種模塊,首先需要做的就是安裝(自己動(dòng)手,豐衣足食)。在命令行下安裝模塊的命令如下(可能會(huì)安裝其他依賴的包):
安裝了之后,我們首先需要做的就是加載模塊,而加載模塊的命令為(后面代碼中以>>開頭表示在python IDE中輸入的命令行)。
值得注意的是pandas可以讀取多種類型的文件,讀者可以通過下表看出。

只是對于excel、txt和csv三種格式的文件而言,?read_excel、read_csv和read_table三個(gè)函數(shù)就足以應(yīng)付大部分的情況了。
read_excel函數(shù)常用于讀取excel文件。該函數(shù)最常用到的參數(shù)是sheet_name、header、names、index_col和usecols。sheet_name參數(shù)指定用于讀取excel的sheet編號(hào);header參數(shù)用于指定作為列名的列索引;name參數(shù)通過賦值來指定列名(在不指定header的情況下);index_col參數(shù)用于指定作為行名的行索引,usecols參數(shù)則指定可以被讀進(jìn)Pandas table對象的列的集合。
read_csv函數(shù)用于讀取csv文件。該函數(shù)最常用的參數(shù)是sep、delimiter 、header、names、index_col和usecols。與read_excel函數(shù)包含相同的參數(shù)就不再一一介紹,而新的參數(shù)如sep用于分隔符使用(delimiter與sep含義相同)。
read_table函數(shù)用于讀取txt文件。該函數(shù)與read_csv函數(shù)的參數(shù)基本一致。使用可以參考read_csv函數(shù)。
了解完函數(shù)之后,我們需要使用這些函數(shù)去讀取文件。對于pandas而言,數(shù)據(jù)格式僅僅有兩種類型。一是系列,以一維標(biāo)記的同質(zhì)的數(shù)組;二是數(shù)據(jù)框,通常是2維的,其中每行或者每列代表一個(gè)系列。
接下來,我們就從代碼上來解讀如何讀取一個(gè)文件(為方便演示,筆者準(zhǔn)備了Test_file.xlsx)。
首先,通過pd.read_excel函數(shù)讀取文件。通過print函數(shù)顯示數(shù)據(jù)格式。從下面的結(jié)果可以看出,數(shù)據(jù)為8*4的二維數(shù)組。
讀取完數(shù)據(jù)之后,如何精確定位到某一行、某一列或者某個(gè)元素,方便對選中的行、列或者元素進(jìn)行操作呢?Pandas提供了包括[]、loc和iloc三種方式在內(nèi)的多種函數(shù)用以對數(shù)據(jù)進(jìn)行操作。下面,我將以[]、loc和iloc三種方式為主,通過多個(gè)命令去簡略介紹一下如何快速定位數(shù)據(jù)和增添數(shù)據(jù)。只是讀者如果想要了解更多,可以去官方網(wǎng)站上進(jìn)行進(jìn)一步探索。
命令一:通過列標(biāo)簽選擇單列。
命令二:通過列標(biāo)簽選擇雙列或多列。
命令三:通過行索引選擇行。
命令四:通過行標(biāo)簽選擇行。
命令五:通過行索引選擇行。
命令六:通過列標(biāo)簽和行索引選擇元素。
命令七:通過列與行的索引選擇元素。
命令八:通過lambda函數(shù)對指定列元素進(jìn)行篩選,并返回一個(gè)所有符合條件的列元素所在行索引的行。
命令九:通過index屬性返回行的屬性。
命令十:通過行索引和列標(biāo)簽尋找數(shù)據(jù)。
命令十一:以單列數(shù)據(jù)為樣本,進(jìn)行隨機(jī)抽樣。
命令十二:通過新列名(’E’)來增加數(shù)據(jù)。
命令十三: 通過新列名(’R9’)來增加數(shù)據(jù)。
通過上述命令,可以對pandas讀取數(shù)據(jù)以及對數(shù)據(jù)的基本操作有了一個(gè)簡單的理解。但是更多更實(shí)用的技能仍需要讀者通過自己寫腳本實(shí)踐,從而進(jìn)一步的掌握。
上述的所有命令我已經(jīng)整理成Learn_of_pandas_part1.ipynb文檔放在我的github網(wǎng)站上(網(wǎng)址是https://github.com/wangjun258/Learn_of_pandas_part1),歡迎讀者在jupyter notebook繼續(xù)實(shí)踐。
三 慣例小結(jié)
更高階的使用指南也詳見下面的官方號(hào)
本公眾號(hào)開發(fā)的相關(guān)軟件,Multi-omics Hammer軟件和Multi-omics Visual軟件歡迎大家使用。文末是本公眾號(hào)在其他平臺(tái)的賬戶,也歡迎大家關(guān)注并多提意見。
簡書:WJ的生信小院
公眾號(hào):生信小院
博客園:生信小院
最后,也歡迎各位大佬能夠在本平臺(tái)上:1傳播和講解自己發(fā)表的論文;2:發(fā)表對某一科研領(lǐng)域的看法;3:想要達(dá)成的合作或者相應(yīng)的招聘信息;4:展示自己以尋找博后工作或者博士就讀的機(jī)會(huì);5:博導(dǎo)提供博后工作或者博士攻讀機(jī)會(huì),都可以后臺(tái)給筆者留言。希望本平臺(tái)在進(jìn)行生信知識(shí)分享的同時(shí),能夠成為生信分析者的交流平臺(tái),能夠?qū)崿F(xiàn)相應(yīng)的利益互補(bǔ)和雙贏(不一定能實(shí)現(xiàn),但是夢想總得是有的吧)。
另外,怎么說呢,投。。。。。。幣也可,不強(qiáng)求,但奢求?


