Skip to content

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

1.导入库

python
import pandas as pd
  • 导入 pandas 库,⽤于数据处理和分析,通常别名为 pd

2.加载数据集

python
data = pd.read_csv('健康咨询客户数据集.csv')
  • pd.read_csv() : 读取CSV文件
    • 参数:文件路径('健康咨询客户数据集.csv')

3.查看数据基本信息

python
print(data.info())
  • info() : 显示数据集的简明摘要
    • 包括列名、非空值数量、数据类型等

4.检查缺失值

python
print(data.isnull().sum())
  • data.isnull().sum() : 统计每列的缺失值数量

5.删除缺失值

python
data_cleaned = data.dropna()
  • dropna() : 删除包含任何缺失值的行
    • 默认删除任何包含NaN的行

6.处理年龄列

python
data_cleaned.loc[:, 'Your age'] = pd.to_numeric(data_cleaned['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'].astype(int)
  • pd.to_numeric() : 将列转换为数值类型

    • errors='coerce' : 将无法转换的值设为NaN
  • dropna(subset=['Your age']) : 只删除age列中的缺失值

  • data_cleaned['Your age'] >= 0 : 过滤掉负年龄

  • astype(int) : 转换为整数类型

7.检查数据类型

python
print(data_cleaned['Your age'].dtype)
  • 打印age列的数据类型

8.处理重复值

python
duplicates_removed = data_cleaned.duplicated().sum()
data_cleaned = data_cleaned.drop_duplicates()
print(f"Removed {duplicates_removed} duplicate rows")
  • duplicated().sum() : 统计重复行数
  • drop_duplicates() : 删除重复行
  • 打印删除的重复行数

9.标签编码

python
from sklearn.preprocessing import LabelEncoder
label_encoder = LabelEncoder()
data_cleaned['How do you describe your current level of fitness ?'] =label_encoder.fit_transform(data_cleaned['How do you describe your current level of fitness?'])
  • unique() : 打印列的唯一值
  • fit_transform() : 将分类值转换为数字标签

10. 查看编码结果

python
print(data_cleaned['How do you describe your current level of fitness ?'].unique())
  • unique() : 打印列的唯一值

11.列名处理

python
data.columns = data.columns.str.strip()
print(data.columns)
  • str.strip() : 去除列名两端的空格
  • 打印处理后的列名

12.特定列缺失值处理

python
data_cleaned = data.dropna(subset=['How often do you exercise?'])
  • 只删除exercise列中的缺失值

13.统计健身频率

python
exercise_frequency_counts = data_cleaned['How often do you exercise?'].value_counts()
  • value_counts() : 统计每个值的出现次数

14.绘制饼图

python
plt.figure(figsize=(10, 6))
exercise_frequency_counts.plot.pie(autopct='%1.1f%%', startangle=90,colors=plt.cm.Paired.colors)
plt.title('Distribution of Exercise Frequency')
plt.ylabel('')
plt.show()
  • figure(figsize=(10, 6)) : 设置图形大小
  • plot.pie() : 绘制饼图
    • autopct='%1.1f%%' : 显示百分比
    • startangle=90 : 起始角度
    • colors=plt.cm.Paired.colors : 颜色方案
  • title() : 设置标题
  • show() : 显示图形

15.填充缺失值

python
data_filled = data.apply(lambda x: x.fillna(x.mode()[0]))
  • apply() : 对每列应用函数
  • fillna(x.mode()[0]) : 用众数填充缺失值

16.划分数据集

python
train_data, test_data = train_test_split(data_filled, test_size=0.2, random_state=42)
  • train_test_split() : 划分训练/测试集
    • test_size=0.2 : 测试集占比20%
    • random_state=42 : 随机种子

17.保存数据

python
cleaned_file_path = '2.1.5_cleaned_data.csv'
data_filled.to_csv(cleaned_file_path, index=False)
  • to_csv() : 保存为CSV文件
    • index=False : 不保存行索引

制定数据清洗规范

(1)加载数据集:查看表的数据类型,表结构和显示每一列的空缺值数量;
(2)缺失值处理:对于含有缺失值的行进行删除操作;
(3)数据类型转换:将“Your age”列的数据类型转换为整数类型,并处理其中的异常值;
(4)数据去重:检查数据集中的重复值并删除所有重复值,并记录删除的行数;
(5)数据归一化处理:对“如何形容你的当前健身水平?”(How do you describe your current level of fitness ?)列中的数据进行归一化处理;
6、保存清洗后的数据: 将经过清洗和处理后的数据保存为新的 CSV 文件,以便后续使用。

制定数据标注规范

1. 数据来源:标注数据的来源,包括数据集的名称、获取日期和数据提供者。
2. 数据描述:提供详细的数据描述,包括每列数据的含义、单位和可能的取值范围。
3. 特征选择: 确定对目标变量预测最有用的特征。
4. 目标变量设定: 根据业务需求和数据特性,选择最有用的特征。
5. 数据划分: 将数据分为训练集和测试集,通常采用 80/20 的比例,以便于模型的训练和评估。
6. 保存处理后的数据:保存处理后的数据,并记录保存文件的路径和文件名。
7. 数据清洗和标注规范文档