当前位置: 首页 > news >正文

python数据分析项目之:房地产数据可视化分析

先回顾一下数据分析的四大步骤:

目录

一、数据导入

二、数据清洗

三、特征构造(核心)

四、可视化分析


下面就根据以上步骤进行房地产项目数据分析实战:

一、数据导入

# 1. 导入项目所用到的库
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from matplotlib import rcParams
rcParams['font.sans-serif'] = ['SimHei'] #win电脑画图字体
# 2. 导入数据
df = pd.read_csv(r'E:/project/data/house_sales.csv')
# 3. 数据概览
print('总记录数:', len(df))
print('字段数量:', len(df.columns))
df.head(5)
df.info()

运行结果如下:

二、数据清洗

# 数据清洗
# 1、删除无用的数据列
df.drop(columns='origin_url',inplace=True)
# 2、检查是否有缺失值
df.isna().sum()
# 删除缺失值
df.dropna(inplace=True)
# 检查是否有重复值
df.duplicated().sum()
# 删除重复数据
df.drop_duplicates(inplace=True)
# 查看数据
print(len(df))
# 3、数据列处理
# 面积的数据类型转换
df['area'] = df['area'].str.replace('㎡','').astype(float)
# 售价的数据类型转换
df['price'] = df['price'].str.replace('万','').astype(float)
# 朝向的数据类型转换
df['toward'] = df['toward'].astype('category')
# 单价的数据类型转换
df['unit'] = df['unit'].str.replace('元/㎡','').astype(float)
# 建造年份的数据类型转换
df['year'] = df['year'].str.replace('年建','').astype(int)
# 4、异常值的处理
# 房屋面积的异常处理
df = df[ (df['area']<600) & (df['area']>20)]
# 房屋售价的异常处理  IQR
Q1 = df['price'].quantile(0.25)
Q3 = df['price'].quantile(0.75)
IQR = Q3 - Q1
low_price = Q1 - 1.5*IQR
high_price = Q3 + 1.5*IQR
df = df[ (df['price']<high_price) & (df['price']>low_price) ]

三、数据特征构造

# 1. 新数据特征构造
# 地区district
df['district'] = df['address'].str.split('-').str[0]# 楼层的类型floor_type
df['floor_type'] = df['floor'].str.split('(').str[0].astype('category')
def fun1(str1):if pd.isna(str1):return '未知'elif '低' in str1:return '低楼层'elif '中' in str1:return '中楼层'elif '高' in str1:return '高楼层'else:return '未知'
df['floor_type2'] = df['floor'].apply(fun1).astype('category')# 是否是直辖市zxs
df['zxs'] = df['city'].apply(lambda x: 1 if x in ['北京','上海','天津','重庆'] else 0)# 卧室的数量bedrooms
df['bedrooms'] = df['rooms'].str.split('室').str[0].astype(int)# 客厅的数量livingrooms
# df['rooms'].str.split('室').str[1].str.split('厅').str[0].astype(int)
df['livingrooms'] = df['rooms'].str.extract(r'(\d+)厅').astype('int')# 楼龄building_age
df['building_age'] = 2025 - df['year']# 价格的分段price_labels
df['price_labels'] = pd.cut(df['price'],bins=4,labels=['低价','中价','高价','豪华'])

四、可视化分析

问题编号: A1
问题: 哪些变量最影响房价?面积、楼层、房间数哪个影响更大?
分析主题: 特征相关性
分析目标: 了解房屋各特征对房价的线性影响
分组字段: 无
指标/方法: 皮尔逊相关系数
# 选择数值型特征
a = df[['price','area','unit','building_age']].corr()#相关系数
# 对房价的影响最大的几个因素的排序
a['price'].sort_values(ascending=False)[1:]
# 相关性的热力图
plt.figure(figsize = (5,5))
sns.heatmap(a,cmap='coolwarm')
plt.title('房屋特征相关性热力图')
plt.tight_layout()

运行结果如下:

问题编号: A2
问题: 全国房价总体分布是怎样的?是否存在极端值?
分析主题: 描述性统计
分析目标: 概览数值型字段的分布特征
分组字段: 无
指标/方法: 平均数/中位数/四分位数/标准差

代码如下:

# 房价分布直方图
plt.subplot(111)
plt.hist(df['price'],bins=10)
df.head()
sns.histplot(data=df,x='price',bins=10,kde=True)

运行结果如下;

问题编号: A3
问题: 哪些城市房价最高?直辖市与非直辖市差异如何?
分析主题: 城市对比
分析目标: 比较不同城市房价水平
分组字段: city
指标/方法: 均价/单价中位数/箱线图

代码如下:

# 按城市统计
city_stats = df.groupby('city').agg({'price': ['mean', 'median', 'count'],'unit': ['mean', 'median']
})
print("\n各城市房价统计:")
display(city_stats.sort_values(('unit', 'mean'), ascending=False).head(10))# 可视化前10城市
top_cities = city_stats.sort_values(('unit', 'mean'), ascending=False).head(10).index
df_top = df[df['city'].isin(top_cities)]plt.figure(figsize=(12, 6))
sns.boxplot(x='city', y='price', data=df_top, order=top_cities)
plt.title('TOP10城市房价分布对比', fontsize=14)
plt.xlabel('城市')
plt.ylabel('价格(元)')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

运行结果如下:

