Pandas 对 Pandas 数据集执行 SQL查询
在本文中,我们将介绍如何使用 Pandas 在数据集上执行 SQL 查询。Pandas 是 Python 的一个强大的数据分析工具,它提供了多种用于数据处理和分析的功能。
阅读更多:Pandas 教程
需要的安装
首先需要安装 Pandas 和一些其他必要的 Python 模块。可以使用 pip 安装 Pandas和SQLalchemy库。
确保已经成功安装这两个库,可以用以下代码检查:
导入数据
用 Pandas 执行 SQL 查询,首先需要创建一个数据集。在这里我们使用 CSV 文件作为样例,这个文件可以用到 Titanic 数据集。
以下代码导入数据集:
Pandas 数据集通常是由多个列组成,例如在上述输入中,我们有年龄、性别、班舱和生存的列。
使用SQL 语句执行查询
Pandas可以使用 SQL 语句执行查询。此外,有许多在 Pandas 中使用 SQL 语句做数据需求时异常易用的 packages,其中一种最为惊人的是 pandasql。
以下是我们如何用 Pandas 和 pandasql 使用 SQL 语句来筛选 Titanic 数据集中的幸存者:
这会显示存活者总数,如下所示:
此外,我们可以对筛选出的数据进行一些计算。以下是如何选择年龄和生存列,然后按生存列进行分组,计算总数、平均数和标准差。
这会显示存活者的平均年龄、数量比例和标准偏差,如下所示:
筛选数据集
下面,我们来看看如何使用 Pandas 的筛选功能来列举 Titanic 数据集中18岁以上的乘客:
在这里,df[‘Age’] > 18 返回一个布尔数组,这个数组指示哪些行满足条件。我们将这个布尔数组传递给 DataFrame,DataFrame 将会负责保留仅与 True 对应的行。
我们也可以使用更复杂的筛选条件,例如列出年龄在20至40岁之间的女性乘客。
在这里,括号中的每个表达式都返回一个 True 或 False 数组,表示数据帧中那些行满足条件。然后我们将这些数组通过 & 连接,并将结果传递给数据帧,获得符合条件的行。
如果我们需要挑选出整个数据集中的某些特定列,可以使用 loc 来实现。以下是如何筛选特定列的代码:
在 loc 中,第一个参数指定了行的筛选方法,而第二个参数指定了需要挑选的列。在这个例子中,我们只需要选择 Survived 和 Age 两列。
分组和聚合数据
使用 Pandas 的 groupby 方法,我们可以将数据集分成不同的组,并对每个组应用相同的聚合函数(例如 sum、mean、count 等)。
以下是如何按性别计算幸存者人数:
在这里,我们使用 groupby 方法将数据集依据性别分组,并使用 sum 函数计算每个分组的 Survived 列之和。
此外,还可以使用 DataFrame 的 pivot_table 方法将数据集转换为一个交叉表,并使用分组和聚合功能,汇总原始数据。以下是如何按性别和班舱计算幸存者和遇难者人数:
在 pivot_table 中,第一个参数指定了聚合的列,第二个参数指定了行分组列,第三个参数给出了列分组列,而 aggfunc 给出了聚合函数。margins=True 指示计算汇总行和列。
描述数据
描述性统计是摘要和理解数据的一种方法,可以使用 Pandas 包中的描述性统计函数快速执行此操作。以下是在 Titanic 数据集上计算数值型列的描述性统计函数。
该函数将把所有数值型列作为数据帧返回,包括列计数、平均值、标准差、最小值、25%分位数、中位数、75%分位数和最大值。
数据清理
数据清洗是数据科学家的日常工作之一。在 Pandas 中,可以使用许多函数处理缺失的、重复的和异常值。
处理缺失值
使用 Pandas 中的 isnull 和 notnull 函数可以找出数据集中的缺失值。以下是如何计算 Age 列中的缺失值数量:
缺失值可以通过 fillna 方法替换为特定的值。例如,以下代码将 Age 列中的缺失值替换为这列的平均值:
在这里,inplace 参数指示是否更新原始数据集。
处理重复值
使用 Pandas 中的 duplicated 函数可以找到数据集中的重复值。以下是如何计算数据集中的重复项数:
使用 drop_duplicates 方法可以删除数据集中的重复值。以下是在特定列(PassengerId 列)中删除重复值的示例:
处理异常值
有时,数据集中的值可能超出了合理的范围。可以使用 Pandas 中的 clip 方法将超出指定阈值范围的值替换为指定最大值或最小值。以下是如何将 Age 列中超出 0 至 100 范围的值替换为 0 或 100。
总结
本文介绍了如何使用 Pandas 在数据集上执行 SQL 查询,对数据集进行筛选、分组、聚合和描述性统计,以及处理缺失值、重复值和异常值。Pandas 是 Python 用于数据分析的有力工具之一,具有强大而易于使用的功能。