1. 程式人生 > >python 資料去重

python 資料去重

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 
'''