對序列進行處理,包括對序列進行排序、追加一個序列、對序列值進行替換、對序列的值進行更新,並處理序列中出現的缺失值。正則表達式
按照值或索引對序列進行排序:併發
Series.sort_values(self, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last') Series.sort_index(self, axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True)
參數註釋:app
1,按照值來排序ide
按照序列的值進行排序,Nan放在last位置,函數
>>> s = pd.Series([np.nan, 1, 3, 10, 5]) >>> s.sort_values() 1 1.0 2 3.0 4 5.0 3 10.0 0 NaN dtype: float64
2,按照索引來排序ui
按照索引的值進行排序spa
>>> s = pd.Series(['a', 'b', 'c', 'd'], index=[3, 2, 1, 4]) >>> s.sort_index() 1 c 2 b 3 a 4 d dtype: object
使用追加的方法,把序列追加在另外一個序列以後,合併爲一個新的序列:rest
Series.append(self, to_append, ignore_index=False, verify_integrity=False)
參數註釋:code
舉個例子,把兩個序列合併爲一個,當不忽略索引時,把序列的索引做爲合併以後的索引;當忽略索引時,新的序列會重建索引。blog
>>> s1 = pd.Series([1, 2, 3]) >>> s2 = pd.Series([4, 5, 6]) >>> s1.append(s2) 0 1 1 2 2 3 0 4 1 5 2 6 dtype: int64 >>> s1.append(s2, ignore_index=True) 0 1 1 2 2 3 3 4 4 5 5 6 dtype: int64
把序列中的值替換爲另外一個值:
Series.replace(self, to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad')
參數註釋:
場景1:參數to_replace是標量,參數value也是標量
>>> s = pd.Series([0, 1, 2, 3, 4]) >>> s.replace(0, 5) 0 5 1 1 2 2 3 3 4 4 dtype: int64
場景2:參數to_replace是列表,參數value是標量,例如,把序列中匹配to_replace列表中的值替換爲5
>>> s = pd.Series([0, 1, 2, 3, 4]) >>> s.replace([0,2],5) 0 5 1 1 2 5 3 3 4 4 dtype: int64
場景3,參數to_replace是字典,參數value是None,例如,把序列中匹配字典的key的值替換爲字典的value。
>>> s = pd.Series([0, 1, 2, 3, 4]) >>> s.replace({0:5,1:7}) 0 5 1 7 2 2 3 3 4 4 dtype: int64
序列值的更新,有3種方式,第一種方式是使用標量值更新序列的單個值,第二種方式是經過索引切片修改序列的多個值,第三種方式是使用序列來更新一個序列。
1,使用標量來更新序列
索引到索引的單個值,經過賦值來修改序列
>>> s = pd.Series([0, 1, 2, 3, 4]) >>> s.iat[1]=7 >>> s 0 0 1 7 2 2 3 3 4 4 dtype: int64
2,使用切片來更新序列
經過loc屬性得到序列的切片,經過賦值一個列表來修改序列的多個值:
>>> s.loc[1:2]=[2,3] >>> s 0 0 1 2 2 3 3 3 4 4 dtype: int64
3,使用序列來更新序列
按照索引對齊方式就地修改序列,也就是說,在修改原始序列的值時,原始序列的索引必須和參數序列進行匹配,把索引相同的值修改成新值。
Series.update(self, other)
舉個例子,使用update()函數,修改索引爲0和2的值爲'd'和'e':
>>> s = pd.Series(['a', 'b', 'c']) >>> s.update(pd.Series(['d', 'e'], index=[0, 2])) >>> s 0 d 1 b 2 e dtype: object
缺失值使用NumPy.NaN ,NumPy.nan或者None來表示,使用isna()函數來檢查是否存在NA,使用dropna()刪除序列中的NA值,使用fillna()函數填充缺失值,
1,檢查序列是否存在缺失值
>>> s=pd.Series(data=[1,2,np.NaN,4]) >>> s.isna() 0 False 1 False 2 True 3 False dtype: bool
2,刪除序列中的缺失值
>>> s.dropna() 0 1.0 1 2.0 3 4.0 dtype: float64
使用fillna()函數,找到缺失數據相鄰的有效數據,使用該有效數據來填充缺失值:
Series.fillna(self, value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
參數註釋:
1,回填
回填是指backfill和bfill 方法,用缺失值以後的第一有效值來填充
>>> s.fillna(method='bfill') 0 1.0 1 2.0 2 4.0 3 4.0 dtype: float64
2,補填
補填是指 pad和ffill方法,用缺失值以前的有效值來填充
>>> s.fillna(method='ffill') 0 1.0 1 2.0 2 2.0 3 4.0 dtype: float64
3,固定值填充
當method爲None時,使用value參數指定的值來填充缺失值,固定值能夠是均值、中位數、和衆數,
>>> s.fillna(value=3,method=None) 0 1.0 1 2.0 2 3.0 3 4.0 dtype: float64
使用插補法擬合出缺失的值,而後用擬合值來填充缺失值:
Series.interpolate(self, method='linear', axis=0, limit=None, inplace=False, limit_direction='forward', limit_area=None, downcast=None, **kwargs)
參數註釋:
常見的插補方法是線性迴歸和多項式迴歸
1,線性迴歸擬合
linear是默認的擬合方法,linear 忽略索引,併發序列值做爲等間距,
>>> s.interpolate() 0 1.0 1 2.0 2 3.0 3 4.0 dtype: float64
2,多項式擬合
polynomial表示多項式擬合,須要傳遞order參數:
>>> s.interpolate(method='polynomial',order=2) 0 1.0 1 2.0 2 3.0 3 4.0 dtype: float64
參考文檔: