Python資料分析|pandas 實用方法(1)資料結構

pandas

是最常用的Python資料處理庫,是利用Python進行

資料分析、資料探勘以及機器學習

等上層操作所必須要掌握的基礎技能,因此希望透過這一些列文章幫助大家掌握

pandas實踐中的常用方法

pandas 圍繞著

Series

DataFrame

兩個核心資料結構展開。Series 和 DataFrame 分別對應於

一維的序列

二維的表結構

pandas 的匯入方法如下:

from pandas import Series,DataFrame

import pandas as pd

Python資料分析|pandas 實用方法(1)資料結構

pandas資料結構

Series

Series的構造

Series 可以看做一個**

定長的有序字典

**(

{key: value}的鍵-值對

)。基本任意的一維資料都可以用來構造 Series 物件。

s = Series([11,23,35。60,‘asd’])

s

Out[3]:

0 11

1 23

2 35。6

3 asd

dtype: object

Series 的主要屬性

Series 物件包含兩個主要的屬性:

index

value

,分別為上例中左右兩列。因為傳給構造器的是一個

列表

,所以

index 的值

是從 0 起遞增的整數(

自動新增

),如果傳入的是一個

類似字典的鍵值對結構

,就會生成

index-value 對應的 Series

;或者在初始化的時候以關鍵字引數

顯式指定一個 index 物件

。如下所示,s1和s2的輸出是一樣的。

s1 = Series(data=[1,2,3,4],index = [‘a’,‘b’,‘c’,‘d’])

s2 = Series({‘a’:1,‘b’:2,‘c’:3,‘d’:4})

s1

Out[9]:

a 1

b 2

c 3

d 4

dtype: int64

Series 物件的元素會

嚴格依照給出的 index 構建

,這意味著:如果 data 引數是有鍵值對的,那麼只有 index 中含有的鍵會被使用,缺失值由 NaN 補上。如果 data只有值,但是data裡值的數目和index裡鍵的數目不一致,那麼在構造Series時就會報錯。

注意: Series 的 index 和 values 的元素之間雖然存在對應關係,但這與字典的對映不同。

index 和 values 實際仍為互相獨立的 ndarray 陣列

,因此 Series 物件的效能完全沒問題。

Series 這種使用鍵值對的資料結構最大的好處在於,

Series 間進行算術運算時,index 會自動對齊

Series的name屬性

Series 物件和它的 index

都含有一個

name 屬性

s1。name = ‘s1_series’

s1。index。name = ‘s1_index’

s1

Out[21]:

s1_index

a 1

b 2

c 3

d 4

Name: s1_series, dtype: int64

DataFrame

DataFrame 是一個**

表格型

**的資料結構,它含有

一組有序的列

,每列可以是

不同的值型別

(不像 ndarray 只能有一個 dtype)。基本上可以把 DataFrame 看成是

共享同一個 index 的 Series 的集合

DataFrame的構造

DataFrame 的構造方法與 Series 類似,只不過可以

同時接受多條一維資料來源

每一條都會成為單獨的一列

data = {‘state’:[‘Ohino’,‘Ohino’,‘Ohino’,‘Nevada’,‘Nevada’], ‘year’:[2000,2001,2002,2001,2002], ‘pop’:[1。5,1。7,3。6,2。4,2。9]}

df = DataFrame(data)

df

Out[23]:

pop state year

0 1。5 Ohino 2000

1 1。7 Ohino 2001

2 3。6 Ohino 2002

3 2。4 Nevada 2001

4 2。9 Nevada 2002

2。9 Nevada 2002

雖然引數 data 看起來是個字典,但

字典的鍵並非充當 DataFrame 的 index 的角色

,而是 Series 的

“name” 屬性

。這裡生成的

index

仍是 “01234”。

較完整的 DataFrame 構造器引數為:

DataFrame(data=None,index=None,coloumns=None),columns 即 “name”

df = DataFrame(data,index=[‘one’,‘two’,‘three’,‘four’,‘five’],columns=[‘year’,‘state’,‘pop’,‘debt’])

df

Out[24]:

year state pop debt

one 2000 Ohino 1。5 NaN

two 2001 Ohino 1。7 NaN

three 2002 Ohino 3。6 NaN

four 2001 Nevada 2。4 NaN

five 2002 Nevada 2。9 NaN

缺失值由 NaN 補上。

看一下 index和columns 的型別:

df。index

Out[28]: Index([‘one’, ‘two’, ‘three’, ‘four’, ‘five’], dtype=‘object’)

df。columns

Out[29]: Index([‘year’, ‘state’, ‘pop’, ‘debt’], dtype=‘object’)

DataFrame

面向行和麵向列的操作基本是平衡的

,任意抽出一列都是 Series。

df。T

Out[10]:

one two three four five

year 2000 2001 2002 2001 2002

state Ohino Ohino Ohino Nevada Nevada

pop 1。5 1。7 3。6 2。4 2。9

debt NaN NaN NaN NaN NaN

下一篇將繼續介紹更為常用的功能——“

索引

”,希望透過這一篇大家能夠對pandas的資料結構有比較好的理解。