(1)查看户型特征的种类(唯一值),使用独热编码并加入到原有数据中,删除原有列。
时间: 2024-01-29 13:02:32 浏览: 64
可以使用 pandas 库中的 get_dummies() 方法进行独热编码。假设原有数据中的户型特征列名为 "house_type",可以按照如下代码进行独热编码并加入到原有数据中:
```python
import pandas as pd
# 读取数据
data = pd.read_csv('data.csv')
# 查看户型特征的种类
house_type_categories = data['house_type'].unique()
print(house_type_categories)
# 进行独热编码
house_type_onehot = pd.get_dummies(data['house_type'], prefix='house_type')
# 加入到原有数据中
data = pd.concat([data, house_type_onehot], axis=1)
# 删除原有列
data.drop('house_type', axis=1, inplace=True)
# 输出新数据
print(data.head())
```
其中,`prefix` 参数指定了独热编码后的新特征名的前缀,可以根据具体需要进行修改。`axis` 参数指定了在哪个方向上进行拼接,这里是将独热编码后的新特征列与原有数据列进行列方向上的拼接。`inplace` 参数指定了是否在原有数据上进行修改,这里是直接在原有数据上进行修改。
相关问题
查看户型特征的种类(唯一值),使用独热编码并加入到原有数据中,删除原有列。
好的,您的问题是:“查看户型特征的种类(唯一值),使用独热编码并加入到原有数据中,删除原有列。”
首先,我们可以使用 Pandas 库来读取和处理数据。假设我们有一个名为 df 的数据框,其中包含了房屋的信息,包括户型类型(room_type)这一列。我们可以使用以下代码查看该列的唯一值:
```
unique_room_types = df['room_type'].unique()
print(unique_room_types)
```
接下来,我们可以使用 Pandas 的 get_dummies() 函数将该列进行独热编码,并将编码结果加入到原有数据中:
```
one_hot_encoded = pd.get_dummies(df['room_type'])
df = pd.concat([df, one_hot_encoded], axis=1)
```
最后,我们可以删除原有的户型类型列:
```
df.drop('room_type', axis=1, inplace=True)
```
这样我们就完成了对户型类型进行独热编码并加入到原有数据中的任务。
(1)检查总价列所含的中文字符('[\u4E00-\u9FA5]') (2)删除中文字符(“万”),并将类型转换为float,并保留两位小数 (3)依次检查单价、面积、建成时间、关注人数等其他列中所含的中文字符 (4)观察数据集,查询'建成时间'列不包括关键字'年建'的记录数;只保留含关键字'年建'的记录 (5)将单价、面积、建成时间和关注人数列转换为float类型。 2. 类型特征哑变量处理 (1)查看户型特征的种类(唯一值),使用独热编码并加入到原有数据中,删除原有列。 (2)查看区域特征的种类(唯一值),使用独热编码并加入到原有数据中,删除原有列。 (3)查看类型特征的种类(唯一值),使用独热编码并加入到原有数据中,删除原有列(注意类型为'其他'的记录)。 (4)查看结构特征的种类(唯一值),使用独热编码并加入到原有数据中,删除原有列(注意类型为'暂无数据'的记录)。 (5)查看朝向特征的种类(唯一值),以'东', '南', '西', '北', '东北', '东南', '西南', '西北'为类型自定义独热编码函数,使用独热编码并加入到原有数据中,删除原有列。 (6)检测'楼层'列中不包含'楼层'文字的记录数,只保留包含“楼层”记录。查看朝向特征的种类(唯一值),提取所在楼层,对所在楼层进行独热编码。使用正则表达式提取总楼层数据并转换为int类型,删除原有列。 (7)检查整理列名称,注意列名称是否包含空格等。
好的,您的问题是:
1. 数据清洗
(1)检查总价列所含的中文字符('[\u4E00-\u9FA5]') (2)删除中文字符(“万”),并将类型转换为float,并保留两位小数 (3)依次检查单价、面积、建成时间、关注人数等其他列中所含的中文字符 (4)观察数据集,查询'建成时间'列不包括关键字'年建'的记录数;只保留含关键字'年建'的记录 (5)将单价、面积、建成时间和关注人数列转换为float类型。
首先,我们可以使用 Pandas 库来读取和处理数据。假设我们有一个名为 df 的数据框,其中包含了房屋的信息,包括总价(price)、单价(unit_price)、面积(area)、建成时间(build_time)和关注人数(attention_num)等列。我们可以使用以下代码来完成上述任务:
```
import re
# (1) 检查总价列所含的中文字符
if df['price'].str.contains('[\u4E00-\u9FA5]').any():
print('总价列包含中文字符!')
# (2) 删除中文字符(“万”),并将类型转换为float,并保留两位小数
df['price'] = df['price'].str.replace('万', '').astype(float).round(2)
# (3) 依次检查单价、面积、建成时间、关注人数等其他列中所含的中文字符
if df['unit_price'].str.contains('[\u4E00-\u9FA5]').any():
print('单价列包含中文字符!')
if df['area'].str.contains('[\u4E00-\u9FA5]').any():
print('面积列包含中文字符!')
if df['build_time'].str.contains('[\u4E00-\u9FA5]').any():
print('建成时间列包含中文字符!')
if df['attention_num'].str.contains('[\u4E00-\u9FA5]').any():
print('关注人数列包含中文字符!')
# (4) 观察数据集,查询'建成时间'列不包括关键字'年建'的记录数;只保留含关键字'年建'的记录
print('建成时间列不包括关键字"年建"的记录数:', len(df[~df['build_time'].str.contains('年建')]))
df = df[df['build_time'].str.contains('年建')]
# (5) 将单价、面积、建成时间和关注人数列转换为float类型
df['unit_price'] = df['unit_price'].astype(float)
df['area'] = df['area'].astype(float)
df['build_time'] = df['build_time'].apply(lambda x: re.findall('\d+', x)[0]).astype(float)
df['attention_num'] = df['attention_num'].astype(float)
```
以上代码中,我们使用了正则表达式来提取建成时间列中的数字,并将其转换为 float 类型。同时,我们也使用了 Pandas 的 str.contains() 函数来检查列中是否包含中文字符。
2. 类型特征哑变量处理
(1)查看户型特征的种类(唯一值),使用独热编码并加入到原有数据中,删除原有列。 (2)查看区域特征的种类(唯一值),使用独热编码并加入到原有数据中,删除原有列。 (3)查看类型特征的种类(唯一值),使用独热编码并加入到原有数据中,删除原有列(注意类型为'其他'的记录)。 (4)查看结构特征的种类(唯一值),使用独热编码并加入到原有数据中,删除原有列(注意类型为'暂无数据'的记录)。 (5)查看朝向特征的种类(唯一值),以'东', '南', '西', '北', '东北', '东南', '西南', '西北'为类型自定义独热编码函数,使用独热编码并加入到原有数据中,删除原有列。 (6)检测'楼层'列中不包含'楼层'文字的记录数,只保留包含“楼层”记录。查看朝向特征的种类(唯一值),提取所在楼层,对所在楼层进行独热编码。使用正则表达式提取总楼层数据并转换为int类型,删除原有列。 (7)检查整理列名称,注意列名称是否包含空格等。
以下是代码实现:
```
# (1) 查看户型特征的种类(唯一值),使用独热编码并加入到原有数据中,删除原有列
room_types = df['room_type'].unique()
for room_type in room_types:
df[room_type] = (df['room_type'] == room_type).astype(int)
df.drop('room_type', axis=1, inplace=True)
# (2) 查看区域特征的种类(唯一值),使用独热编码并加入到原有数据中,删除原有列
regions = df['region'].unique()
for region in regions:
df[region] = (df['region'] == region).astype(int)
df.drop('region', axis=1, inplace=True)
# (3) 查看类型特征的种类(唯一值),使用独热编码并加入到原有数据中,删除原有列(注意类型为'其他'的记录)
house_types = df['house_type'].unique()
for house_type in house_types:
if house_type != '其他':
df[house_type] = (df['house_type'] == house_type).astype(int)
df.drop('house_type', axis=1, inplace=True)
# (4) 查看结构特征的种类(唯一值),使用独热编码并加入到原有数据中,删除原有列(注意类型为'暂无数据'的记录)
structure_types = df['structure'].unique()
for structure_type in structure_types:
if structure_type != '暂无数据':
df[structure_type] = (df['structure'] == structure_type).astype(int)
df.drop('structure', axis=1, inplace=True)
# (5) 查看朝向特征的种类(唯一值),以'东', '南', '西', '北', '东北', '东南', '西南', '西北'为类型自定义独热编码函数,使用独热编码并加入到原有数据中,删除原有列
def one_hot_encoding_direction(df):
directions = ['东', '南', '西', '北', '东北', '东南', '西南', '西北']
for direction in directions:
df[direction] = df['direction'].apply(lambda x: 1 if direction in x else 0)
df.drop('direction', axis=1, inplace=True)
one_hot_encoding_direction(df)
# (6) 检测'楼层'列中不包含'楼层'文字的记录数,只保留包含“楼层”记录。查看朝向特征的种类(唯一值),提取所在楼层,对所在楼层进行独热编码。使用正则表达式提取总楼层数据并转换为int类型,删除原有列。
print('楼层列不包含"楼层"的记录数:', len(df[~df['floor'].str.contains('楼层')]))
df = df[df['floor'].str.contains('楼层')]
df['floor'] = df['floor'].apply(lambda x: re.findall('\d+', x)[0]).astype(int)
one_hot_encoded_floor = pd.get_dummies(df['floor'], prefix='floor')
df = pd.concat([df, one_hot_encoded_floor], axis=1)
df.drop('floor', axis=1, inplace=True)
one_hot_encoding_direction(df)
# (7) 检查整理列名称,注意列名称是否包含空格等。
df.columns = df.columns.str.strip() # 去除列名中的空格
```
以上代码中,我们使用了 Pandas 的 get_dummies() 函数来进行独热编码,并使用正则表达式来提取楼层和建成时间列中的数字。同时,我们也注意到了列名中可能存在的空格等问题,并使用了 str.strip() 函数来去除空格。
阅读全文