讀取CSV
-
讀取CSV文件由兩種方式:
-
第一種
import csvwith open('data.csv','r',encoding = 'utf8') as fp: reader = csv.reader(fp) for row in reader: print(row)
-
第二種
import pandas as pd #需要導入pandas庫df = pd.read_csv('data.csv')print(df)
用pandas庫的.drop_duplicates函數
1 import shutil 2 import pandas as pd 3 4 5 frame=pd.read_csv('E:/bdbk.csv',engine='python') 6 data = frame.drop_duplicates(subset=['名稱'], keep='first', inplace=False) 7 data.to_csv('E:/baike.csv', encoding='utf8')
通常會分為兩種情況,一種是去除完全重復的行數據,另一種是去除某幾列重復的行數據,就這兩種情況可用下面的代碼進行處理。
1. 去除完全重復的行數據
- data.drop_duplicates(inplace=True)
2. 去除某幾列重復的行數據
- data.drop_duplicates(subset=['A','B'],keep='first',inplace=True)
subset: 列名,可選,默認為None
keep: {‘first’, ‘last’, False}, 默認值 ‘first’
- first: 保留第一次出現的重復行,刪除后面的重復行。
- last: 刪除重復項,除了最后一次出現。
- False: 刪除所有重復項。
inplace:布爾值,默認為False,是否直接在原數據上刪除重復項或刪除重復項后返回副本。
( inplace=True表示直接在原來的DataFrame上刪除重復項,而默認值False表示生成一個副本。)
DataFrame.drop_duplicates(subset = None, keep = 'first')
DataFrame.drop_duplicates()中的參數完全實現。
其中subset這個參數默認‘None’是指選擇所有列,即所有列的值都相同我才認為這兩行是重復的,
也可以自定義為其中一部分列變量名,比如subset=['name','sex','age']。
keep參數中'first'和‘last’會根據index的前后產生不同的效果。參數False會去除所有重復行。
舉個栗子:
name sex age
0 coco female 7
1 lily female 7
2 joe male 15
3 coco female 7
DataFrame.drop_duplicates(subset = None, keep = 'first'),產生的結果如下:
name sex age
0 coco female 7
1 lily female 7
2 joe male 15
若使用代碼DataFrame.drop_duplicates(subset = None, keep = 'last'),結果如下:
name sex age
1 lily female 7
2 joe male 15
3 coco female 7
發現不考慮index以及行的順序,效果與參數first相同。
若使用代碼DataFrame.drop_duplicates(subset = None, keep = False), 則把相同的行全部刪除,結果如下:
name sex age
1 lily female 7
2 joe male 15
所有重復的行都被刪除,沒有保留。
若使用代碼DataFrame.drop_duplicates(subset = ['sex' , 'age'] , keep = False), 結果如下:
name sex age
2 joe male 15