pandas兩大主要資料結構之一——Series
阿新 • • 發佈:2021-10-09
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
時來天地皆同力,運去英雄不自由。