建筑领域大数据分析[通过python爬取分析房价信息](第二篇:数据分析)

2018年5月9日 0 条评论 797 次阅读 0 人点赞

说明:在上一篇的集成上为了方便时间记录,在下载之前已经加上了时间戳,方便后期进行处理

(上一篇:建筑领域大数据获取[通过python爬取房价信息](第一篇:数据获取)

这一篇CS土木工程师继续来带你玩python获取有关房价的大数据并进行分析

上一篇我们已经从互联网上暴力获取到了很多数据信息,格式均为excel的,那么我们需要怎么处理呢?思路如下:

  1. 将数据解压出来,并按照时间顺序进行统计(定义一个数据格式{时间:房价信息数据})
  2. 读取excel,将每一个文件中的数据读取出来
  3. 组合价格信息并进行分析

1.遍历解压

首先将之前下载好的zip/rar文件全部解压

先遍历当前文件夹,然后用zipfile/rarfile进行解压

以下为遍历目录的关键代码:

import os
def get_zip_file_path(file_dir):
    for root, dirs, files in os.walk(file_dir):
        print(root) #当前目录路径
        print(dirs) #当前路径下所有子目录
        print(files) #当前路径下所有非目录子文件
    zip_files = []
    for name in files:
        if (name.find('zip') != -1 ) | (name.find('.rar') != -1):
            zip_files.append(os.path.join(root, name))
    return zip_files

以下为解压的关键代码:

import zipfile
def un_zip(file_name):
    """unzip zip file"""
    zip_file = zipfile.ZipFile(file_name)
    file_path = file_name.split('.', 1)[0]
    if os.path.isdir(file_path):
        pass
    else:
        os.mkdir(file_path)
    for names in zip_file.namelist():
        zip_file.extract(names, file_path)
    zip_file.close()

如下图及代码所述,就已经将我们的文件全部解压成功待用!

然后遍历文件夹下的xlxs文件(不管同名的文件),将数据存储为

{日期:[目录, [xlsx名称]]} 备用

用来待会儿遍历文件使用

2.读取excel数据

接下来我们先研究一下python如何读取excel

使用xlrd可以很方便地对excel进行读取,import进来

以下为读取excel的关键代码:

# 解析xlsx
import xlrd

p = list()
workbook = xlrd.open_workbook( '3.xlsx' )
sheets = workbook.sheet_names()#查看所有sheet
all_values = []
for sheet_name in sheets:
    booksheet = workbook.sheet_by_name(sheet_name)  #或用名称取sheet
    #读一行数据
    row_3 = booksheet.row_values(2) # 表头
    row_length = booksheet.nrows
    for i in range(3, row_length):
        if isinstance(booksheet.row_values(i)[3], float):
            all_values.append(booksheet.row_values(i)[3])

print(all_values)

通过观察所有excel发现,房价信息都在第三行到末尾,于是我们通过遍历excel的sheets,然后遍历每一个的第三行到末尾,即可统计房价信息:下图为直接获取每一行的全部信息

其他数据不需要,因此我们修改成:把全部的单价信息获取出来:

可以看出,一个excel只需要0.4秒就可以读取完毕

接下来就可以遍历上面第一条的全部excel来进行房价的计算了

3.遍历读取excel并计算房价

通过遍历上文中获取的{时间:[路径,[excel表] ] },使用第二步的读取excel的算法即可将全部的房价信息进行统计:

遍历如下:

for k, v in data_list.items():
    print('时间:', k)
    print(v)
    values = []
    for item in v[1]:
        excel_path = v[0] + '\\' + item
        print(excel_path)
        values += get_price_from_excel(excel_path)
        print(values)
    realestate_cost[k] = sum(values)/len(values)

小结:

从上面的输出可以发现,我们已经获取到了最近的房价信息,那么我们可以进行分析一下

暂时就先不用python进行分析了,我们直接导入excel来看看吧!

对excel进行统计后发现,某市的房价信息的趋势是:

(去除了部分统计失误的数据)

可以看出,西安(新房)房价的趋势是稳中略涨。。。。

过年之前的(新房)房价是最高的,过年期间跌了,过完年新房还是逐渐在涨的。最高均价为1.3w哦。

后记:

代码写得比较仓促,也没有重构或者使用基本的设计模式,只是一行一行在执行,本文也只是为了介绍一些用到的技巧,代码写得不好看,可以随便喷。

今从晚向

这个人太懒什么东西都没留下

文章评论(0)

你必须 登录 才能发表评论