数据科学- 数据准备

在分析数据之前,数据科学家必须提取数据,使其干净且有价值。


使用 Pandas 提取和读取数据

在分析数据之前,必须导入/提取数据。

在下面的示例中,我们将向您展示如何在 Python 中使用 Pandas 导入数据。

我们使用 read_csv() 函数导入包含健康数据的 CSV 文件:

实例

import pandas as pd

health_data = pd.read_csv("data.csv", header=0, sep=",")

print(health_data)

实例解析

  • 导入 Pandas 库
  • 将数据框命名为 health_data
  • header=0 表示要在第一行找到变量名的标题(注意,0 表示 Python 中的第一行)
  • sep="," 表示","用作值之间的分隔符。 这是因为我们使用的是文件类型 .csv(逗号分隔值)

提示:如果你有一个大的 CSV 文件,你可以使用 head() 函数只显示前 5 行:

实例

import pandas as pd

health_data = pd.read_csv("data.csv", header=0, sep=",")

print(health_data.head())

数据清洗

查看导入的数据。 如您所见,数据是"脏"的。 带有错误或未注册的值:

Dirty data
  • 有一些空白字段
  • 9000 次的平均脉搏是不可能的
  • 9 000 将被视为非数字,因为有空格分隔符
  • 最大脉搏的一次观察被表示为"AF",这没有意义

因此,我们必须清理数据才能执行分析。


删除空白行

我们看到非数字值(9 000 和 AF)与缺失值位于同一行中。

解决方案:我们可以删除缺少观察的行来解决这个问题。

当我们使用 Pandas 加载数据集时,所有空白单元格都会自动转换为 "NaN" 值。

因此,删除 NaN 单元为我们提供了一个可以分析的干净数据集。

我们可以使用 dropna() 函数删除 NaNs. axis=0 表示我们要删除所有具有 NaN 值的行:

实例

health_data.dropna(axis=0,inplace=True)

print(health_data)

结果是一个没有 NaN 行的数据集:

Cleaned data

数据类别

要分析数据,我们还需要知道我们正在处理的数据类型。

数据可以分为三大类:

  1. Numerical - 包含数值。 可以分为两类:
    • Discrete:数字被视为"整体"。 示例:您不能训练 2.5 个会话,它是 2 或 3
    • Continuous:数字可以具有无限精度。 例如,您可以睡 7 小时、30 分 20 秒或 7.533 小时
  2. Categorical - 包含无法相互衡量的值。 示例:一种颜色或一种训练类型
  3. Ordinal - 包含可以相互衡量的分类数据。 示例:A 优于 B 的学校成绩等

通过了解数据的类型,您将能够知道在分析它们时使用什么技术。


数据类型

我们可以使用 info() 函数列出我们数据集中的数据类型:

实例

print(health_data.info())

结果:

Datatype float and object

我们看到这个数据集有两种不同类型的数据:

  • Float64
  • Object

我们不能在这里使用对象来计算和执行分析。 我们必须将类型对象转换为 float64(在 Python 中,float64 是一个带小数的数字)。

我们可以使用astype()函数将数据转换成float64。

以下示例将 "Average_Pulse" 和 "Max_Pulse" 转换为数据类型 float64(其他变量已经是数据类型 float64):

实例

health_data["Average_Pulse"] = health_data['Average_Pulse'].astype(float)
health_data["Max_Pulse"] = health_data["Max_Pulse"].astype(float)

print (health_data.info())

结果:

Datatype float

现在,数据集只有 float64 数据类型。


分析数据

当我们清理完数据集后,我们就可以开始分析数据了。

我们可以使用 Python 中的 describe() 函数来汇总数据:

实例

print(health_data.describe())

结果:

  Duration Average_Pulse Max_Pulse Calorie_Burnage Hours_Work Hours_Sleep
Count 10.0 10.0 10.0 10.0 10.0 10.0
Mean 51.0 102.5 137.0 285.0 6.6 7.5
Std 10.49 15.4 11.35 30.28 3.63 0.53
Min 30.0 80.0 120.0 240.0 0.0 7.0
25% 45.0 91.25 130.0 262.5 7.0 7.0
50% 52.5 102.5 140.0 285.0 8.0 7.5
75% 60.0 113.75 145.0 307.5 8.0 8.0
Max 60.0 125.0 150.0 330.0 10.0 8.0
  • Count - 统计观察次数
  • Mean - 平均值
  • Std - 标准差(在统计章节中解释)
  • Min - 最低值
  • 25%50%75% 是百分位数(在统计章节中有说明)
  • Max - 最高值