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订阅号:数据杂坛,获取完整代码和效果,将持续更新!