詳解Python對(duì)某地區(qū)二手房房?jī)r(jià)數(shù)據(jù)分析
房?jī)r(jià)數(shù)據(jù)分析
數(shù)據(jù)簡(jiǎn)單清洗
data.csv

數(shù)據(jù)顯示
# 導(dǎo)入模塊
import pandas as pd # 導(dǎo)入數(shù)據(jù)統(tǒng)計(jì)模塊
import matplotlib # 導(dǎo)入圖表模塊
import matplotlib.pyplot as plt # 導(dǎo)入繪圖模塊
# 避免中文亂碼
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 設(shè)置字體為SimHei顯示中文
matplotlib.rcParams['axes.unicode_minus'] = False # 設(shè)置正常顯示字符,使用rc配置文件來(lái)自定義
# 簡(jiǎn)單清洗
data = pd.read_csv('data.csv') # 讀取csv數(shù)據(jù)
del data['Unnamed: 0'] # 將索引列刪除
data.dropna(axis=0, how='any', inplace=True) # 刪除data數(shù)據(jù)中的所有空值
data['單價(jià)'] = data['單價(jià)'].map(lambda d: d.replace('元/平米', '')) # 將單價(jià)“元/平米”去掉
data['單價(jià)'] = data['單價(jià)'].astype(float) # 將房子單價(jià)轉(zhuǎn)換為浮點(diǎn)類型,float(data['',單價(jià)])
data['總價(jià)'] = data['總價(jià)'].map(lambda d: d.replace('萬(wàn)', '')) # 將總價(jià)“萬(wàn)”去掉
data['總價(jià)'] = data['總價(jià)'].astype(float) # 將房子總價(jià)轉(zhuǎn)換為浮點(diǎn)類型,float(data['',單價(jià)])
data['建筑面積'] = data['建筑面積'].map(lambda p: p.replace('平米', '')) # 將建筑面積“平米去掉”
data['建筑面積'] = data['建筑面積'].astype(float) # 將將建筑面積轉(zhuǎn)換為浮點(diǎn)類型

各區(qū)均價(jià)分析
# 獲取各區(qū)二手房均價(jià)分析,根據(jù)需求,,進(jìn)一步處理數(shù)據(jù),如果要寫相應(yīng)算法,需要根據(jù)算法所需求的數(shù)據(jù)處理
def get_average_price():
group = data.groupby('區(qū)域') # 將房子區(qū)域分組
average_price_group = group['單價(jià)'].mean() # 計(jì)算每個(gè)區(qū)域的均價(jià),average_price_group字典
x = average_price_group.index # 區(qū)域
y = average_price_group.values.astype(int) # 區(qū)域?qū)?yīng)的均價(jià)a =['t':'123'] a.keys()
return x, y # 返回區(qū)域與對(duì)應(yīng)的均價(jià),region二關(guān) average_price均價(jià)
# 顯示均價(jià)條形圖
def average_price_bar(x, y, title):
plt.figure() # 圖形畫布
plt.bar(x, y, alpha=0.8) # 繪制條形圖
plt.xlabel("區(qū)域") # 區(qū)域文字
plt.ylabel("均價(jià)") # 均價(jià)文字
plt.title(title) # 表標(biāo)題文字
# 為每一個(gè)圖形加數(shù)值標(biāo)簽
for x, y in enumerate(y):
plt.text(x, y + 100, y, ha='center')
plt.show()
if __name__ == '__main__':
x, y = get_average_price()
title = '各區(qū)均價(jià)分析'
average_price_bar(x, y, title)
運(yùn)行如圖

全市二手房裝修程度分析
# 獲取各區(qū)二手房均價(jià)分析,根據(jù)需求,,進(jìn)一步處理數(shù)據(jù),如果要寫相應(yīng)算法,需要根據(jù)算法所需求的數(shù)據(jù)處理
def get_decorate_sum():
group = data.groupby('裝修') # 將房子區(qū)域分組
# decorate_sum_group = group['裝修'].count() # 計(jì)算每個(gè)區(qū)域的均價(jià),average_price_group字典
decorate_sum_group = group.size() # 計(jì)算每個(gè)區(qū)域的均價(jià),average_price_group字典
x = decorate_sum_group.index # 區(qū)域
y = decorate_sum_group.values.astype(int) # 區(qū)域?qū)?yīng)的均價(jià)a =['t':'123'] a.keys()
return x, y # 返回區(qū)域與對(duì)應(yīng)的均價(jià),region二關(guān) average_price均價(jià)
# 顯示均價(jià)條形圖
def average_price_bar(x, y, title):
plt.figure() # 圖形畫布
plt.bar(x, y, alpha=0.8) # 繪制條形圖
plt.xlabel("裝修類型") # 區(qū)域文字
plt.ylabel("數(shù)量") # 均價(jià)文字
plt.title(title) # 表標(biāo)題文字
# 為每一個(gè)圖形加數(shù)值標(biāo)簽
for x, y in enumerate(y):
plt.text(x, y + 100, y, ha='center')
plt.show()
if __name__ == '__main__':
x, y = get_decorate_sum()
title = '全市二手房裝修程度分析'
average_price_bar(x, y, title)

