Coursera 笔记

Module 05 · Course Assignment

Working with Real World Datasets真实世界数据集处理提示与技巧

Coursera ↗

欢迎观看本视频。在本视频中,我们将提供处理真实世界数据集的一些提示和技巧。

学习目标

完成本视频后,您将能够:

  • 讨论数据库中数据文件的格式。
  • 解释如何将数据加载到数据库中。

数据格式:CSV 文件

许多真实世界的数据集都是以 CSV 文件的形式提供的。

  • CSV 文件是文本文件,通常包含由逗号分隔的数据值。
  • 在某些情况下,可能会使用不同的分隔符,例如分号。

示例DOGS.csv文件内容

我们将使用一个虚构的 DOGS.csv 文件作为示例,其中包含狗的名字和品种,以说明您将应用于真实数据集的概念。

属性名称 (Attributes) 示例值 (Sample Values) 描述
ID 1, 2, 3 第一个属性,后续行包含 ID 值。
Name of Dog Wolfie, Fluffy, Huggy 第二个属性,包含狗的名字。
Breed (dominant breed if not a pure breed) German Shepherd, Pomeranian, Labrador 第三个属性,包含狗的品种。

📌 头部行 (Header Row)

CSV 文件通常包含第一行(或头部行),其中包含属性标签,这些标签对应于数据库表中的列名。在 DOGS.csv 中,第一行包含了上述三个属性的名称。


将数据加载到数据库

如果您的 CSV 文件带有头部行(即包含属性名称),您可以使用 phpMyAdmin 工具导入数据:

  1. 导入 CSV 文件时,浏览并上传文件。
  2. 在 Format(格式)部分下拉菜单中选择 CSV。
  3. 这将生成一个名为 Format Specific Options(格式特定选项)的部分。
  4. 在底部,您会看到一个复选框,指定文件的第一行包含表列名。
  5. 对于带有头部的 CSV,请选中此复选框,然后单击 Go 按钮。

💡 自动处理:

MySQL 将自动检测头部名称作为列名,并处理适当的 CREATE 和 INSERT 语句,将数据填充到表中。表的默认名称通常为文件名的小写形式。


数据查询技巧

1. 处理带空格和特殊字符的列名

  • 如示例所示,数据中的列名通常可能包含空格,也可能包含特殊字符。
  • 要查询此类列,通常的做法是使用反引号 (backticks) `column name` 括住列名。
  • 注意:使用单引号或双引号等其他形式的引号无法用于列名。

2. 提高长查询的可读性

  • 对于连接查询 (join queries) 或嵌套查询 (nested queries) 等非常长的查询,将查询拆分成多行有助于提高可读性。
  • 在 Python notebooks 中,您可以使用反斜杠 \ 字符来指示换行继续,如下面的行魔法示例所示。
  • 如果在 Python notebook 中未加反斜杠就将查询拆分成多行,可能会导致错误。
  • 当使用 SQL 单元格魔术 (SQL cell magic) 时,单元格的内容被解释为 SQL 代码,此时每行末尾的反斜杠就是多余的。

3. 使用 Pandasread_sql方法查询

在 Python 中,您也可以使用 Pandas 库中的 read_sql 方法来查询数据库中的表。

  • 如果将查询保存在特定变量(例如 query_statement)中,此功能将更易于使用。
  • 在这种情况下,如果您的查询包含双引号(例如用于指定带有空格或特殊字符的列名),您可以使用单引号来括住 Python 变量中的 SQL 查询,并使用双引号来括住列名,以示区分。

4. 处理查询中的单引号

  • 如果您需要在查询中指定单引号(例如,在 WHERE 子句中指定一个值),您可以在引号前使用反斜杠 \ 作为转义字符 (escape character)。

5. 限制检索的行数 (LIMIT子句)

  • 一个表可能包含数千甚至数百万行,但您可能只需要采样一些数据或查看几行,以了解表包含的数据类型。
  • 不建议直接执行 SELECT * FROM table_name 然后在 Pandas 数据框上执行 .head(),因为对于大表,查询运行时间可能会很长。
  • 相反,您可以使用 LIMIT 子句来限制结果集。
  • 示例:使用以下查询仅检索名为 census_data 的表中的前三行:SELECT * FROM census_data LIMIT 3;


关键回顾

现在您知道:

  • 数据集通常是 CSV 文件,即包含由逗号分隔的数据值的文本文件。
  • 使用 phpMyAdmin 工具可以加载数据到数据库中。
  • 查询表中的列时,应使用反引号括住列名,避免使用单引号或双引号。
  • 长查询、连接查询或嵌套查询需要拆分成多行以提高可读性。
  • 在 Python 中,可以使用 Pandas 库中的 read_sql 方法查询数据库中的表。
  • 使用 LIMIT 子句可以限制结果集。