建築領域大數據分析[通過python爬取分析房價信息](第二篇:數據分析)

建築領域大數據分析[通過python爬取分析房價信息](第二篇:數據分析)

說明:在上一篇的基礎上為了方便時間記錄,在下載之前已經加上了時間戳,方便後期進行處理

(上一篇:建築領域大數據獲取[通過python爬取房價信息](第一篇:數據獲取))

這一篇CS土木工程師繼續來帶你玩python獲取有關房價的大數據並進行分析

上一篇我們已經從互聯網上暴力獲取到了很多數據信息,格式均為excel的,那麼我們需要怎麼處理呢?思路如下:

  1. 將數據解壓出來,並按照時間順序進行統計(定義一個數據格式{時間:房價信息數據})
  2. 讀取excel,將每一個文件中的數據讀取出來
  3. 組合價格信息並進行分析

1.遍歷解壓

首先將之前下載好的zip/rar文件全部解壓

先遍歷當前文件夾,然後用zipfile/rarfile進行解壓

以下為遍歷目錄的關鍵代碼:

import osdef 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 zipfiledef 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的關鍵代碼:

# 解析xlsximport xlrdp = list()workbook = xlrd.open_workbook( 3.xlsx )sheets = workbook.sheet_names()#查看所有sheetall_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哦。(物價局備案價格)

後記:

代碼寫得比較倉促,也沒有重構或者使用基本的設計模式,只是一行一行在執行,本文也只是為了介紹一些用到的技巧,代碼寫得不好看,可以隨便噴。


推薦閱讀:

大數據告訴你「錢多事少離家近」的工作在哪?
2017年歷史文章匯總|機器學習
經典的分類例子:
數據分析無處不在
閑話國內大數據發展簡史&產業化落地

TAG:數據分析 | 數據挖掘 | 數據科學 |