Pandas 二手房数据清洗、可视化、实战练习(带源码、资源)

Pandas 二手房数据清洗、可视化、实战

数据清洗

使用pandas打开csv文件

import pandas as pd
data=pd.read_csv('data.csv')
print(data)

image-20211212151643955

第一步 设置索引列

import pandas as pd
data=pd.read_csv('data.csv',index_col=0)
print(data)

index_col=0指定第一列为索引列

image-20211212151827163

第二步 去单位(总价、建筑面积、单价字段)

使用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

数据分析

各区均价分析

data.groupby(‘区域’)将数据按区域分组

可以使用get_group(‘二道’)使用子组的数据、

df=data.groupby('区域')
print(df.get_group('二道'))

image-20211212160038698

df[‘单价’].mean().round(2)

获取使用单价的平均值 并保留2位小数点

# 各区均价分析
df=data.groupby('区域')
ave=df['单价'].mean().round(2)
print(ave)

image-20211212155206487

各区房子比

使用apply遍历

使用lambda表达式 除总数

df=data.groupby('区域').size()
home=df.apply(lambda x:x/df.values.sum()*100)
print(home)

image-20211212161320430

装修程度

df=data.groupby('装修').size()
print(df)

image-20211212161816922

数据可视化

各区均价

# 各区均价分析
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

各区房子

# 各区房子比
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

装修

df=data.groupby('装修').size()
plt.rcParams['font.sans-serif'] = ['FangSong']
plt.title('装修程度')
plt.bar(df.index,df.values)
plt.show()

image-20211212184217133

全部代码

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下载链接

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小旺不正经

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值