1. 程式人生 > 其它 >pandas兩大主要資料結構之一——Series

pandas兩大主要資料結構之一——Series

Series的簡單使用

pandas有Series和Pandas兩大主要的資料結構,本篇主要是介紹Series。

Series是一種類似於一維陣列的物件,它由一組資料(各種Numpy資料型別)以及一組與之相關的資料標籤(即索引)構成。

建立Series

  • 如果沒有為資料指定索引,就會自動建立0到N-1的整數型索引。
In [4]: obj = pd.Series([4, 7, -5, 3])

In [5]: obj
Out[5]: 
0    4
1    7
2   -5
3    3
dtype: int64
  • 可以通過Series的values和index屬性獲取其陣列表示形式和索引物件。
In [6]: obj.index
Out[6]: RangeIndex(start=0, stop=4, step=1)

In [7]: obj.values
Out[7]: array([ 4,  7, -5,  3])
  • 建立帶有對各資料點進行標記索引的Series
In [8]: obj2 = pd.Series([4, 7, -5, 3], index=['d', 'b', 'c', 'a'])
  • 通過索引來選取Series的某個值或一組值
In [9]: obj2['a']
Out[9]: 3

In [10]: obj2[['c', 'a', 'd']]
Out[10]: 
c   -5
a    3
d    4
dtype: int64

In [11]: obj2[2:]
Out[11]: 
c   -5
a    3
dtype: int64
  • 如果資料被儲存在python字典中,也可以通過這個字典來建立Series
In [15]: sdata = {'x': 30000, 'y': 40000, 'z': 50000, 'w': 60000}

In [16]: obj3 = pd.Series(sdata)

In [17]: obj3
Out[17]: 
x    30000
y    40000
z    50000
w    60000
dtype: int64

In [18]: sindex = ['m', 'x', 'y', 'z']

In [19]: obj4 = pd.Series(sdata, sindex)

In [20]: obj4
Out[20]: 
m        NaN
x    30000.0
y    40000.0
z    50000.0
dtype: float64

sdata中和sindex索引相匹配那3個值會被找出來並放到相應的位置上,'m'的值找不到,因此結果為NaN(在pandas中用於表示缺失和NA值)。

Series運算

  • Numpy陣列運算(如根據布林型陣列進行過濾、標量乘法、應用數學函式)都會保留索引與值之間的連結。
In [13]: obj2[obj2 > 0]
Out[13]: 
d    4
b    7
a    3
dtype: int64
  • Series也可以看作是一個定長的有序字典,因為它是索引值到資料值的一個對映。它可以用在很多原本需要字典引數的函式中:
In [14]: 'b' in obj2
Out[14]: True
  • Pandas的innull和notnull函式可用於檢測缺失資料:
In [21]: obj4.isnull()
Out[21]: 
m     True
x    False
y    False
z    False
dtype: bool
  • Series的一個重要功能是:在算術運算中會自動對齊不同資料的索引。
In [22]: obj3 + obj4
Out[22]: 
m         NaN
w         NaN
x     60000.0
y     80000.0
z    100000.0
dtype: float64
  • Series物件本身及索引都有一個name屬性
In [23]: obj4.name = 'p'

In [24]: obj4.index.name = 'q'

In [25]: obj4
Out[25]: 
q
m        NaN
x    30000.0
y    40000.0
z    50000.0
Name: p, dtype: float64
時來天地皆同力,運去英雄不自由。