Python案例|Matplotlib库实现的数据分析

数据展示是数据分析和挖掘中的重要环节,通过图形的形式可以直观、清晰地呈现数据内在的规律。

本文所用数据采用上一篇案例实现后的数据表,数据存储在newbj_lianJia.csv文件中,具体代码如下。

复制代码
import pandas as pd  #导入库
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] # 调整字体设置
plt.rcParams 'axes.unicode minus False
df=pd.read csv('newbj lianJia.csv',encoding='gbk') # 读取文件

本文主要任务是展示并分析每一属性的数据分布情况,具体包括以下几个方面。

(1) 绘制各楼层平均租金分布的条形图。

(2) 绘制各城区房屋平均租金的折线图。

(3) 绘制平均租金前20名的街道房屋数量的柱状图及其平均租金分布折线图。

(4) 绘制房屋户型前10名的占比情况。

01、案例实现

(1) 绘制各楼层平均租金分布的条形图。代码如下。

复制代码
# 按照楼层分组
g=df.groupby('floor')
# 计算各楼层的房屋数量
df floor=g.count()['ID
floor=df floor.index.tolist()
# 计算各楼层的平均租金
df floor rent=g.mean() 'rent;
rent=df floor rent.values.tolist ()
rent= round(x,2) for x in rent
# 绘制条形图
plt.barh(y=floor,width=rent)
plt.ylabel('楼层')
plt.xlabel('租金/元)
plt.title('各楼层平均租金条形图',fontproperties='stkaiti',fontsize=14)
plt.tight layout(pad=2)
plt.show()

运行结果如图1所示。

■图1 各楼层平均租金的条形图

可以看出,对租金影响最大的依次是:地下室、低楼层、中楼层、高楼层。

(2) 绘制各城区房屋平均租金的折线图。

代码如下。

复制代码
# 按照城区进行分组,统计租金的平均值
dfl=df.groupby('district')['rent'].mean()
# 获取城区名
region=df1.index.tolist()
# 获取各城区的平均租金
rent=_round(x,2) for x in dfl.values.tolist()
# 绘制各城区房屋租金折线图
plt.figure(figsize=(12,6))
plt.plot(region,rent,c='r',marker='o',linestyle='--')
for x,y in zip(region,rent):
plt.text(x,Y,' .0f' y,ha='center',fontsize=11)
# 设置坐标轴标签文本
plt.ylabel('租金/元,fontproperties='simhei')
plt.xlabel('城区',fontproperties='simhei')
#设置图形标题
plt.title(各城区房屋平均租金折线图,fontproperties='stkaiti'
fontsize=14)
# 设置横坐标字体倾斜角度
plt.xticks(rotation=15)# 显示图形
plt.show()

运行结果如图1所示。

■图1 各城区房屋平均租金的折线图

可以看出,城区对房租的影响很大,平均租金最高的是朝阳区,13976元,最低的是密云区,3480元。当然,这与城区所在的地理位置有着直接的关系,距离市中心越近,租金越高,距离市中心越远,租金越低。

(3) 绘制平均租金前20名的街道房屋数量的柱状图及其平均租金分布折线图。

代码如下。

复制代码
# 按照街道进行分组
g=df.groupby('street')
# 对街道按照平均租金进行升序排序,并取前 20 名
df region=g.mean() 'rent
top_street rentdf region.sort values(axis=0,ascending=False)[:20]
# 获取排名前 20 名的街道名称
region=top street rent .index.tolist ()
# 统计各个街道出租房屋数量
count=[g.count()['ID'][s] for s in region]
# 获取排名前 20 名的街道的平均租金
rent= round(x,2) for x in top street rent.values.tolist()#绘图
fig,axs=plt.subplots(1,1,figsize=(12,6))axs.bar(region,height=count)
plt.ylabel("数量")
plt.xlabel("街道")
axs1=axs.twinx()
axsl.plot(region,rent,c='r',marker='o',linestyle='--')for x,y in zip(region,count):
axs.text(x,y,.Of' y, ha='center',fontsize=12)
for x,y in zip(region,rent):axs1.text(x,y,.Of' yha='center',fontsize=12)axs.set title(租金前 20 名的街道出租房屋数量及其租金分布图fontsize= 14)
plt.ylabel("租金/元")
fig.autofmt xdate(rotation=15)
plt.tight layout(pad=1)
plt.show()

运行结果如图2所示。

■图2 租金前20名的街道出租房屋数量及租金分布图

可以看出,租金最贵的街道为官园、安定门、宣武门、西山、白石桥。除了租金最高的官园,其余街道的租金相差不是很多,所以街道属性与租金没有很强的相关性。

(4) 绘制房屋户型前10名的占比情况,代码如下。

复制代码
# 根据房屋户型分组
dfl=df .groupby('model')
#计算房屋户型数量,排序并取前 10 名
df model=dfl.count()['ID'].sort values(axis=0,ascending=False)[:10]
model=df model.index.tolist ()
# 计算房屋数量
count=df model.values.tolist()#绘制房屋户型占比饼图
plt.pie(count,labels=model,autopct='%1.2f%')# 设置图形标题
plt.title('房屋户型前 10 名的占比情况,fontproperties='stkaiti'fontsize=14)
plt.show()

运行结果如图3所示。

可以看出,大部分房屋的户型为2室1厅1卫、1室1厅1卫、3室1厅1卫、3室2厅2卫。

相关推荐
用户8356290780519 分钟前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_10 分钟前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机7 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机8 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机8 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机8 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i8 小时前
drf初步梳理
python·django
每日AI新事件8 小时前
python的异步函数
python
这里有鱼汤9 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook18 小时前
Manim实现脉冲闪烁特效
后端·python·动效