将 CSV 和 SQL 数据加载到 Pandas
在本系列“使用 Python 和 Pandas 进行数据清理”的第二部分中,现在我们已经设置好了 Jupyter Notebook 并初始化了一些基本库,我们需要加载一些数据。为此,我们将从 CSV 文件以及本地 SQLite 数据库加载数据。
引言
本文是《使用 Python 和 Pandas 进行数据清洗》系列的一部分。其目标是帮助开发人员快速上手数据科学工具和技术。
如果您想查看该系列中的其他文章,可以在此处找到它们。
- 第一部分 - Jupyter 和 Pandas 入门
- 第二部分 - 将 CSV 和 SQL 数据加载到 Pandas 中
- 第三部分 - 在 Pandas 中更正缺失数据
- 第四部分 - 在 Pandas 中合并多个数据集
- 第五部分 - 在 Pandas DataFrame 中清理数据
- 第六部分 - 在 Pandas DataFrame 中重塑数据
- 第七部分 - 使用 Seaborn 和 Pandas 进行数据可视化
一旦我们设置好了 Jupyter Notebook 并初始化了一些基本库,我们就需要加载一些数据。为此,我们将从 CSV 文件以及本地 SQLite 数据库加载数据。然后,我们将展示 Pandas 中提供的一些基本分析和函数,您可以使用它们来显示和执行基本的数据分析。
我们为本系列模块创建了一个完整的 Jupyter Notebook 以及源数据文件,您可以下载并在本地安装。
在我们开始之前,请确保 customers.csv 文件和与本系列配套的 remoteDB.db 已复制到我们保存的 Notebook 的同一目录中。
从 CSV 加载数据
首先,让我们看看如何将数据从 CSV 文件加载到 Pandas。为了简单起见,我们将加载添加到 Notebook 同一目录的 customers.csv 文件,但您也可以远程加载它。在 Notebook 中添加一个新的输入行,包含以下命令:
pd.read_csv("customers.csv")
此命令使用 Pandas 库加载并显示我们的 customers.csv 文件。
根据显示的行,您会立即看到数据中存在一些潜在问题,显示为 NaN
。您还会看到生成的输出是一个表格。
在 Pandas 中,表格被称为 DataFrame,它是一种类似于电子表格的二维数据结构。
让我们将其放入一个变量中,并通过修改代码行来显示前五行:
# Read data from the CSV files
customers = pd.read_csv("customers.csv")
print(customers.head(5))
(请注意,在这里以及文章的其余部分,您都会在代码后面立即看到运行代码的结果。)
这将把我们的 CSV 读取到一个变量中,并显示我们数据结构的前五行。
从 SQLite 加载数据
现在,让我们从 SQLite 数据库加载一些额外的数据到 Pandas。我们将使用 sqlite3 库来加载和读取数据库。您可以使用类似的过程处理常规数据库以及不同的 Python 库,但 SQLite 是无服务器的,只需要我们之前复制的单个数据库文件。让我们将此文件作为数据库进行访问。
首先,我们将修改我们的第一个代码块以包含另一个 Python 库:
import sqlite3 as sql
然后,在读取 CSV 文件中的客户数据之后,添加以下代码:
con = sql.connect("remoteDB.db")
products = pd.read_sql_query("SELECT * from products", con)
purchases = pd.read_sql_query("SELECT * from purchases", con)
con.close()
print(products.head(5))
print(purchases.head(5))
如果我们逐步查看这段代码,第一行连接到数据库文件 remoteDB.db。接下来的两行使用 Pandas 从每个 SQL 查询的返回结果创建 DataFrame。在此示例中,有两个表:“products”和“purchases”。最后,此块中的最后一行关闭了与 SQL 数据库的连接。
然后,我们打印出每个变量的前五行的副本。这两个数据集的头部看起来都不错,所以稍后我们将看看它们是否还有其他问题。
基本数据分析
在继续之前,让我们快速进行一个基本的数据集分析。创建一个新的代码块并输入以下代码:
print(customers.shape)
print(customers.dtypes)
print(customers.describe(include="all"))
以下是一些结果:
对于这三个表中的每一个,此代码将为我们加载的数据生成一些基本统计信息。
shape
方法显示每个 DataFrame 的行数和列数。dtypes
方法显示涉及的数据类型。describe
方法(带有include="all"
修饰符)显示有关数据的统计信息,例如有效值的计数、唯一值的数量、值的频率等。
请注意,有些计数与总数不匹配。这是因为单元格中存在缺失信息,我们需要找到并更正它。我们的数据集包括客户和产品信息,以及几个月内的购买记录,因此它为我们定义了大量的不同信息。
摘要
我们使用 Pandas DataFrame 数据结构从 CSV 文件和 SQL 服务器加载了数据。我们还快速查看了一些基本分析函数,它们显示了我们数据集的有用信息。
现在,让我们通过探索查找和处理缺失值的一些选项来继续进行数据清理。