疫情对广州房价的影响
上節我們獲取了廣州的房價數據,并存入了MongoDB中
數據展示:
這節我們的目標就是計算出廣州最高的房價、最低的房價、平均房價以及每個區的平均房價。
目錄:
1、提取數據
2、計算最高的房價、最低的房價、平均房價
3、計算每個區的平均房價
4、數據可視化(和2019年12月的房價數據進行對比)
5、房價漲跌幅度
1、提取數據
從MongoDB中提取的數據是一個游標對象,而每個數據是以字典的形式存儲的
需要循環提取數據
def output_mongo(self, city):"""提取數據"""results = collection.find({'city': city})for i in results:analyze = {}analyze['zone'] = i.get('zone')analyze['price'] = i.get('price')yield analyze這里指定city為廣州,數據只要價格和地區名
2、計算最高的房價、最低的房價、平均房價
將output_mongo返回的數據傳入analyze_data
def analyze_data(self, data):"""對全城房價數據進行分析,得出平均房價、最高房價、最低房價"""price = ([i['price'] for i in data])a = []for i in price:a.append(i)# 平均值avg_price = sum(a) / len(a)print('平均房價是:' + str(avg_price) + '每平方米')# 最高的價格max_price = max(a)print('該城市最高的房價為' + str(max_price) + '每平方米')# 最低的價格min_price = min(a)print('該城市最低的房價為' + str(min_price) + '每平方米')先將價格數據提取出來,之后計算最大值、最小值、平均值都很容易了
3、計算每個區的平均房價
將output_mongo返回的數據傳入analyze_zone
def analyze_zone(self, data):"""分析同城不同地區的房價"""a = []for i in data:a.append(i)zone_name = []house_price = []for i in a:zone_name.append(i.get('zone'))zone_name = set(zone_name) # 對地區名進行去重for i in zone_name:price = 0zone_num = 0 # 地區出項的次數for j in a:if j['zone'] == i:zone_num += 1price += j['price']house_price.append(price//zone_num) # 得到平均房價zone_data_dict = dict(zip(zone_name, house_price)) # 得到地區與價格的字典z = list(zip(list(zone_data_dict), list(zone_data_dict.values())))zone_price_list = sorted(z, key=lambda x: (x[1]))return zone_price_listanalyze_zone方法會將每個地區的房價相加求平均值
4、數據可視化(和2019年12月的房價數據進行對比)
我這里將數據都計算并整理好,房價和地區一一對應
price04 = [16022, 19550, 20176, 22867, 28017, 34064, 47098, 49951, 58837, 68216, 74486] now_price = [16270, 20131, 21563, 25492, 28666, 34259, 46460, 50081, 65994, 62630, 62358] zone = ['從化', '花都', '增城', '南沙', '黃埔', '番禺', '白云', '荔灣', '海珠', '越秀', '天河']怎么對比比較好呢?這里采用柱狀圖的方式,圖例如下:
將需要對比的兩組數據放在一起,這樣就可以直觀的看出差距
代碼如下:
import numpy as np import matplotlib.pyplot as pltprice04 = [16022, 19550, 20176, 22867, 28017, 34064, 47098, 49951, 58837, 68216, 74486] now_price = [16270, 20131, 21563, 25492, 28666, 34259, 46460, 50081, 65994, 62630, 62358] zone = ['從化', '花都', '增城', '南沙', '黃埔', '番禺', '白云', '荔灣', '海珠', '越秀', '天河'] x = np.array([i for i in range(0, 33, 3)]) x1 = x + 0.9 x2 = x + 2.1 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.bar(x1, price04, label='去年12月份') plt.bar(x2, now_price, label='現在') for i in range(len(x)):plt.text(x1[i], price04[i], price04[i], ha='center')plt.text(x2[i], now_price[i], now_price[i], ha='center') plt.xticks(x + 1.5, zone) plt.legend() plt.show()我們沒有直接將地區名作為x軸,而是將一個數組作為了x軸,但是最后x軸顯示的還是地區名,這是因為xticks()方法,我們還是先看看xticks()的源碼是如何解釋的吧
xticks()方法的ticks參數的意思就是,指定刻度放置x軸的標簽,labels這個標簽可以覆蓋bar()方法設置的x軸標簽,上圖幫助我們理解,我們試試看如果沒有添加labels參數會是什么結果吧,
將
plt.xticks(x + 1.5, zone)改為plt.xticks(x + 1.5)
圖例:
這次x軸的標簽就變為一個個數字了(這其實就是x軸的刻度)
通過圖我們就能比較直觀的看出廣州各個區的平均房價在這次疫情中的變化,可以看出天河區、越秀區的房價下降的是比較明顯的,海珠區的房價上漲是比較明顯的。
5、房價漲跌幅度(可視化)
上面的圖只能比較直觀的看出漲跌明不明顯,但是我不但想知道誰漲了誰跌了,而且還要知道具體的漲跌幅度是多少,這才更容易幫助我分析。
計算方法:漲跌幅 = (現在的房價-去年房價)/去年房價
代碼如下:
price04 = [16022, 19550, 20176, 22867, 28017, 34064, 47098, 49951, 58837, 68216, 74486] now_price = [16270, 20131, 21563, 25492, 28666, 34259, 46460, 50081, 65994, 62630, 62358] percent = [] for i in range(len(price04)):percent.append(round(((now_price[i] - price04[i])/price04[i]) * 100, 3)) print(percent)運行結果:
[1.548, 2.972, 6.875, 11.479, 2.316, 0.572, -1.355, 0.26, 12.164, -8.189, -16.282]可視化展示:
代碼如下:
import numpy as np import matplotlib.pyplot as pltprice04 = [16022, 19550, 20176, 22867, 28017, 34064, 47098, 49951, 58837, 68216, 74486] now_price = [16270, 20131, 21563, 25492, 28666, 34259, 46460, 50081, 65994, 62630, 62358] percent = [] for i in range(len(price04)):percent.append(round(((now_price[i] - price04[i])/price04[i]) * 100, 3)) zone = ['從化', '花都', '增城', '南沙', '黃埔', '番禺', '白云', '荔灣', '海珠', '越秀', '天河'] plt.rcParams['font.sans-serif'] = ['SimHei'] plt.bar(zone, percent, color='r', label='漲跌幅度') for i in range(len(percent)):if percent[i] < 0:plt.text(zone[i], percent[i]-1, percent[i], ha='center')else:plt.text(zone[i], percent[i]+1, percent[i], ha='center') plt.legend() plt.show()運行結果:
從這幅圖中我們可以看出在疫情期間只有白云、越秀、天河三個區的房價有所下降,尤其是天河區下降了16.282%,南沙區和海珠區領漲分別漲了11.479%、12.164%
總結
以上是生活随笔為你收集整理的疫情对广州房价的影响的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 嵌入式软件单元测试 的必要性和心得
- 下一篇: 机器学习 基于加州房价的线性回归实验