Python中有很多方法计算相关性,scipy中有自带的分析工具,pandas里也有非常方便的多变量相关性分析工具。我们今天就以计算一线城市二手房价相关性为例,讲讲这两个工具的用法。

1.数据收集

本文北上广深的数据采集自东方财富网,以二手房价格指数为例:

https://data.eastmoney.com/cjsj/newhouse.html

Python 算算哪个一线城市的房价还能涨_分析工具

数据从2011年1月1日开始,每个数据点是当时一个月的价格指数,采集方法是用开发者工具找到请求发回来的JSON数据,方法如下:

Python 算算哪个一线城市的房价还能涨_分析工具_02


数据如下(2011/1/1-2019/10/1),数据量过大,略去部分,详见下方阅读原文

# 北京:bj =[100.3,100.4,99.9,....,99.5,99.4]
1.# 广州:
2. gz =[101.2,100.6,99.5,....,99.7,99.9]
1.# 上海:      2. sh =[100.5,100.4,100.4,....,100.6,99.8]
# 深圳:sz =[100.6,102.6,100.6,....,101.3,101]

2.准备工作

首先,你要确保你的电脑安装了Python,如果没有可以看这篇文章:​​Python​​​​超详细安装指南​​。

然后,打开CMD(开始-运行-cmd),或者Terminal(macOS) 输入以下指令安装scipy和pandas.

pip install scipypip install pandas

3.编写代码

3.1 scipy计算相关性

scipy计算相关性其实非常简单,引入包的stats模块:

import scipy.stats as stats

然后调用函数进行计算:

# 计算广州和深圳二手房价格指数相关性print(stats.pearsonr(gz, sz))

结果如下:

F:\push\20191130>python 1.py(0.4673289851643741,4.4100775485723706e-07)

什么?!!广州和深圳的二手房价格指数相关性竟然才0.46?那其他一线城市和深圳对比呢?

不过,stats麻烦的地方就在于,它一次只能对比两个值,不能一次性两两对比四个一线城市,不过,有个模块可以——那就是pandas。

3.2 pandas一次性两两对比计算相关性

首先引入pandas:

import pandas as pd

创建DataFrame存放四个数据:

df = pd.DataFrame()df['北京'] = bjdf['上海'] = shdf['广州'] = gzdf['深圳'] = sz

最后相关性计算:

print(df.corr())

来看看结果:

Python 算算哪个一线城市的房价还能涨_分析工具_03


wow,看来深圳的二手房价还真是与众不同,不过从下面这个图看,确实,深圳的二手房价格和北京的二手房价格已经出现了背离的情况。


Python 算算哪个一线城市的房价还能涨_分析工具_04


个人认为,这个背离和最近的一系列政策及香港局势有关,但当前严峻的金融形势下,不会持续太久。


如果你喜欢今天的Python 教程,请持续关注Python实用宝典

Python实用宝典 (pythondict.com)

不只是一个宝典

欢迎关注公众号:Python实用宝典

Python 算算哪个一线城市的房价还能涨_python_05