代码包括以下几个部分:
- 缺失值处理
- 重复数据处理
- 异常值的检测与处理
- 数据排序
- 数据排名
# 数据清洗
# 缺失值处理
data=pd.read_excel('data_test05.xlsx')
print(data.head())
# 用info方法查看数据信息
print(data.info())
#判断是否存在缺失值
print(data.isnull())
print(data.notnull())
'''
# 缺失值删除,dropna()删除所有有缺失值的行
# 可以在dropna()中指定参数how='all',删除所有空行
data1=data.dropna()
print(data1)
'''
'''
# 只删除特定数据为空的行
data1=data[data['age'].notnull()]
print(data1)
# 缺失值填充,一般超过30%不考虑;
#一般用0,均值,众数
data['age']=data['age'].fillna(0)
print(data)
'''
'''
# 重复数据处理
# 判断每一行数据是否重复
data.duplicated()
# 去除全部重复数据
data.drop_duplicates()
# 去除指定列的重复数据
data.drop_duplicates(['age'])
# 保留重复行最后一行
data.drop_duplicates(['age'],keep='last')
# 删除重复项,生成副本
data1=data.drop_duplicates(['age'],inplace=False)
'''
'''
# 异常值的检测与处理
# 异常值是指超出正常范围的值
# 通常的检测方法:给定范围;均方差;箱型图
# 删除异常值
#通过均方差:
# 创建一个包含异常值的数据集
data = pd.DataFrame({'A': [1, 2, 3, 4, 100]})
# 计算数据的均值和标准差
mean = data['A'].mean()
std = data['A'].std()
# 定义异常值的阈值为均值加减3倍标准差
threshold = 3 * std
print(mean,std,threshold)
# 删除超过阈值的异常值
data = data[abs(data['A'] - mean) <= threshold]
print(data)
#箱型图
# 绘制箱型图
import matplotlib.pyplot as plt
plt.boxplot(data['A'])
plt.show()
# 使用箱型图判断异常值
q1 = data['A'].quantile(0.25)
q3 = data['A'].quantile(0.75)
iqr = q3 - q1
lower_bound = q1 - 1.5 * iqr
upper_bound = q3 + 1.5 * iqr
# 删除异常值
data = data[(data['A'] >= lower_bound) & (data['A'] <= upper_bound)]
print(data)
'''
# 数据排序 主要用sort_values()
# 按列排序
data1= data.sort_values(by='age',ascending=False)
print(data1)
# 先分组再排序
data2=data.groupby(['gender'])['income'].sum().reset_index()
data2=data2.sort_values(by='income')
print(data2)
# 按行排序
data3=data.sort_values(by=0)
print(data3)
# 数据排名 rank(),顺序排名:根据在原始数据中的出现顺序
#平均排名
data['平均排名']=data['income'].rank(ascending=False)
print(data[['uid','income','平均排名']])