数据分析: 线性回归分析之研究二手房价的影响因素,建立房价预测模型


# -*- coding: utf-8 -*-
'''
研究二手房价的影响因素,建立房价预测模型,数据存放在“sndHsPr.csv”中。
分析思路:
在对房价的影响因素进行模型研究之前,首先对各变量进行描述性分析,
以初步判断房价的影响因素,进而建立房价预测模型
变量说明如下:
dist-所在区
roomnum-室的数量
halls-厅的数量
AREA-房屋面积
floor-楼层
subway-是否临近地铁
school-是否学区房
price-平米单价
步骤如下:
(一)	因变量分析:单位面积房价分析
(二)	自变量分析:
   2.1 自变量自身分布分析
   2.2 自变量对因变量影响分析
(三)建立房价预测模型
   3.1	线性回归模型
   3.2  对因变量取对数的线性模型
   3.3  考虑交互项的对数线性
(四)预测: 假设有一家三口,父母为了能让孩子在东城区上学,
想买一套邻近地铁的两居室,面积是70平方米,中层楼层,那么房价大约是多少呢?
'''

import pandas as pd
import os
from scipy import stats
import statsmodels.api as sm
from statsmodels.formula.api import ols
import matplotlib.pyplot as plt
import seaborn as sns

# 解决matplotlib中文显示以及负号(-)显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 数据导入和数据清洗
os.chdir(r'F:\python_data_analysis\data_file')
data = pd.read_csv('sndHsPr.csv')
print('数据预览: \n{}'.format(data.head()))

dist_columns = {'chaoyang': '朝阳区',
                'haidian': '海淀区',
                'fengtai': '丰台区',
                'xicheng': '西城区',
                'dongcheng': '东城区',
                'shijingshan': '石景山区'}

data['dist'] = data['dist'].map(dist_columns)
data['price'] = data['price']/10000

print(data.head())

# 描述性统计分析
# 频数统计
for i in range(7):
    if i != 3:
        print(data.columns.values[i], ':')
        print(data[data.columns.values[i]].agg(['value_counts']).T)
        print('===================================================')

# 两个连续性变量AREA和price的描述性统计
print('AREA :')
print(pd.DataFrame(data.AREA.agg(['mean', 'min', 'max', 'median', 'std'])).T)
print('===================================================')
print('连续型因变量price的描述性统计分析 :')
print(data[['price']].describe().T)

# 地区占比情况 饼图
data['dist'].value_counts().plot(kind='pie', autopct='%6.3f%%')
plt.show()

# 房价的分布 直方图
plt.hist(data['price'], bins=20)
plt.show()
# 各地区平均房价的差异 柱状图
data.groupby('dist')['price'].mean().sort_values(ascending=True).plot(x='price', y='dist', kind='barh')
plt.xlabel('平均房价')
plt.ylabel('地区', rotation=0)
plt.show()

# 各地区房价的分布 盒须图
dist_price_df = data[['dist', 'price']]
dist_price_df['dist'] = dist_price_df['dist'].astype('category')
dist_price_df['dist'].cat.set_categories(['石景山区', '丰台区', '朝阳区', '海淀区', '东城区', '西城区'], inp
  • 3
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值