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

news/2025/2/12 15:06:48/

图片

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

本文所用数据采用上一篇案例实现后的数据表,数据存储在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卫。

 


http://www.ppmy.cn/news/1061428.html

相关文章

【51单片机】EEPROM-IIC实验(按键控制数码管)

目录 🎁I2C总线 ​编辑 🎁代码 🏳️‍🌈main.c 🏳️‍🌈i2.c 🎆代码分析 🎁I2C总线 I2C总线是Philips公司在八十年代初推出的一种串行、半双工的总线,主要用于近距…

题解:ABC280D - Factorial and Multiple

题解:ABC280D - Factorial and Multiple 题目 链接:Atcoder。 链接:洛谷。 难度 算法难度:B。 思维难度:A。 调码难度:A。 综合评价:普及/提高-。 算法 质因数分解数论。 思路 这题…

excel下载后文件名称不对

正确写法 String headerValue String.format("attachment; filename\"%s\";", fileName "_" dateStr ".xlsx");// 这样就可以了response.setHeader("content-disposition", headerValue);// 或者这样response.setHeader(…

一文学会lua脚本

文章目录 0.前言背景应用 1. 学习大纲1. 学习基本语法:2. 理解函数和模块:3. 深入数据结构:4. 高级特性和技巧:5. 实践项目: 2. Lua脚本2.1 学习基本语法2.2 理解函数和模块2.3 深入数据结构2.4 高级特性和技巧 3. 高级…

脱离束缚:数字化工厂中ARM控制器的革命性应用!

近年来,中国数字经济体系已进入高速增长阶段。制造业作为中国经济高质量发展的重要支撑力量,在面临生产成本不断上涨、关键装备和核心零部件“受制于人”等挑战时,建设数字化工厂已成必然。 数字化工厂数据采集出现的问题 在数字工厂的建设…

目标检测YOLO实战应用案例100讲-基于特征增强的多感受野小目标检测算法在海思平台的应用

目录 前言 小目标检测现状及存在的问题 相关知识及算法分析 2.1卷积神经网络

后端开发有哪几种语言? - 易智编译EaseEditing

后端开发是构建应用程序的一部分,负责处理服务器端的逻辑、数据库交互和数据处理。有许多编程语言可用于后端开发,以下是一些常见的后端开发语言: Java: Java是一种广泛使用的面向对象编程语言,具有强大的跨平台能力。…

Rust安全之数值

文章目录 数值溢出 数值溢出 编译通过,运行失败 cargo run 1 fn main() {let mut arg std::env::args().skip(1).map(|x| x.parse::<i32>().unwrap()).next().unwrap();let m_i i32::MAX - 1;let a m_i arg;println!("{:?}", a); }thread main panicked…