一、基本介紹
在進行數(shù)據(jù)處理時奸攻,如果數(shù)據(jù)簡單蒜危,數(shù)量不多,excel是大家的首選睹耐。但是當數(shù)據(jù)眾多辐赞,類型復雜,需要靈活地顯示切片硝训、進行索引响委、以及排序時,python會更加方便捎迫。借助python中的numpy和pandas庫晃酒,它能快速完成各種任務,包括數(shù)據(jù)的創(chuàng)建窄绒、檢查贝次、清洗、預處理彰导、提取蛔翅、篩選敲茄、匯總、統(tǒng)計等山析。接下來幾篇文章堰燎,將以excel為參照,介紹python中數(shù)據(jù)的處理笋轨。
提到pandas秆剪,那就不得不提兩類重要的數(shù)據(jù)結構,Series和DataFrame爵政,這兩類數(shù)據(jù)結構都是建立在numpy的數(shù)組array基礎上仅讽。與array相比,Series是一個一維的數(shù)據(jù)集钾挟,但是每個數(shù)據(jù)元素都帶有一個索引洁灵,有點類似于字典。而DataFrame在數(shù)組的基礎上掺出,增加了行索引和列索引徽千,類似于Series的字典,或者說是一個列表集汤锨。
所以在數(shù)據(jù)處理前双抽,要安裝好numpy , pandas。接下來就看看如何完成一套完整的數(shù)據(jù)操作泥畅。
二荠诬、像Excel一樣使用Python
1.導入數(shù)據(jù)表
創(chuàng)建數(shù)據(jù)表的方法分兩種,分別是從外部導入數(shù)據(jù)位仁,以及直接寫入數(shù)據(jù)柑贞。
在python中,也可外部導入xlsx格式文件聂抢,使用read_excel()函數(shù):
import pandas as pd
from pandas import DataFrame,Series
data=DataFrame(pd.read_excel('c:/python27/test.xlsx'))
print data
輸出:
Gene Size Function
0 arx1 411 NaN
1 arx2 550 monooxygenase
2 arx3 405 aminotransferase
……
即:調(diào)用pandas中read_excel屬性钧嘶,來讀取文件test.xlsx,并轉換成DataFrame格式琳疏,賦給變量data有决。在每一行后,自動分了一個索引值空盼。除了excel书幕,還支持以下格式文件的導入和寫入:
2.寫入數(shù)據(jù)表
Python寫入的方法有很多,但還是不如excel方便揽趾。常用的例如使用相等長度的字典或numpy數(shù)組來創(chuàng)建:
data1 = DataFrame(
{'Gene':['arx1','arx2','arx3'],
'Size':[411,550,405],
'Func':[np.NaN,'monooxygenase','aminotransferase ']})
print data1
輸出
Func Gene Size
0 NaN arx1 411
1 monooxyg arx2 550
2 amino arx3 405
分配一個行索引后台汇,自動排序并輸出。
3.查看數(shù)據(jù)表信息
在python中,可以使用info()函數(shù)查看整個數(shù)據(jù)的詳細信息苟呐。
print data.info()
輸出
RangeIndex: 7 entries, 0 to 6
Data columns (total 3 columns):
Gene 7 non-null object
Size 7 non-null int64
Function 5 non-null object
dtypes: int64(1), object(2)
memory usage: 240.0+ bytes
None
此外痒芝,還可以通過shape, column, index, values, dtypes等函數(shù)來查看數(shù)據(jù)維度、行列組成牵素、所有的值严衬、 數(shù)據(jù)類型:
print data1.shape
print data1.index
print data1.columns
print data1.dtypes
輸出
(3, 3)
RangeIndex(start=0, stop=3, step=1)
Index([u'Func', u'Gene', u'Size'], dtype='object')
Func object
Gene object
Size int64
dtype: object
4.替換空值
在excel中可以按“F5”,在“定位條件”中選擇“空值”笆呆,選中后请琳,輸入替換信息,再按“Ctrl+Enter”即可完成替換腰奋。
在python中单起,使用函數(shù) isnull 和 notnull 來檢測數(shù)據(jù)丟失, 包含空值返回True,不包含則返回False劣坊。
pd.isnull(data1)
pd.notnull(data1)
也可以使用函數(shù)的實例方法,以及加入?yún)?shù)屈留,對某一列進行檢查:
print data1['Func'].isnull()
輸出
Func Gene Size
0 True False False
1 False False False
2 False False False
再使用fillna對空值進行填充:
data.fillna(value=0)
#用0來填充空值
data['Size'].fillna(data1['Size'].mean())
#用data1中Size列的平均值來填充空值
data['Func']=data['Func'].map(str.strip)
#清理Func列中存在的空格
5.替換其他值
Excel中可以按“Ctrl+F”局冰,可調(diào)出替換對話框,替換相應數(shù)據(jù)灌危。
Python中康二,使用replace函數(shù)替換:
data['Func'].replace('monooxygenase', 'oxidase')
將Func列中的'monooxygenase'替換成'oxidase'。
6.查看唯一值
Excel中勇蝙,通過“數(shù)據(jù)-篩選-高級”可以選擇性地看某一列的唯一值沫勿。
Python中,使用unique函數(shù)查看:
print data['Func'].unique()
輸出
[nan u'monooxygenase' u'aminotransferase' u'methyltransferase']
7.大小寫轉換
Excel中味混,通過UPPER产雹、LOWER、PROPER等函數(shù)來變成大寫翁锡、小寫蔓挖、首字母大寫。
Python中也有同名函數(shù):
data1['Gene'].str.lower()
8.刪除重復值
Excel中可以通過“數(shù)據(jù)-刪除重復項”來去除重復值馆衔。
Python中瘟判,可以通過drop_duplicates函數(shù)刪除重復值:
print data['Func'].drop_duplicates()
輸出
0 NaN
1 monooxygenase
2 aminotransferase
3 methyltransferase
Name: Func, dtype: object
還可以設置“ keep=’last’ ”參數(shù),后出現(xiàn)的被保留角溃,先出現(xiàn)的被刪除:
print data['Func'].drop_duplicates(keep='last')
輸出
2 aminotransferase
3 methyltransferase
6 monooxygenase
8 NaN
Name: Func, dtype: object
內(nèi)容參考:
Python For Data Analysis
藍鯨網(wǎng)站分析博客拷获,作者藍鯨(王彥平)