跳转到主要内容
2.1.5 · 建议 20 分钟 · 满分 16

健康与营养咨询数据预处理与数据规范设计

背景

在健康与营养咨询领域,客户的健康数据是评估其饮食和生活方式建议的重要依据。通过对客户健康数据的分析,可以帮助健康咨询师更准确地评估客户的健康状况,并制定个性化的营养和健康管理计划。现提供一份健康咨询客户数据集。请补全 2.1.5.ipynb 代码,完成下面的数据预处理任务。

工作任务

  1. 加载数据集:查看表的数据类型,表结构和显示每一列的空缺值数量。
  2. 缺失值处理:对于含有缺失值的行进行删除操作。
  3. 数据类型转换:将“Your age”列的数据类型转换为整数类型,并处理其中的异常值。
  4. 数据去重:检查数据集中的重复值并删除所有重复值,并记录删除的行数。
  5. 数据归一化处理:对“如何形容你的当前健身水平?”(How do you describe your current level of fitness ?)列中的数据进行归一化处理。
  6. 绘制健身频率分布的饼图。
  7. 对数据进行标注划分。
  8. 保存处理后的数据,并命名为:2.1.5_cleaned_data.csv。
  9. 制定数据清洗和数据标注规范,写到答题卷文件 2.1.5.docx。

素材预览

健康咨询客户数据集.csv
Timestamp,Your name,Your gender,Your age,How important is exercise to you ?,How do you describe your current level of fitness ?,How often do you exercise?,...
2019/07/03 11:48:07 PM GMT+5:30,Parkavi,Female,19 to 25,2,Good,Never,...
2019/07/03 11:51:22 PM GMT+5:30,Nithilaa,Female,19 to 25,4,Very good,Never,...

代码填空

import pandas as pd

# 加载数据集
data = 

# 查看表结构基本信息
print()

# 显示每一列的空缺值数量
print()

# 删除含有缺失值的行
data_cleaned = 

# 转换 'Your age' 列的数据类型为整数类型,并处理异常值
data_cleaned.loc[:, 'Your age'] = (, errors='coerce')
data_cleaned = data_cleaned.dropna(subset=['Your age'])
data_cleaned = data_cleaned[data_cleaned['Your age'] >= 0]
data_cleaned.loc[:, 'Your age'] = data_cleaned['Your age'].

print(data_cleaned['Your age'].dtype)

# 检查和删除重复值
duplicates_removed = data_cleaned.duplicated().sum()
data_cleaned = 

print(f"Removed {duplicates_removed} duplicate rows")

from sklearn.preprocessing import LabelEncoder

# 归一化 'How do you describe your current level of fitness ?' 列
label_encoder = LabelEncoder()
data_cleaned[] = 

print(data_cleaned['How do you describe your current level of fitness ?'].unique())

from sklearn.preprocessing import LabelEncoder
import matplotlib.pyplot as plt

# 去掉列名中的空格
data.columns = data.columns.str.strip()
# 显示数据集的列名
print(data.columns)

# 删除包含缺失值的行
data_cleaned = data.dropna(subset=['How often do you exercise?'])

# 统计不同健身频率的分布情况
exercise_frequency_counts = data_cleaned['How often do you exercise?'].value_counts()

# 绘制饼图
plt.figure(figsize=(10, 6))
(autopct='%1.1f%%', startangle=90, colors=plt.cm.Paired.colors)
plt.title('Distribution of Exercise Frequency')
plt.ylabel('')
plt.show()

import pandas as pd
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt

# 填充缺失值
data_filled = data.apply(lambda x: x.fillna(x.mode()[0]))

# 划分数据(测试集占比20%)
train_data, test_data = (, random_state=42)

# 保存处理后的数据
cleaned_file_path = ''
(, index=False)