天天看點

一、Pandas基礎:Series

一、Series簡介

  • Series是一種類似于一維數組的對象,是由一組資料(各種NumPy資料類型)以及一組與之相關的資料标簽(即索引)組成。僅由一組資料也可産生簡單的Series對象。注意:Series中的索引值是可以重複的。

二、Series建立

  • Series通過numpy數組,清單及字典等多重方式進行建立
  • 當使用字典建立時,Series會使用字典的鍵作為數組的索引值
  • 當使用numpy和清單建立時,Series會以它們的序列号作為索引值,可用index參數自定義索引值
  • Series數組建立後,可以通過.index屬性重建索引值
import pandas as pd
a=pd.Series([87,95,84])
print("清單方式(預設索引):
",a)
b=pd.Series([87,95,84],index=['小紅','小蘭','小綠'])
print("清單方式(自定義索引):
",b)
c=pd.Series({'小紅':87,'小蘭':95,'小綠':84})
print("字典方式:
",c)
a.index=(['小紅','小蘭','小綠'])
print("對a重建索引:
",a)
>>>
清單方式(預設索引):
0    87
1    95
2    84
dtype: int64
清單方式(自定義索引):
小紅    87
小蘭    95
小綠    84
dtype: int64
字典方式:
小蘭    95
小紅    87
小綠    84
dtype: int64
對a重建索引:
小紅    87
小蘭    95
小綠    84
dtype: int64
      

三、Series查詢

  • Series保留了大量Numpy中查詢方法,可以通過索引和切片的方式查詢Series的值(看Numpy查詢方式的,點選這裡)

四、Series運算

  • 同樣的,Series保留了大量Numpy的運算機制,它們在Series中均可以使用。
  • Series進行數組運算的時候,索引與值之間的映射關系不會發生改變。
  • 在操作Series的時候,基本上可以把Series看成NumPy中的ndarray數組來進行操作。(看Numpy運算方法的,點選這裡)

 五、缺失值檢測

  • pandas中的isnull和notnull兩個函數可以用于在Series中檢測缺失值,這兩個函數的傳回時一個布爾類型的Series
import pandas as pd
a = pd.Series({'小紅': 87, '小蘭': 95, '小綠': 84, '小英': 99})
new_index = ['小紅', '小蘭', '小丸子', '小綠', '小英']
a = pd.Series(a, index=new_index)
print("帶缺失值的數組:
", a)
print("列出缺失值項:
", a[pd.isnull(a)])
print("列出有效值項:
", a[pd.notnull(a)])
>>>
帶缺失值的數組:
小紅     87.0
小蘭     95.0
小丸子     NaN
小綠     84.0
小英     99.0
dtype: float64
列出缺失值項:
小丸子   NaN
dtype: float64
列出有效值項:
小紅    87.0
小蘭    95.0
小綠    84.0
小英    99.0
dtype: float64
      

  

六、自動對齊

  • 當多個series對象之間進行運算的時候,如果不同series之間具有不同的索引值,那麼運算會自動對齊不同索引值的資料,如果某個series沒有某個索引值,那麼最終結果會指派為NaN。
import pandas as pd
a = pd.Series([12, 23, 34], index=['p1', 'p2', 'p3'])
b = pd.Series([56, 78, 90, 38], index=['p2', 'p3', 'p4', 'p5'])
print("自動對齊索引,對不上的指派NaN:
", a + b)
>>>
自動對齊索引,對不上的指派NaN:
p1      NaN
p2     79.0
p3    112.0
p4      NaN
p5      NaN
dtype: float64
      

七、數組名稱

  • Series對象本身以及索引都具有一個name屬性,預設為空,根據需要可以進行指派操作。
import pandas as pd
a = pd.Series({'小紅': 87, '小蘭': 95, '小綠': 84, '小英': 99})
a.values.name='成績'
a.name='考試成績'
a.index.name='姓名'
print("補全名稱的數組:
", a)
>>>
補全名稱的數組:
姓名
小蘭    95
小紅    87
小綠    84
小英    99
Name: 考試成績, dtype: int64