python数据去重方法(python实现数据清洗重复值)
python数据去重方法(python实现数据清洗重复值)43import numpy as np2import pandas as pd
实现功能:
python实现数据清洗,对重复记录、缺失值、异常值进行检测,并对其进行处理。
实现代码:
| 
     1  | 
     import numpy as np  | 
| 
     2  | 
     import pandas as pd  | 
| 
     3  | |
| 
     4  | 
     def Read_data(file):  | 
| 
     5  | 
     dt = pd.read_csv(file)  | 
| 
     6  | 
     dt.columns = ['age' 'sex' 'chest_pain_type' 'resting_blood_pressure' 'cholesterol'  | 
| 
     7  | 
     'fasting_blood_sugar' 'rest_ecg' 'max_heart_rate_achieved' 'exercise_induced_angina'  | 
| 
     8  | 
     'st_depression' 'st_slope' 'num_major_vessels' 'thalassemia' 'target']  | 
| 
     9  | 
     data =dt  | 
| 
     10  | 
     pd.set_option('display.max_rows' None)  | 
| 
     11  | 
     pd.set_option('display.max_columns' None)  | 
| 
     12  | 
     pd.set_option('display.width' None)  | 
| 
     13  | 
     pd.set_option('display.unicode.ambiguous_as_wide' True)  | 
| 
     14  | 
     pd.set_option('display.unicode.east_asian_width' True)  | 
| 
     15  | 
     print(data.head())  | 
| 
     16  | 
     return data  | 
| 
     17  | |
| 
     18  | 
     def data_clean(data):  | 
| 
     19  | 
     # 重复值处理  | 
| 
     20  | 
     print('存在' if any(data.duplicated()) else '不存在' '重复观测值')  | 
| 
     21  | 
     data.drop_duplicates()  | 
| 
     22  | |
| 
     23  | 
     # 缺失值处理  | 
| 
     24  | 
     print(data.isnull())  | 
| 
     25  | 
     print(data.isnull().sum()) #检测每列中缺失值的数量  | 
| 
     26  | 
     print(data.isnull().T.sum()) #检测每行缺失值的数量  | 
| 
     27  | 
     print('不存在' if any(data.isnull()) else '存在' '缺失值')  | 
| 
     28  | 
     data.dropna() # 直接删除记录  | 
| 
     29  | 
     data.fillna(method='ffill') # 前向填充  | 
| 
     30  | 
     data.fillna(method='bfill') # 后向填充  | 
| 
     31  | 
     data.fillna(value=2) # 值填充  | 
| 
     32  | 
     data.fillna(value={'resting_blood_pressure': data['resting_blood_pressure'].mean()}) # 统计值填充  | 
| 
     33  | |
| 
     34  | 
     # 异常值处理  | 
| 
     35  | 
     data1 = data['resting_blood_pressure']  | 
| 
     36  | 
     # 标准差监测  | 
| 
     37  | 
     xmean = data1.mean()  | 
| 
     38  | 
     xstd = data1.std()  | 
| 
     39  | 
     print('存在' if any(data1 > xmean 2 * xstd) else '不存在' '上限异常值')  | 
| 
     40  | 
     print('存在' if any(data1 < xmean - 2 * xstd) else '不存在' '下限异常值')  | 
| 
     41  | 
     # 箱线图监测  | 
| 
     42  | 
     q1 = data1.quantile(0.25)  | 
| 
     43  | 
     q3 = data1.quantile(0.75)  | 
| 
     44  | 
     up = q3 1.5 * (q3 - q1)  | 
| 
     45  | 
     dw = q1 - 1.5 * (q3 - q1)  | 
| 
     46  | 
     print('存在' if any(data1 > up) else '不存在' '上限异常值')  | 
| 
     47  | 
     print('存在' if any(data1 < dw) else '不存在' '下限异常值')  | 
| 
     48  | 
     data1[data1 > up] = data1[data1 < up].max()  | 
| 
     49  | 
     data1[data1 < dw] = data1[data1 > dw].min()  | 
| 
     50  | 
     # print(data1)  | 
| 
     51  | |
| 
     52  | 
     if __name__=="__main__":  | 
| 
     53  | 
     data1=Read_data("F:\数据杂坛\\0504\heartdisease\Heart-Disease-Data-Set-main\\UCI Heart Disease Dataset.csv")  | 
| 
     54  | 
     data_clean(data1)  | 
实现效果:



喜欢记得点赞,在看,收藏,
关注V订阅号:数据杂坛,获取完整代码和效果,将持续更新!




