- Python Pandas 教程
- Python Pandas - 首页
- Python Pandas - 简介
- Python Pandas - 环境设置
- Python Pandas - 基础知识
- Python Pandas - 数据结构介绍
- Python Pandas - 索引对象
- Python Pandas - Panel
- Python Pandas - 基本功能
- Python Pandas - 索引和数据选择
- Python Pandas - Series
- Python Pandas - Series
- Python Pandas - 切片Series对象
- Python Pandas - Series对象的属性
- Python Pandas - Series对象的算术运算
- Python Pandas - 将Series转换为其他对象
- Python Pandas - DataFrame
- Python Pandas - DataFrame
- Python Pandas - 访问DataFrame
- Python Pandas - 切片DataFrame对象
- Python Pandas - 修改DataFrame
- Python Pandas - 从DataFrame中删除行
- Python Pandas - DataFrame的算术运算
- Python Pandas - I/O工具
- Python Pandas - I/O工具
- Python Pandas - 使用CSV格式
- Python Pandas - 读取和写入JSON文件
- Python Pandas - 从Excel文件读取数据
- Python Pandas - 将数据写入Excel文件
- Python Pandas - 使用HTML数据
- Python Pandas - 剪贴板
- Python Pandas - 使用HDF5格式
- Python Pandas - 与SQL的比较
- Python Pandas - 数据处理
- Python Pandas - 排序
- Python Pandas - 重新索引
- Python Pandas - 迭代
- Python Pandas - 连接
- Python Pandas - 统计函数
- Python Pandas - 描述性统计
- Python Pandas - 使用文本数据
- Python Pandas - 函数应用
- Python Pandas - 选项和自定义
- Python Pandas - 窗口函数
- Python Pandas - 聚合
- Python Pandas - 合并/连接
- Python Pandas - 多级索引
- Python Pandas - 多级索引基础
- Python Pandas - 使用多级索引进行索引
- Python Pandas - 使用多级索引进行高级重新索引
- Python Pandas - 重命名多级索引标签
- Python Pandas - 对多级索引进行排序
- Python Pandas - 二元运算
- Python Pandas - 二元比较运算
- Python Pandas - 布尔索引
- Python Pandas - 布尔掩码
- Python Pandas - 数据重塑和透视
- Python Pandas - 透视
- Python Pandas - 堆叠和取消堆叠
- Python Pandas - 熔化
- Python Pandas - 计算虚拟变量
- Python Pandas - 类别数据
- Python Pandas - 类别数据
- Python Pandas - 类别数据的排序和分类
- Python Pandas - 比较类别数据
- Python Pandas - 处理缺失数据
- Python Pandas - 缺失数据
- Python Pandas - 填充缺失数据
- Python Pandas - 缺失值的插值
- Python Pandas - 删除缺失数据
- Python Pandas - 使用缺失数据进行计算
- Python Pandas - 处理重复项
- Python Pandas - 重复数据
- Python Pandas - 计数和检索唯一元素
- Python Pandas - 重复标签
- Python Pandas - 分组和聚合
- Python Pandas - GroupBy
- Python Pandas - 时间序列数据
- Python Pandas - 日期功能
- Python Pandas - Timedelta
- Python Pandas - 稀疏数据结构
- Python Pandas - 稀疏数据
- Python Pandas - 可视化
- Python Pandas - 可视化
- Python Pandas - 附加概念
- Python Pandas - 警告和陷阱
- Python Pandas 有用资源
- Python Pandas - 快速指南
- Python Pandas - 有用资源
- Python Pandas - 讨论
Python Pandas - 与SQL的比较
Pandas 是一个强大的 Python 库,用于数据操作和分析,广泛应用于数据科学和工程领域。许多潜在的 Pandas 用户都来自 SQL 背景,SQL 是一种用于管理和查询关系数据库的语言。了解如何使用 Pandas 执行类似 SQL 的操作可以显著简化转换过程并提高生产力。
本教程并排比较了常见的 SQL 操作及其在 Pandas 中的等效操作,使用流行的“tips”数据集。
导入必要的库
在深入比较之前,让我们首先导入必要的库。
import pandas as pd import numpy as np
我们还将加载 "tips" 数据集,本教程将始终使用该数据集。
import pandas as pd url = 'https://raw.githubusercontent.com/pandas-dev/pandas/main/pandas/tests/io/data/csv/tips.csv' tips=pd.read_csv(url) print(tips.head())
其输出如下:
total_bill tip sex smoker day time size 0 16.99 1.01 Female No Sun Dinner 2 1 10.34 1.66 Male No Sun Dinner 3 2 21.01 3.50 Male No Sun Dinner 3 3 23.68 3.31 Male No Sun Dinner 2 4 24.59 3.61 Female No Sun Dinner 4
选择列
在 SQL 中,SELECT 语句用于从表中检索特定列。选择是使用您选择的列的逗号分隔列表(或选择所有列的 *)进行的:
SELECT total_bill, tip, smoker, time FROM tips LIMIT 5;
在 Pandas 中,您可以通过使用列名列表从 DataFrame 中选择列来获得相同的结果:
tips[['total_bill', 'tip', 'smoker', 'time']].head(5)
示例
让我们检查一下显示所选列前五行的完整程序:
import pandas as pd url = 'https://raw.githubusercontent.com/pandas-dev/pandas/main/pandas/tests/io/data/csv/tips.csv' tips=pd.read_csv(url) print(tips[['total_bill', 'tip', 'smoker', 'time']].head(5))
其输出如下:
total_bill tip smoker time 0 16.99 1.01 No Dinner 1 10.34 1.66 No Dinner 2 21.01 3.50 No Dinner 3 23.68 3.31 No Dinner 4 24.59 3.61 No Dinner
不使用列名列表调用 DataFrame 将显示所有列(类似于 SQL 的 *)。
过滤行
在 SQL 中,WHERE 子句用于根据特定条件过滤记录。
SELECT * FROM tips WHERE time = 'Dinner' LIMIT 5;
DataFrame 可以通过多种方式进行过滤;其中最直观的是使用布尔索引。
tips[tips['time'] == 'Dinner'].head(5)
示例
让我们检查一下显示时间等于“Dinner”的前五条记录的完整程序:
import pandas as pd url = 'https://raw.githubusercontent.com/pandas-dev/pandas/main/pandas/tests/io/data/csv/tips.csv' tips=pd.read_csv(url) print(tips[tips['time'] == 'Dinner'].head(5))
其输出如下:
total_bill tip sex smoker day time size 0 16.99 1.01 Female No Sun Dinner 2 1 10.34 1.66 Male No Sun Dinner 3 2 21.01 3.50 Male No Sun Dinner 3 3 23.68 3.31 Male No Sun Dinner 2 4 24.59 3.61 Female No Sun Dinner 4
上面的语句将 True/False 对象的 Series 传递给 DataFrame,返回所有值为 True 的行。
分组数据
SQL 的GROUP BY 子句用于对指定列中具有相同值的行进行分组,并对它们执行聚合函数。例如,要计算每种性别留下的消费小费数量:
SELECT sex, count(*) FROM tips GROUP BY sex;
在 Pandas 中,groupby() 方法用于获得相同的结果:
tips.groupby('sex').size()
示例
让我们检查一下显示按性别分组的小费数量的完整程序:
import pandas as pd url = 'https://raw.githubusercontent.com/pandas-dev/pandas/main/pandas/tests/io/data/csv/tips.csv' tips=pd.read_csv(url) print(tips.groupby('sex').size())
其输出如下:
sex Female 87 Male 157 dtype: int64
限制行数
在 SQL 中,LIMIT 子句用于限制查询返回的行数。例如:
SELECT * FROM tips LIMIT 5 ;
在 Pandas 中,head() 方法用于实现此目的:
tips.head(5)
示例
让我们检查一下显示 DataFrame 前五行的完整示例:
import pandas as pd url = 'https://raw.githubusercontent.com/pandas-dev/pandas/main/pandas/tests/io/data/csv/tips.csv' tips=pd.read_csv(url) tips = tips[['smoker', 'day', 'time']].head(5) print(tips)
其输出如下:
smoker day time 0 No Sun Dinner 1 No Sun Dinner 2 No Sun Dinner 3 No Sun Dinner 4 No Sun Dinner
这些是我们之前章节中学习的 Pandas 库中比较的一些基本操作。