各區(qū)二手房數(shù)量所占比比例
# 獲取各區(qū)二手房各區(qū)比例數(shù)量,進(jìn)一步處理數(shù)據(jù),如果要寫相應(yīng)算法,需要根據(jù)算法所需求的數(shù)據(jù)處理
def get_proportional_quantity():
area = data['區(qū)域'].groupby(data['區(qū)域']).count() # 將房子區(qū)域分組比例數(shù)量
areaName = (area).index.values # 將房子區(qū)域分組比例取名
return area, areaName
# 顯示均價(jià)條形圖
def proportional_quantity_pie(area, areaName, title):
plt.figure() # 圖形畫布
plt.pie(area, labels=areaName, labeldistance=1.1, autopct='%.1f%%',
shadow=True, startangle=90, pctdistance=0.7)
plt.title(title, fontsize=24) # 表標(biāo)題文字
plt.legend(bbox_to_anchor=(-0.1, 1)) # 作者標(biāo)題
plt.show()
if __name__ == '__main__':
# 對(duì)應(yīng)x,y
area, areaName = get_proportional_quantity()
title = '各區(qū)二手房數(shù)量所占比比例'
proportional_quantity_pie(area, areaName, title)

熱門戶型均價(jià)分析
# 獲取各區(qū)熱門戶型分析,根據(jù)需求,,進(jìn)一步處理數(shù)據(jù),如果要寫相應(yīng)算法,需要根據(jù)算法所需求的數(shù)據(jù)處理
def get_hot_portal():
# 另外一種方法獲取并取值
"""
group = data.groupby('戶型').size # 將房子區(qū)域分組
sort_data = group.sort_values(ascending=False) # 將戶型分組數(shù)量進(jìn)行降序
five_data = sort_data.head() # 提取前5組戶型數(shù)據(jù)
house_type_mean = data.groupby('戶型')['單價(jià)'].mean().astype(int) # 計(jì)算每個(gè)戶型的均價(jià)
x = house_type_mean[five_data.index].index # 戶型
y = house_type_mean[five_data.index].value # 戶型對(duì)應(yīng)的均價(jià)
"""
group = data.groupby('戶型') # 將房子區(qū)域分組
a = group['戶型'].count().sort_values(ascending=False).head() # 計(jì)算每個(gè)戶型的均價(jià) 字典
b = group['單價(jià)'].mean()[a.index] # 區(qū)域?qū)?yīng)的均價(jià)a =['t':'123'] a.keys()
x = b.index
y = b.values.astype(int)
return x, y # 返回區(qū)域與對(duì)應(yīng)的均價(jià),region二關(guān) average_price均價(jià)
# 顯示均價(jià)橫條形圖
def hot_portal_barh(x, y, title):
plt.figure() # 圖形畫布
plt.barh(x, y, alpha=0.9, color='red') # 繪制條形圖
plt.xlabel("均價(jià)") # 區(qū)域文字
plt.ylabel("戶型") # 均價(jià)文字
plt.title(title) # 表標(biāo)題文字
plt.xlim(0, 15000) # X軸的大小
# 為每一個(gè)圖形加數(shù)值標(biāo)簽
for y, x in enumerate(y):
plt.text(x + 100, y, str(x) + '元', ha='left')
plt.show()
if __name__ == '__main__':
x, y = get_hot_portal()
title = '熱門戶型均價(jià)分析'
hot_portal_barh(x, y, title)
前面三個(gè)圖較簡(jiǎn)單,最后相對(duì)于前面三個(gè)較為麻煩
先獲取得到熱門戶型前五名,通過(guò)戶型得到對(duì)應(yīng)的戶型的平均值

總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python實(shí)現(xiàn)導(dǎo)彈自動(dòng)追蹤代碼實(shí)例
這篇文章主要介紹了Python實(shí)現(xiàn)導(dǎo)彈自動(dòng)追蹤代碼實(shí)例,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11
Tensorflow2.1 完成權(quán)重或模型的保存和加載
這篇文章主要為大家介紹了Tensorflow2.1 完成權(quán)重或模型的保存和加載,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
一文帶你掌握Pyecharts地理數(shù)據(jù)可視化的方法
這篇文章主要介紹了一文帶你掌握Pyecharts地理數(shù)據(jù)可視化的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
python實(shí)現(xiàn)好看的時(shí)鐘效果
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)好看的時(shí)鐘效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Python 實(shí)現(xiàn)取矩陣的部分列,保存為一個(gè)新的矩陣方法
今天小編就為大家分享一篇Python 實(shí)現(xiàn)取矩陣的部分列,保存為一個(gè)新的矩陣方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11

