像Excel一樣使用Python(一)

2021-09-29 19:11:52 字數 3924 閱讀 3783

在進行資料處理時,如果資料簡單,數量不多,excel是大家的首選。但是當資料眾多,型別複雜,需要靈活地顯示切片、進行索引、以及排序時,python會更加方便。借助python中的numpy和pandas庫,它能快速完成各種任務,包括資料的建立、檢查、清洗、預處理、提取、篩選、彙總、統計等。接下來幾篇文章,將以excel為參照,介紹python中資料的處理。

提到pandas,那就不得不提兩類重要的資料結構,series和dataframe,這兩類資料結構都是建立在numpy的陣列array基礎上。與array相比,series是乙個一維的資料集,但是每個資料元素都帶有乙個索引,有點類似於字典。而dataframe在陣列的基礎上,增加了行索引和列索引,類似於series的字典,或者說是乙個列表集。

所以在資料處理前,要安裝好numpy , pandas。接下來就看看如何完成一套完整的資料操作。

建立資料表的方法分兩種,分別是從外部匯入資料,以及直接寫入資料。

匯入資料

在python中,也可外部匯入xlsx格式檔案,使用read_excel()函式:

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

即:呼叫pandas中read_excel屬性,來讀取檔案test.xlsx,並轉換成dataframe格式,賦給變數data。在每一行後,自動分了乙個索引值。除了excel,還支援以下格式檔案的匯入和寫入:

python寫入的方法有很多,但還是不如excel方便。常用的例如使用相等長度的字典或numpy陣列來建立:

data1 = dataframe(

)print data1

輸出func gene size

0 nan arx1 411

1 monooxyg arx2 550

2 amino arx3 405

分配乙個行索引後,自動排序並輸出。

在python中,可以使用info()函式檢視整個資料的詳細資訊。

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等函式來檢視資料維度、行列組成、所有的值、 資料型別:

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

在excel中可以按「f5」,在「定位條件」中選擇「空值」,選中後,輸入替換資訊,再按「ctrl+enter」即可完成替換。

替換空值

在python中,使用函式 isnull 和 notnull 來檢測資料丟失, 包含空值返回true,不包含則返回false。

pd.isnull(data1)

pd.notnull(data1)

也可以使用函式的例項方法,以及加入引數,對某一列進行檢查:

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列中存在的空格

excel中可以按「ctrl+f」,可調出替換對話方塊,替換相應資料。

查詢替換

python中,使用replace函式替換:

data['func'].replace('monooxygenase', 'oxidase')

將func列中的'monooxygenase'替換成'oxidase'。

excel中,通過「資料-篩選-高階」可以選擇性地看某一列的唯一值。

檢視唯一值

python中,使用unique函式檢視:

print data['func'].unique()

輸出[nan u'monooxygenase' u'aminotransferase' u'methyltransferase']

excel中,通過upper、lower、proper等函式來變成大寫、小寫、首字母大寫。

大小寫函式

python中也有同名函式:

data1['gene'].str.lower()

excel中可以通過「資料-刪除重複項」來去除重複值。

資料-刪除重複值

python中,可以通過drop_duplicates函式刪除重複值:

print data['func'].drop_duplicates()

輸出0 nan

1 monooxygenase

2 aminotransferase

3 methyltransferase

name: func, dtype: object

還可以設定「 keep=』last』 」引數,後出現的被保留,先出現的被刪除:

print data['func'].drop_duplicates(keep='last')

輸出2 aminotransferase

3 methyltransferase

6 monooxygenase

8 nan

name: func, dtype: object

內容參考:

python for data analysis

藍鯨**分析部落格,作者藍鯨(王彥平)

像Excel一樣使用Python(二)

像excel一樣使用python,上一期介紹了生成 檢視 替換等功能,這一期介紹資料預處理,包括資料表合併 排序 分組等。excel裡智慧型複製貼上來合併 或者通過vlookup函式分步實現。python中,可以直接使用merge函式來合併兩個表,可選引數較多,這裡只介紹最常用的幾個引數 df1.m...

像用excel一樣用pandas

預計需要15min閱讀此教材 本教材僅講述如何檢視excel資料,篩選,排序,查詢替換資料,不涉及excel中複雜的圖形繪製及樣式修改。假設,已經存在乙個test.xlsx檔案,僅包含乙個sheet,檔案內容如下。col1 col2 foo1 bar1 foo2 bar2 讀取乙個excel並賦值給...

像外行一樣思考,像專家一樣實踐

像外行一樣思考,像專家一樣實踐,不只是說說而已。題記 看了試讀的章節有些日子,看完了試讀部分,其中一部分是能和我共鳴,還有一部分觀點,自己也比較贊成,但貌似又有些抽象。我想,書不單是用來讀的,讀一本好書,就像吃肉一樣,吸收書中的營養,把營養轉換為自己的血液,直到骨髓中,成為生命中的一部分。像外行一樣...