对比 pandas 与 SQL:使用 SQL 实现 pandas 的经典操作
在数据分析中,pandas 和 SQL 都是非常重要的工具。虽然它们工作在不同的环境中(pandas 是 Python 的库,SQL 是查询数据库的语言),但许多操作是相似的。本文将对比 pandas 的经典操作,并展示如何用 SQL 来实现相同的功能。
目录
读取数据
Pandas
import pandas as pd
df = pd.read_csv('data.csv')
SQL
-- 从表中选择所有数据
SELECT * FROM table_name;
选择列
Pandas
df_selected = df[['column1', 'column2']]
SQL
SELECT column1, column2 FROM table_name;
过滤行
Pandas
df_filtered = df[df['column'] > 10]
SQL
SELECT * FROM table_name
WHERE column > 10;
排序数据
Pandas
df_sorted = df.sort_values(by='column', ascending=False)
SQL
SELECT * FROM table_name
ORDER BY column DESC;
分组聚合
Pandas
df_grouped = df.groupby('column').agg({'value_column': 'mean'})
SQL
SELECT column, AVG(value_column) as mean_value
FROM table_name
GROUP BY column;
连接表
Pandas
df_merged = pd.merge(df1, df2, on='key', how='inner')
SQL
SELECT *
FROM table1
INNER JOIN table2
ON table1.key = table2.key;
应用函数
Pandas
df['new_column'] = df['column'].apply(lambda x: x * 2)
SQL
SELECT *, (column * 2) as new_column
FROM table_name;
处理缺失值
Pandas
-
删除缺失值
df_dropna = df.dropna()
-
填充缺失值
df_fillna = df.fillna(0)
SQL
-
删除缺失值
SELECT * FROM table_name WHERE column IS NOT NULL;
-
填充缺失值
SELECT COALESCE(column, 0) as column FROM table_name;
添加新列
Pandas
df['new_column'] = df['column1'] + df['column2']
SQL
SELECT *, (column1 + column2) as new_column
FROM table_name;
重命名列
Pandas
df_renamed = df.rename(columns={'old_name': 'new_name'})
SQL
SELECT column as new_name
FROM table_name;
数据类型转换
Pandas
df['column'] = df['column'].astype(float)
SQL
SELECT CAST(column AS FLOAT) as column
FROM table_name;
透视表操作
Pandas
df_pivot = df.pivot_table(index='column1', columns='column2', values='value_column', aggfunc='sum')
SQL
SQL 不直接支持透视操作,但可以使用条件聚合来模拟:
SELECT
column1,
SUM(CASE WHEN column2 = 'value1' THEN value_column ELSE 0 END) as value1_sum,
SUM(CASE WHEN column2 = 'value2' THEN value_column ELSE 0 END) as value2_sum
FROM table_name
GROUP BY column1;
总结
pandas 和 SQL 在数据处理中有许多相似的操作。理解两者之间的对应关系有助于在不同的环境中应用相同的分析技巧。无论是数据筛选、排序、分组聚合还是数据清洗,都可以找到对应的方法来实现。