python 資料去重
阿新 • • 發佈:2019-01-01
from pandas import DataFrame ''' python中的pandas模組中對重複資料去重步驟: 利用DataFrame中的 duplicated方法返回一個布林型的Series,顯示各行是否有重複行,沒有重複行顯示為FALSE,有重複行顯示為TRUE drop_duplicates方法用於返回一個移除了重複行的DataFrame。 如果duplicated方法和drop_duplicates方法中沒有設定引數,則這兩個方法預設會判斷全部咧, 如果在這兩個方法中加入了指定的屬性名(或者稱為列名), 例如:frame.drop_duplicates(['state']),則指定部分列(state列)進行重複項的判斷。 ''' ###移除重複資料 data = DataFrame({'k1': ['one'] * 3 + ['two'] * 4, 'k2': [1, 1, 2, 3, 3, 4, 4]}) #print(data) ''' k1 k2 0 one 1 1 one 1 2 one 2 3 two 3 4 two 3 5 two 4 6 two 4 ''' print(data.duplicated()) # duplicated 複製出的 ''' 0 False 1 True 2 False 3 False 4 True 5 False 6 True dtype: bool ''' print(data.drop_duplicates()) # drop_duplicates 移除複製出的 ''' k1 k2 0 one 1 2 one 2 3 two 3 5 two 4 ''' data['v1'] = range(7) data.drop_duplicates(['k1']) data.drop_duplicates(['k1', 'k2'], take_last=True) print(data) ''' k1 k2 v1 0 one 1 0 1 one 1 1 2 one 2 2 3 two 3 3 4 two 3 4 5 two 4 5 6 two 4 6 '''
這方法太簡單好用啦,建議大家多思考一下,它的運作原理。
import numpy as np from pandas import Series, DataFrame ###替換值 data = Series([1., -999., 2., -999., -1000., 3.]) #print( data ) ''''' 0 1.0 1 -999.0 2 2.0 3 -999.0 4 -1000.0 5 3.0 dtype: float64 ''' print( data.replace(-999, np.nan) ) #單值 替換 ''''' 0 1.0 1 NaN 2 2.0 3 NaN 4 -1000.0 5 3.0 dtype: float64 ''' print( data.replace([-999, -1000], np.nan) ) #多值替換 ''''' 0 1.0 1 NaN 2 2.0 3 NaN 4 NaN 5 3.0 dtype: float64 ''' print( data.replace([-999, -1000], [np.nan, 0]) ) #多值 替換為 多值 ''''' 0 1.0 1 NaN 2 2.0 3 NaN 4 0.0 5 3.0 dtype: float64 ''' print( data.replace({-999: np.nan, -1000: 0}) ) #多值 替換為 多值 ''''' 0 1.0 1 NaN 2 2.0 3 NaN 4 0.0 5 3.0 dtype: float64 '''