pandas
是最常用的Python資料處理庫,是利用Python進行
資料分析、資料探勘以及機器學習
等上層操作所必須要掌握的基礎技能,因此希望透過這一些列文章幫助大家掌握
pandas實踐中的常用方法
。
pandas 圍繞著
Series
和
DataFrame
兩個核心資料結構展開。Series 和 DataFrame 分別對應於
一維的序列
和
二維的表結構
。
pandas 的匯入方法如下:
from pandas import Series,DataFrame
import pandas as pd
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的資料結構有比較好的理解。