(干货)数据分析案例--以上海二手房为例
发布日期:2025-03-30 00:22:51 浏览次数:8 分类:精选文章

本文共 2895 字,大约阅读时间需要 9 分钟。

沪东二手房数据分析:从无数据开始玩转数据

在数据分析领域,数据通常是分析的核心。而当手头没有数据时,如何在没有数据的情况下开展分析,成为一个颇具挑战性的课题。本文将以上海二手房数据为例,详细讲解在没有数据支持下,如何通过数据抓取、数据清洗、数据建模等技术手段,从零开始完成数据分析工作。


一、数据源的获取

在没有数据的背景下,首先需要找到可靠的数据来源。对于上海二手房数据而言,互联网平台是最直接的数据源。我们可以借助爬虫技术从如链家、房东家等平台抓取相关数据。以下是一些爬虫代码示例:

import requests
from bs4 import BeautifulSoup
url = 'https://bj.5i5i.com/chengshiwu/1014/'
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, 'html.parser')
houses = []
for house in soup.find_all('div', class_='info2'):
house_info = []
for span in house.find_all('span', class_='propPrice'):
house_info.append(span.text.strip())
price = float(house_info[0])
area = float(house_info[1].strip('平方米'))
floors = int(house_info[2].strip('层'"))
houses.append({
'价格': price,
'面积': area,
'层数': floors
})

通过如上代码,我们可以抓取到部分上海二手房的标价、面积和层数等信息。接下来,我们将这些数据清洗和整理,作为后续分析的基础数据。


二、数据探索与清洗

在实际应用中,抓取到的数据必定会存在缺失值、异常值等问题。因此,对数据进行清洗和探索是必不可少的步骤。

1. 户型分布

通过对户型数据的统计分析,我们可以发现上海二手房市场中,1室1厅和2室2厅的户型占据了较大的比重。为了便于后续建模,我们可以对户型进行分类,将低于1000套的户型归类为“其他”。

library(ggplot2)
type_freq <- data.frame(table(housestype))
type_p <- ggplot(data = type_freq, mapping = aes(x = reorder(Var1, -Freq), y = Freq)) +
geom_bar(stat = 'identity', fill = 'steelblue') +
theme(axis.text.x = element_text(angle = 30, vjust = 0.5)) +
xlab('户型') + ylab('套数')
type_p

2. 面积和房价的分布

面积和房价的分布往往偏离正态分布,这对后续的回归建模有较大挑战。以下是对房价的正态性检验结果:

norm.test(house$价格.W.)

检查表明,房价不满足正态分布,因此我们需要采用非参数检验方法或转换方法来处理数据。

3. 楼层分布

楼层是离散变量,但在建模中通常需要将其转换为哑变量。以下是对楼层的分类和分布分析:

floor <- substring(house$楼层, 1,2)
percent <- paste(round(prop.table(table(floor))*100, 2), '%', sep = '')
df <- data.frame(table(floor))
df <- cbind(df, percent)
df

此外,我们还需要对建筑时间进行处理。建筑时间的缺失值往往比较多,我们可以采用众数替补法来处理缺失值。

4. 区域均价

通过对各区域的房价均价进行分析,我们可以发现上海二手房价格在不同区域之间差异较大。以下是一些代码示例:

avg_price <- aggregate(house$单价.平方米., by = list(house$区域), mean)
p <- ggplot(data = avg_price, mapping = aes(x = reorder(Group.1, -x), y = x, group = 1)) +
geom_area(fill = 'lightgreen') +
geom_line(color = 'steelblue', size = 2) +
geom_point() +
xlab('') + ylab('均价')
p

三、模型构建

在数据清洗完成后,我们需要对数据进行建模。由于房价是连续变量,而户型、楼层等是离散变量,因此需要对离散变量进行哑变量处理。

1. 数据预处理

将离散变量转换为因子:

final_house$cluster <- factor(clust$cluster)
final_house$floow <- factor(final_house$floow)
final_house$type.new <- factor(final_house$type.new)

2. 线性回归建模

选择需要建模的数据:

factors <- names(final_house)[sapply(final_house, class) == 'factor']
formula <- as.formula(paste('~', paste(factors, collapse = '+')))
dummy <- dummyVars(formula = formula, data = final_house)
pred <- predict(dummy, newdata = final_house)
head(pred)

3. 模型诊断

通过模型诊断,我们可以检查残差项是否符合正态分布,检查自变量是否满足齐次性和多重共线性假设:

library(car)
toast(powerTransform(fit1))
plot(fit2)

四、模型评估

通过模型诊断和统计指标,我们可以评估建模的效果。例如,R²值表示模型对因变量的解释能力。通过COX-BOX变换和对数变换,我们可以提升模型的稳定性和准确性。


通过上述流程,我们可以从无数据开始完成上海二手房的价格分析,从而为房地产投资提供参考。数据分析是一个持续学习和实践的过程,每天进步一点点,才能在数据分析领域走得更远。关注小号,获取更多实用内容!

上一篇:(大部分安卓手机通用)一加OnePlus Ace3扬声器优化教程 外放直接媲美苹果
下一篇:2025版最新大模型开发流程(非常详细)零基础入门到精通,收藏这一篇就够了

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年05月09日 04时54分50秒