房租预测--EDA

本文通过探索性数据分析(EDA),深入研究了房租预测的关键因素。分析包括缺失值处理、特征值统计、特征分布、特征间相关性及标签分布,旨在揭示影响房租价格的主要变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

房租预测–EDA

主要包括缺失值分析、特征值分析、是否有单调特征列、特征 nunique 分布、统计特征值出现频次大于 100 的特征、Label 分布以及不同特征值的样本的 label 分布

读取数据

先导入所需要的包,然后读取文件

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 读取文件
filepath_train="E:\\untitled\\data\\train_data.csv"
filepath_test="E:\\untitled\\data\\test_a.csv"

train=pd.read_csv(filepath_train)
test=pd.read_csv(filepath_test)
data = pd.concat((train,test))

缺失值分析

train.isnull().sum().sort_values(ascending=False)
print(list(data['rentType']).count("未知方式"))
print(list(data['houseToward']).count("暂无数据"))
print(list(data['houseDecoration']).count("其他"))
print(list(data['buildYear']).count("暂无信息"))

结果是
32944
2136
31021
2936

特征值分析

特征值分析,分析的不是很好,借鉴的网上大佬的,

pd.set_option('max_colwidth',200)
pd.set_option('display.width',200)
pd.set_option('display.max_columns',500)
pd.set_option('display.max_row',1000)
train.corr()

单调特征列

def increasing(val):
    cnt = 0
    len_ = len(val)
    for i in range(len_ - 1):
        if val[i + 1] > val[i]:
            cnt += 1
    return cnt

fea_cols = [col for col in train.columns]
for col in fea_cols:
    cnt = increasing(train[col].values)
    if cnt / train.shape[0] > 0.55:
        print('单调特征', col)
        print('单调特征个数',cnt)
        print('单调特征比例',cnt / train.shape[0])


单调特征 tradeTime
单调特征个数 24085
单调特征比例 0.5812017374517374

特征 nunique 分布

categorical_feas = [cols for cols in train.columns]
for feature in categorical_feas:
    print(feature+"的特征分布如下:")
    print(train[feature].value_counts())
    if feature != 'communityName':
        plt.hist(data[feature],bins=3)
        plt.show()

rentType的特征分布如下:
未知方式    30759
整租       5472
合租       5204
--          5

在这里插入图片描述
这个有一点问题,但是还是可以分析出来的,水平有限,正在努力。

统计特征值出现频次大于 100 的特征

# 训练集
for cols in train.columns:
    if train[cols].unique().shape[0] > 100:
            print(cols)

'''
ID
area
houseType
communityName
totalTradeMoney
totalTradeArea
tradeMeanPrice
tradeSecNum
totalNewTradeMoney
totalNewTradeArea
tradeNewMeanPrice
tradeNewNum
remainNewNum
supplyNewNum
newWorkers
pv
uv
tradeTime
tradeMoney
'''
# 测试集
for cols2 in test.columns:
    if test[cols2].unique().shape[0] > 100:
        print(cols2)
'''
ID
area
communityName
totalTradeMoney
totalTradeArea
tradeMeanPrice
tradeSecNum
totalNewTradeMoney
totalNewTradeArea
tradeNewMeanPrice
tradeNewNum
remainNewNum
newWorkers
pv
uv
tradeTime
'''

Label 分布以及不同特征值的样本的 label 分布

train.hist(figsize=(50,15), bins=100,grid=False)
plt.show()

在这里插入图片描述

sns.regplot(x=train['area'], y=train['tradeMoney'])
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值