重複值處理¶
- .unique(): 回傳不重複的資料。
- .duplicated(): 回傳是否重複的bool結果。
- .drop_duplicates(): 刪除重複資料。
In [1]:
Copied!
import numpy as np
import pandas as pd
import numpy as np
import pandas as pd
In [2]:
Copied!
np.random.seed(987)
categories = np.random.choice(['A','B','C'], 10)
values = np.random.randint(1, 6, 10)
np.random.seed(987)
categories = np.random.choice(['A','B','C'], 10)
values = np.random.randint(1, 6, 10)
In [3]:
Copied!
df = pd.DataFrame({'categories':categories, 'values':values})
df = pd.DataFrame({'categories':categories, 'values':values})
In [4]:
Copied!
df
df
Out[4]:
categories | values | |
---|---|---|
0 | B | 5 |
1 | C | 4 |
2 | C | 2 |
3 | C | 4 |
4 | B | 3 |
5 | C | 1 |
6 | C | 3 |
7 | A | 2 |
8 | C | 2 |
9 | C | 3 |
.unique()¶
如果只是要找Series裡面不重複的資料,則使用.unique()。
https://pandas.pydata.org/docs/reference/api/pandas.unique.html
In [6]:
Copied!
df['categories'].unique()
df['categories'].unique()
Out[6]:
array(['B', 'C', 'A'], dtype=object)
In [8]:
Copied!
df['values'].unique()
df['values'].unique()
Out[8]:
array([5, 4, 2, 3, 1])
.duplicated()¶
參數:
subset: 設定要比對的欄位。
keep: {'first', 'last', False} 看看是要保留第一筆資料,最後一筆資料,或者只要重複就標成True。預設是'first'。
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.duplicated.html
In [10]:
Copied!
df
df
Out[10]:
categories | values | |
---|---|---|
0 | B | 5 |
1 | C | 4 |
2 | C | 2 |
3 | C | 4 |
4 | B | 3 |
5 | C | 1 |
6 | C | 3 |
7 | A | 2 |
8 | C | 2 |
9 | C | 3 |
In [9]:
Copied!
df.duplicated()
df.duplicated()
Out[9]:
0 False 1 False 2 False 3 True 4 False 5 False 6 False 7 False 8 True 9 True dtype: bool
In [11]:
Copied!
df.duplicated(keep='last')
df.duplicated(keep='last')
Out[11]:
0 False 1 True 2 True 3 False 4 False 5 False 6 True 7 False 8 False 9 False dtype: bool
In [13]:
Copied!
df.duplicated(keep=False)
df.duplicated(keep=False)
Out[13]:
0 False 1 True 2 True 3 True 4 False 5 False 6 True 7 False 8 True 9 True dtype: bool
In [14]:
Copied!
df.duplicated(subset=['categories'])
df.duplicated(subset=['categories'])
Out[14]:
0 False 1 False 2 True 3 True 4 True 5 True 6 True 7 False 8 True 9 True dtype: bool
.drop_duplicates()¶
In [15]:
Copied!
df
df
Out[15]:
categories | values | |
---|---|---|
0 | B | 5 |
1 | C | 4 |
2 | C | 2 |
3 | C | 4 |
4 | B | 3 |
5 | C | 1 |
6 | C | 3 |
7 | A | 2 |
8 | C | 2 |
9 | C | 3 |
In [16]:
Copied!
df.drop_duplicates()
df.drop_duplicates()
Out[16]:
categories | values | |
---|---|---|
0 | B | 5 |
1 | C | 4 |
2 | C | 2 |
4 | B | 3 |
5 | C | 1 |
6 | C | 3 |
7 | A | 2 |
In [17]:
Copied!
df.drop_duplicates(keep='last')
df.drop_duplicates(keep='last')
Out[17]:
categories | values | |
---|---|---|
0 | B | 5 |
3 | C | 4 |
4 | B | 3 |
5 | C | 1 |
7 | A | 2 |
8 | C | 2 |
9 | C | 3 |
In [18]:
Copied!
df.drop_duplicates(subset=['categories'])
df.drop_duplicates(subset=['categories'])
Out[18]:
categories | values | |
---|---|---|
0 | B | 5 |
1 | C | 4 |
7 | A | 2 |