pandas —— Series

pandas采用了很多Numpy的代碼風(fēng)格,但是最大的不同在于pandas用來處理表格型或者異質(zhì)類數(shù)據(jù)。而Numpy則相反,它更適合處理同質(zhì)型的數(shù)值類數(shù)組數(shù)據(jù)。

Series

Series是一種一維的數(shù)組型對象,它包含了一個(gè)值序列,并且包含了數(shù)據(jù)標(biāo)簽,也就是索引。

import pandas as pd
from pandas import Series, DataFrame
obj = pd.Series([4, 7, -5, 3])
print(obj)
#輸出:
#0    4
#1    7
#2   -5
#3    3

這里我們看到了左側(cè)0-4是索引,右邊是值。
可以通過valuesindex來獲取對應(yīng)的值和索引。

print(obj.values)
print(obj.index)
#[ 4  7 -5  3]
#RangeIndex(start=0, stop=4, step=1)

上面用的系統(tǒng)默認(rèn)的索引,其實(shí)可以自己創(chuàng)建一個(gè)索引標(biāo)簽。

obj2 = pd.Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c'])
print(obj2)
# d   4
# b   7
# a   -5
# c   3
# dtype: int64
print(obj2.index)
Index(['d', 'b', 'a', 'c'], dtype='object')

上面發(fā)現(xiàn),我們自己定義的標(biāo)簽替換了系統(tǒng)默認(rèn)的標(biāo)簽。后期我們也可以去修改index。

    obj = pd.Series([4, 7, -5, 3])
    print(obj)
    obj.index = ['Bob', 'Steve', 'Jeff', 'Ryan']
    print(obj)
輸出:
0    4
1    7
2   -5
3    3
dtype: int64
Bob      4
Steve    7
Jeff    -5
Ryan     3
dtype: int64

這樣我們就可以用我們自己的標(biāo)簽來讀取數(shù)據(jù)或者修改數(shù)據(jù)。

obj2['a']
# -5
obj2['d'] = 6 
obj2[['c', 'a', 'd']]
# c     3
# a     -5
# d     6
# dtype: int64

上面的代碼中,我們用了標(biāo)簽列表來獲取數(shù)據(jù)。
可以用Numpy相同的風(fēng)格操作,比如布爾值過濾,標(biāo)量相乘,數(shù)學(xué)函數(shù)等。

print(obj2[obj2 > 0])
print(obj2 * 2)
print(np.exp(obj2))
輸出結(jié)果:
d    6
b    7
c    3
dtype: int64
d    12
b    14
a   -10
c     6
dtype: int64
d     403.428793
b    1096.633158
a       0.006738
c      20.085537
dtype: float64

其實(shí)可以這樣理解Series,它是一個(gè)長度固定且有序的字典,因?yàn)槠涫菍⑺饕蹬c數(shù)據(jù)值按位置配對。所以我們可以使用字典中方法用于Series中。

'b' in obj2  # True
'e' in obj2  # False

如果已經(jīng)有數(shù)據(jù)剛好是Python中的字典,那么可以直接使用這個(gè)字典來生成Series。

    sdata = {'Ohio':35000, 'Texas':71000, 'Oregon':16000, 'Utah':5000}
    obj3 = pd.Series(sdata)
    print(obj3)
輸出:
Ohio      35000
Texas     71000
Oregon    16000
Utah       5000
dtype: int64

用字典轉(zhuǎn)換的時(shí)候,直接利用了字典的key和value配對,同時(shí)按照字典排號的字典鍵作為索引的順序。同樣,可以按照自己的要求來生成索引順序。

    states = ['California', 'Ohio', 'Oregon', 'Texas']
    obj4 = pd.Series(sdata, index = states)
輸出:
California        NaN
Ohio          35000.0
Oregon        16000.0
Texas         71000.0
dtype: float64

上面的數(shù)據(jù),我們發(fā)現(xiàn)California的value為NaN,這是因?yàn)閷?yīng)的索引在sdata中找不到對應(yīng)的key,所以缺失的值用NaN代替。而states中沒有Utah,所以舍棄掉。
pandas中使用isnullnotnull函數(shù)來檢查缺失數(shù)據(jù)。

pd.isnull(obj4)
# 或 obj4.isnull()
pd.notnull(obj4)
# 或 obj4.notnull()

在pandas中,其數(shù)據(jù)操作中自動對齊索引是Series中非常有用的特性。

    print(obj3)
    print(obj4)
    print(obj3 + obj4)
輸出:
Ohio      35000
Texas     71000
Oregon    16000
Utah       5000
dtype: int64
California        NaN
Ohio          35000.0
Oregon        16000.0
Texas         71000.0
dtype: float64
California         NaN
Ohio           70000.0
Oregon         32000.0
Texas         142000.0
Utah               NaN
dtype: float64

發(fā)現(xiàn)obj3+obj4結(jié)果類似于數(shù)據(jù)庫中的join操作。會把兩組數(shù)據(jù)合并,缺省的值會用NaN表示。
Series對象自身和其索引都有一個(gè)name熟悉。

    obj4.name = 'population'
    obj4.index.name = 'state'
    print(obj4)
輸出:
state
California        NaN
Ohio          35000.0
Oregon        16000.0
Texas         71000.0
Name: population, dtype: float64
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 玲子是個(gè)喜歡聽歌的女子,一個(gè)看似活潑外向的女子,其實(shí)她是一個(gè)更喜歡安靜的女子。在走過年少無知、走過春暖花開、走過陽...
    章簡閱讀 153評論 0 0
  • 知識就是力量 “沒有實(shí)踐的知識也是力量嗎?” 所以培根說的這個(gè)話是錯誤的 -- 中華民族是勤勞勇敢的民族 “張三懶...
    風(fēng)過唐古拉閱讀 472評論 0 0
  • 今晚,健身會所一客戶經(jīng)理友好地過來和我打招呼,說:您好!我是您新的客戶經(jīng)理,我姓某,你的會員卡即將到期,是否考慮續(xù)...
    D018李靜閱讀 194評論 4 11
  • 好友知道我是對食品安全很在意的孩子,她說她老家還有塊地,正琢磨種點(diǎn)什么?我提議種玉米吧,于是她果真種上了玉米。 ...
    藤花舊館閱讀 214評論 0 0
  • 本周講的話題是如何提高自己的智商,更準(zhǔn)確的說應(yīng)該是自己學(xué)習(xí)運(yùn)用知識的能力的提高。那么如何提高? 調(diào)整關(guān)注度 是的,...
    多謀善斷閱讀 237評論 0 0

友情鏈接更多精彩內(nèi)容