You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

处理object类型Floor列:划分楼层类别并验证租金相关性

楼层分类与租金相关性验证方案

问题背景

现有一份租房数据集,需将Floor列(格式为当前楼层/总楼层)划分为「Ground Floor」「Mid Floor」「Top Floor」三类,进而验证楼层与租金的关联。此前的分类代码存在语法错误,无法正常运行。

数据集示例:

Adress  Rooms   m2  Price   Floor
196      Skanstes 29a      5  325   2800   24/24
12          Ausekļa 4      5  195   2660     7/7
7       Antonijas 17A      3   86   2200     6/6
31        Blaumaņa 16      4  136   1800     4/6
186  Rūpniecības 21k2      5  160   1700     7/7
233        Vesetas 24      4  133   1700   10/10
187    Rūpniecības 34      5  157   1600     3/6
91     Elizabetes 31а      8  203   1600     1/5
35         Blaumaņa 9      3   90   1600     3/5
60             Cēsu 9      3  133   1550     6/7

字段类型:

Adress    object
Rooms      int64
m2         int64
Price      int64
Floor     object
dtype: object

解决方案

1. 修复楼层分类逻辑

原代码存在语法错误(return使用不当、条件分支格式错误),且未将字符串楼层转为整数,可能导致判断异常。以下是修正后的分类实现:

首先定义分类函数,通过整数比较确保逻辑准确:

def classify_floor(floor_str):
    # 拆分当前楼层与总楼层并转为整数
    current_floor, total_floors = floor_str.split('/')
    current_floor = int(current_floor)
    total_floors = int(total_floors)
    
    # 分类判断
    if current_floor == 1:
        return "Ground Floor"
    elif current_floor == total_floors:
        return "Top Floor"
    else:
        return "Mid Floor"

将函数应用到DataFrame,生成新的分类列:

# 保留原排序逻辑
df_sorted = df.sort_values("Price", ascending=False)
# 添加楼层分类列
df_sorted['Floor_Category'] = df_sorted['Floor'].apply(classify_floor)

2. 验证楼层与租金的相关性

方式1:分组统计租金均值

通过分组计算不同楼层类别的平均租金,直观观察差异:

floor_rental_summary = df_sorted.groupby('Floor_Category')['Price'].agg(
    平均租金='mean',
    房源数量='count'
).reset_index()
print(floor_rental_summary)

方式2:可视化租金分布

用箱线图展示不同楼层类别的租金分布:

import seaborn as sns
import matplotlib.pyplot as plt

sns.boxplot(x='Floor_Category', y='Price', data=df_sorted, order=['Ground Floor', 'Mid Floor', 'Top Floor'])
plt.title('租金与楼层类别分布')
plt.xlabel('楼层类别')
plt.ylabel('租金')
plt.show()

方式3:量化相关性计算

将楼层类别映射为数值,计算与租金的皮尔逊相关系数,量化关联程度:

# 类别转数值:Ground=1, Mid=2, Top=3
floor_mapping = {"Ground Floor": 1, "Mid Floor": 2, "Top Floor": 3}
df_sorted['Floor_Score'] = df_sorted['Floor_Category'].map(floor_mapping)

# 计算相关系数
correlation = df_sorted['Floor_Score'].corr(df_sorted['Price'])
print(f"楼层类别与租金的相关系数:{correlation:.2f}")

原代码问题说明

  • 语法错误:return语句不能直接在循环中使用,且条件分支格式不符合Python语法(if ...:后不能直接跟return)
  • 类型问题:直接比较字符串形式的楼层号(如parts[0]==parts[-1])虽能运行,但转为整数比较更严谨,避免特殊场景下的字符串匹配错误

内容的提问来源于stack exchange,提问作者Alise Valeiņa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:55:16