问题编号: A4
问题: 高价房在面积、楼层等方面有什么特征?
分析主题: 价格分层
分析目标: 识别不同价位房屋特征差异
分组字段: 价格分段(低中高)
指标/方法: 列联表/卡方检验
# 按价格分段分析特征
price_group = df.groupby('price_labels').agg({'area': ['mean', 'median'],'building_age': 'mean','unit': 'median','zxs': 'mean'  # 直辖市占比
})print("\n各价格层级特征对比:")
display(price_group)# 可视化
plt.figure(figsize=(14, 5))plt.subplot(131)
sns.barplot(x='price_labels', y='area', data=df, estimator=np.median)
plt.title('不同价格层级面积对比')
plt.ylabel('面积(㎡)')plt.subplot(132)
sns.boxplot(x='price_labels', y='building_age', data=df)
plt.title('不同价格层级楼龄分布')
plt.ylabel('楼龄(年)')plt.tight_layout()
plt.show()

运行结果如下:

问题编号: A5
问题: 哪种户型最受欢迎?三室比两室贵多少?
分析主题: 户型分析
分析目标: 分析不同户型的市场表现
分组字段: rooms
指标/方法: 占比/平均单价/溢价率
print("\n=== A5 户型分析 ===")# 提取房间数(示例:"3室2厅" -> 3)
df['room_count'] = df['rooms'].str.extract('(\d+)室').astype(float)# 按户型统计
room_stats = df.groupby('room_count').agg({'price': ['mean', 'median'],'unit': 'median','area': 'median','city': 'nunique'
}).sort_values(('price', 'mean'))print("\n各户型市场表现:")
display(room_stats)# 可视化
plt.figure(figsize=(14, 5))plt.subplot(131)
sns.boxplot(x='room_count', y='price', data=df)
plt.title('不同户型总价分布')
plt.xlabel('房间数')plt.subplot(132)
sns.scatterplot(x='area', y='price', hue='room_count', data=df, palette='viridis')
plt.title('面积-价格-户型关系')plt.subplot(133)
sns.barplot(x='room_count', y='unit', data=df, estimator=np.median)
plt.title('不同户型单价对比')
plt.xlabel('房间数')plt.tight_layout()
plt.show()

问题编号: A6
问题: 南北向是否真比单一朝向贵?贵多少?
分析主题: 朝向溢价
分析目标: 评估不同朝向的价格差异
分组字段: toward
指标/方法: 方差分析/多重比较
df['toward'].value_counts()
df.groupby('toward').agg({'price':['mean','median'],'unit':'median','building_age':'mean',
})
# 数据可视化
plt.figure(figsize=(14, 5))
sns.boxplot(x='toward', y='price', data=df)
plt.tight_layout()

运行结果如下:

    以上就是通过项目来加强学习的整体内容,有兴趣也可是看看视频教程:

https://www.bilibili.com/video/BV1D9GLzyEL6?spm_id_from=333.788.videopod.episodes&vd_source=2fabb5d4151ae7af2ad1f5a9905c5bbe&p=63

http://www.dtcms.com/a/544852.html

相关文章:

  • 银川微信网站开发一块地需要多少钱
  • Unity编辑器扩展入门篇 - Unity Assets菜单
  • html中音乐网站怎么做自助建站系统建的网站做排名吗
  • 【Linux命令】对ps -ef命令的输出的解读
  • 第二届大数据、神经网络与深度学习研讨会(BDNNDL 2025)
  • 2025年免费aippt排行
  • 【大模型】理论基础(1):函数与神经网络
  • 认识主板总结与硬件工程师岗位笔试面试题集
  • Spring Boot Actuator 监控机制解析
  • 建设网站协议范本哈尔滨制作网页公司
  • 文章修改网站旅游管理论文题目选题
  • Rabbitmq扇形队列取消绑定交换机之后任然接收消息问题
  • 网站正在建设中代码哪个软件发视频可以赚钱
  • web网页开发,天气可视化开发,基于Python,FlaskWeb,无数据,数据写死
  • S11e Protocol:重塑品牌资产的 Web3 RWA 基础设施革命
  • 34_AI智能体工具插件之动态注册钉钉待办工具构建企业级任务管理AI助手
  • Java 大视界 -- Java 大数据在智慧文旅旅游线路规划与游客流量均衡调控中的应用实践
  • 33_AI智能体工具插件之钉钉API交互工具封装构建企业级AI应用
  • 数字孪生热力图可视化为何被广泛应用?
  • 国内免费可商用图片素材网站孝感做招聘信息的网站
  • Django在服务端的部署(无废话)
  • 当 AI Agent 遇上 MCP:微软 Agent Framework 的“瑞士军刀“式扩展之道
  • 个人网站建设培训药品网络营销公司
  • 20MW-10MWh储能项目施工方案
  • RHCA - DO374 | Day05:管理主机清单
  • 【完整源码+数据集+部署教程】【天线&水】无人机视角水面漂浮物体检测系统源码&数据集全套:改进yolo11-REPVGGOREPA
  • 思源实时同步设置步骤和节点部署
  • 电脑间如何快速传输大文件?4种高效数据迁移方法任选
  • 云栖实录 | AI原生搜索引擎:Elasticsearch 换“芯”——AI原生搜索内核增强技术
  • 手机可以做网站学校网站建设与管理办法