python matplotlib 二手房数据可视化

原数据表


一、数据清洗

#导入需要的库:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

#读取文件
data = pd.read_csv("data.csv")

#检测数据
# 看一下数据维度
print(data.shape) 
# 输出数据的info
data.info()
# 输出空值
print(data.isna().sum())
# 预览表


#清洗数据

#删除"Unnamed: 0"列
data.drop(["Unnamed: 0"],axis=1,inplace=True)
#删除空行
data.dropna(axis="index",how="all",inplace=True)
#总价变数字
data["总价1"]=data["总价"].str.replace("万","")
#总价变浮点类型
data["总价1"]=data["总价1"].astype("float")
#建筑面积变数字
data["建筑面积1"]=data["建筑面积"].str.replace("平米","")
data["建筑面积1"]=data["建筑面积1"].astype("float")


二、数据可视化

1.二手房户型统计图

huxingName = list(data['户型'].value_counts().index)
huxingCountList = list(data['户型'].value_counts())
# 户型数量较少的合并为其他户型
otherCount = sum(huxingCountList[12:])
huxingName = huxingName[:12]
huxingCountList = huxingCountList[:12]
huxingName.append("其他户型")
huxingCountList.append(otherCount)

plt.figure(figsize=(10,6))
plt.title("二手房户型统计图")
plt.bar(huxingName, huxingCountList,)
plt.xlabel("
户型")
plt.ylabel("计
数", rotation = 'horizontal', verticalalignment = 'center', horizontalalignment = 'right')
for a,b in zip(range(len(huxingName)),huxingCountList):   #柱子上的数字显示
    plt.text(a,b+3,'%.f' % b,ha='center',va='bottom',fontsize=10);
plt.xticks(rotation = 45)
plt.show()


2、各区二手房总价直方图

areaName = list(data['区域'].value_counts().index)
plt.figure(figsize=(20,15))
for i in range(len(areaName)):
    cur_data = data[ data['区域'] == areaName[i] ]
    plt.subplot(3,3,i+1)
    plt.title(areaName[i] + "二手房总价直方图")
    sns.distplot(cur_data['总价1'], color="royalblue",bins=20, kde=True, hist_kws={"edgecolor":"w"})
    plt.xlabel("总价")
    plt.ylabel("频率")
plt.show()


3.二手房楼层-总价箱线图

louceng1 = [list(data[ data['楼层'] == "低层" ]["总价1"]), 
           list(data[ data['楼层'] == "中层" ]["总价1"]), 
           list(data[ data['楼层'] == "高层" ]["总价1"])]

plt.figure(figsize=(10,6))
plt.title("二手房楼层-总价箱线图")
dd = plt.boxplot(louceng1, labels = ['低层','中层','高层'],patch_artist=True,boxprops={'facecolor':'cornflowerblue'},showfliers=False)
plt.xlabel("
所在楼层")
plt.ylabel("总价", rotation = 'horizontal', verticalalignment = 'center', horizontalalignment = 'right')
plt.show()


4.二手房区域分布

areaName = list(data['区域'].value_counts().index)
areaCountList = list(data['区域'].value_counts())

plt.figure(figsize=(8,4))
plt.title("二手房区域分布")
plt.bar(areaName,areaCountList)
plt.xlabel("
区域")
plt.ylabel("计
数", rotation = 'horizontal', verticalalignment = 'center', horizontalalignment = 'right')
for a,b in zip(range(len(areaName)),areaCountList):   #柱子上的数字显示
    plt.text(a,b+3,'%.f' % b,ha='center',va='bottom',fontsize=10)
plt.show()


5、二手房价格直方图

fig,ax=plt.subplots()

plt.title("二手房价格直方图")
n,bins_num,pat = ax.hist(data['总价1'],bins=40,alpha=0.75)
#print(bins_num[:10])
ax.plot(bins_num[:40],n,marker = 'o',color="yellowgreen",linestyle="--")
plt.xlabel("
价格")
plt.ylabel("频
率", rotation = 'horizontal', verticalalignment = 'center', horizontalalignment = 'right')
#yticks_list = ['0', '10', '20', '30', '40', '50', '60','70']
#plt.yticks(np.arange(0.0, 0.00014, 0.00002), yticks_list)

plt.xlim(0,600)
plt.show()


6.二手房面积-总价散点图

data.sort_values(by=["建筑面积1"],ascending=True,inplace=True)

plt.figure(figsize=(12,6))
plt.title("二手房面积-总价散点图")
plt.scatter(list(data['建筑面积1']), data['总价1'],color="royalblue")
#plt.xlabel("
房屋面积")
#plt.ylabel("总
价", rotation = 'horizontal', verticalalignment = 'center', horizontalalignment = 'right')
# plt.xticks(range(0,500,50))
plt.xlim(0,350)
plt.ylim(0,600)
plt.show()


展开阅读全文

页面更新:2024-03-06

标签:二手房   直方图   线图   数据   总价   楼层   建筑面积   户型   区域   数字

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top