本教程是“数据清洗与Python和Pandas”系列的一部分,旨在帮助开发者快速上手数据科学工具和技术。如果对本系列的其他文章感兴趣,可以在这里找到它们:
一旦设置了Jupyter Notebook并初始化了一些基本库,需要加载一些数据。为此,将从CSV文件和本地SQLite数据库加载数据。然后,将展示Pandas中一些基本的分析和功能,可以使用它们来显示和执行对数据的基本分析。
为本系列模块创建了一个完整的Jupyter Notebook,并附带了源数据文件,可以下载并本地安装。
在开始之前,请确保将customers.csv
文件和本系列附带的remoteDB.db
数据库文件复制到保存的Notebook的同一目录中。
让首先看看如何从CSV文件加载数据到Pandas。将加载与Notebook同一目录下的customers.csv
文件,以保持事情简单,但也可以远程加载。在笔记本中添加一个新的输入行,包含以下命令:
pd.read_csv("customers.csv")
这个命令使用Pandas库加载并显示customers.csv
文件。
根据显示的行,将立即看到数据中存在的一些潜在问题,这些问题显示为NaN
。还将看到生成的表格输出。
在Pandas中,表格被称为DataFrame,这是一个类似于电子表格的二维数据结构。让将这个移动到一个变量中,并修改代码行以显示前五行:
customers = pd.read_csv("customers.csv")
print(customers.head(5))
(请注意,这里和本文的其他地方,将看到运行代码后立即显示的结果。)
这将读取CSV到一个变量中,并显示数据结构的前五行。
现在让从SQLite数据库加载一些额外的数据到Pandas。将使用sqlite3库来加载和读取数据库。可以使用类似的过程与常规数据库以及不同的Python库,但SQLite是无服务器的,只需要之前复制的单个数据库文件。让将这个文件作为数据库访问。
首先,将修改第一个代码块,以包含另一个Python库:
import sqlite3 as sql
然后,在读取CSV文件的customers之后,添加以下代码:
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"
修饰符)显示了数据的统计信息,例如有效值的数量、唯一值的数量、值的频率等。
注意,一些计数与总数不匹配。这是因为单元格中缺少信息,需要找到并纠正。数据集包括客户和产品信息,以及几个月的购买情况,因此为定义了很多不同的信息。