import pandas as pd
# 模块二:数据获取与清洗
# 1.子任务一:数据获取
data=pd.read_csv('house_sales.csv',encoding='gbk')
# print(data.head(10))
# print(data[:10])
#两种方法都可以
#2. 子任务二:使用 python 数据清洗
1
data1=data.copy()
data1=data1[(data1['面积(㎡)'].notnull()) & (data1['面积(㎡)']!=0)]
# 我认为最方便的数据清洗空值方法,notnull 直接提取不是空值的数据然后再进行判
断
# print(data1['面积(㎡)'].isnull().sum())
a3=len(data)-len(data1)
# data1.to_csv(f'cleaned_data_c1_{a3}.csv',index=False)
2
data2=data1.copy()
data2=data2.drop([998,1498,18513,19752,19977,20453],axis=0)
data2['价格(万元)']=pd.to_numeric(data2['价格(万元)'])
a=data2['价格(万元)'].mean()*3
data2=data2[(data2['价格(万元)'].notnull()) & (data2['价格(万元)']<=a)]
# 用 pd.to_numeric 这种方法有一个特性就是他会告诉你报错的是数据的哪行,所以我
们可以利用这个特性来处理异常数据以便处理异常值,算是我认为处理异常数据简单
高效的一种方法
# print(data2['价格(万元)'].max())
a4=len(data1)-len(data2)
# data2.to_csv(f'cleaned_data_c2_{a4}.csv',index=False)
3
data3=data2.copy()
# print(data3['户型'].value_counts())
def a(x):
a=x['户型'].split('房间')
if len(a)>1:
return a[0]+'室 0 厅'
else:
return x['户型']