Pandas 二手房数据清洗、可视化、实战
数据清洗
使用pandas打开csv文件
import pandas as pd
data=pd.read_csv('data.csv')
print(data)
![image-20211212151643955](https://img-blog.csdnimg.cn/img_convert/ee523c3928700e9f35d3699a4903d227.png)
第一步 设置索引列
import pandas as pd
data=pd.read_csv('data.csv',index_col=0)
print(data)
index_col=0指定第一列为索引列
![image-20211212151827163](https://img-blog.csdnimg.cn/img_convert/34269362d48504d8177449e205d02f49.png)
第二步 去单位(总价、建筑面积、单价字段)
使用map或apply 加lambda表达式 清洗数据
map(apply) 会编码元素
lambda表达式的作用是: 使用字符串的replace 将指定的字符替换成‘’(空)
再使用.astype(float)将数据转成数值型
import pandas as pd
data=pd.read_csv('data.csv',index_col=0)
data['总价']=data['总价'].map(lambda x:str(x).replace('万',''))
data['总价']=data['总价'].astype(float)
data['建筑面积']=data['建筑面积'].apply(lambda x:str(x).replace('平米',''))
data['建筑面积']=data['建筑面积'].astype(float)
data['单价']=data['单价'].apply(lambda x:str(x).replace('元/平米',''))
data['单价']=data['单价'].astype(float)
print(data)
![image-20211212153703770](https://img-blog.csdnimg.cn/img_convert/1cd8963ce68d000c9af757dbad0938fa.png)
数据分析
各区均价分析
data.groupby(‘区域’)将数据按区域分组
可以使用get_group(‘二道’)使用子组的数据、
df=data.groupby('区域')
print(df.get_group('二道'))
![image-20211212160038698](https://img-blog.csdnimg.cn/img_convert/57422ea9b5d2558b6f22e4e329d362e7.png)
df[‘单价’].mean().round(2)
获取使用单价的平均值 并保留2位小数点
# 各区均价分析
df=data.groupby('区域')
ave=df['单价'].mean().round(2)
print(ave)
![image-20211212155206487](https://img-blog.csdnimg.cn/img_convert/f6d947ad1b968a1d00f07d14cfd5e4a4.png)
各区房子比
使用apply遍历
使用lambda表达式 除总数
df=data.groupby('区域').size()
home=df.apply(lambda x:x/df.values.sum()*100)
print(home)
![image-20211212161320430](https://img-blog.csdnimg.cn/img_convert/716349bb65dc3197007ae14591daeb96.png)
装修程度
df=data.groupby('装修').size()
print(df)
![image-20211212161816922](https://img-blog.csdnimg.cn/img_convert/fcc3a03498409edf4b05fb5179436988.png)
数据可视化
各区均价
# 各区均价分析
df=data.groupby('区域')
ave=df['单价'].mean().round(2)
plt.rcParams['font.sans-serif'] = ['FangSong']
plt.bar(ave.index,ave.values)
plt.title('各区均价')
plt.xlabel('区域')
plt.ylabel('均价')
plt.savefig('各区均价')
plt.show()
![image-20211212163808595](https://img-blog.csdnimg.cn/img_convert/77bcd7a0df14b4c03833122a304715ba.png)
各区房子
# 各区房子比
df=data.groupby('区域').size()
home=df.apply(lambda x:x/df.values.sum()*100)
plt.rcParams['font.sans-serif'] = ['FangSong']
plt.title('各区房子比')
plt.pie(home.values,labels=home.index)
plt.show()
![image-20211212183758616](https://img-blog.csdnimg.cn/img_convert/0f9c1e0c37ae2e2a855c9de6499925b2.png)
装修
df=data.groupby('装修').size()
plt.rcParams['font.sans-serif'] = ['FangSong']
plt.title('装修程度')
plt.bar(df.index,df.values)
plt.show()
![image-20211212184217133](https://img-blog.csdnimg.cn/img_convert/234ddb6851a161e285f0babf9703c3bd.png)
全部代码
import pandas as pd
import matplotlib.pyplot as plt
data=pd.read_csv('data.csv',index_col=0)
# 数据清洗
data['总价']=data['总价'].map(lambda x:str(x).replace('万',''))
data['总价']=data['总价'].astype(float)
data['建筑面积']=data['建筑面积'].apply(lambda x:str(x).replace('平米',''))
data['建筑面积']=data['建筑面积'].astype(float)
data['单价']=data['单价'].apply(lambda x:str(x).replace('元/平米',''))
data['单价']=data['单价'].astype(float)
# 数据分析
# 各区均价分析
# df=data.groupby('区域')
# ave=df['单价'].mean().round(2)
# plt.rcParams['font.sans-serif'] = ['FangSong']
# plt.bar(ave.index,ave.values)
# plt.title('各区均价')
# plt.xlabel('区域')
# plt.ylabel('均价')
# plt.savefig('各区均价')
# plt.show()
# 各区房子比
# df=data.groupby('区域').size()
# home=df.apply(lambda x:x/df.values.sum()*100)
# plt.rcParams['font.sans-serif'] = ['FangSong']
# plt.title('各区房子比')
# plt.pie(home.values,labels=home.index)
# plt.show()
# 装修程度
df=data.groupby('装修').size()
plt.rcParams['font.sans-serif'] = ['FangSong']
plt.title('装修程度')
plt.bar(df.index,df.values)
plt.show()
资源文件
csv下载链接
|