说明:在上一篇的集成上为了方便时间记录,在下载之前已经加上了时间戳,方便后期进行处理
(上一篇:建筑领域大数据获取[通过python爬取房价信息](第一篇:数据获取))
这一篇CS土木工程师继续来带你玩python获取有关房价的大数据并进行分析
上一篇我们已经从互联网上暴力获取到了很多数据信息,格式均为excel的,那么我们需要怎么处理呢?思路如下:
- 将数据解压出来,并按照时间顺序进行统计(定义一个数据格式{时间:房价信息数据})
- 读取excel,将每一个文件中的数据读取出来
- 组合价格信息并进行分析
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)