【Pandas】 sql查询

介绍

在进行数据分析时,Pandas 是一个非常流行的 Python 数据分析库。 然而,如果习惯用 SQL 从数据库检索和操作数据,Pandas 的语法有点望而生畏。 这时 pandasql 可派上用场。 该库可直接在 Pandas DataFrame 上运行 SQL 查询。

在这篇博文中,将展示如何使用 pandasql 在 Pandas DataFrame 上运行 SQL 查询。 将使用seaborn 库中的“tips”数据集作为数据集。

关于pandasql

代码

pip install pandas seaborn pandasql
``

# 代码
```python
import pandas as pd
import seaborn as sns
from pandasql import sqldf

# 从seaborn加载tips数据集
tips = sns.load_dataset('tips')

query1 = """
SELECT *
FROM tips
LIMIT 5;
"""

result1 = sqldf(query1, globals())
print(result1)

query2 = """
SELECT *
FROM df
WHERE total_bill > 30
LIMIT 5;
"""

result2 = exec_query(query2)
print(result2)

query3 =  """
SELECT day, avg(total_bill)
FROM df
GROUP BY day;
"""
result3 = exec_query(query3)
print(result3)

解说

import pandas as pd
import seaborn as sns
from pandasql import sqldf

# 从seaborn加载tips数据集
tips = sns.load_dataset('tips')

导入所需的库
Seaborn 的名为“tips”的数据集包含有关在餐馆支付的小费的数据。

query = """
SELECT *
FROM tips
LIMIT 5;
"""

result = sqldf(query, globals())
print(result)
#    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

使用 pandasql 的 sqldf() 函数来执行查询。

query2 = """
SELECT *
FROM df
WHERE total_bill > 30
LIMIT 5;
"""

result2 = exec_query(query2)
print(result2)
#    total_bill   tip     sex smoker  day    time  size
# 0       35.26  5.00  Female     No  Sun  Dinner     4
# 1       39.42  7.58    Male     No  Sat  Dinner     4
# 2       31.27  5.00    Male     No  Sat  Dinner     3
# 3       30.40  5.60    Male     No  Sun  Dinner     4
# 4       32.40  6.00    Male     No  Sun  Dinner     4

可以使用 WHERE 子句进行过滤。
提取小费总额超过 30 的数据。

query3 =  """
SELECT day, avg(total_bill)
FROM df
GROUP BY day;
"""
result3 = exec_query(query3)
print(result3)
#     day  avg(total_bill)
# 0   Fri        17.151579
# 1   Sat        20.441379
# 2   Sun        21.410000
# 3  Thur        17.682742

可以使用 GROUP BY 进行分组。
按天(一周中的某一天)分组并提取平均小费金额。
周六和周日的小费往往较高。

综上所述

pandasql 是使用 SQL 查询 Pandas DataFrame 的强大工具。 对于熟悉 SQL 的数据分析师和数据科学家来说,这个库可以让 Pandas 的使用更加直观。

在这篇博文中,介绍了 pandasql 的基本用法以及使用 seaborn Tips 数据集的示例。 这能够学习如何轻松地针对 Pandas DataFrame 运行 SQL 查询。

请尝试使用 pandasql 来简化您的数据分析工作!

猜你喜欢

转载自blog.csdn.net/Allan_lam/article/details/134964931
今日推荐