LoginSignup
1
5

PandasをクエリするPythonのライブラリ

Posted at

はじめに

データ解析を行う際、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')

必要なライブラリをimportします
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を使用してグループ化が可能です。
day(曜日)ごとにグループ化して、チップ総額の平均を抽出します。
土日の方がチップの金額が高い傾向です。

おわりに

pandasqlは、SQLを使用してPandas DataFrameにクエリを実行するための強力なツールです。SQLに慣れているデータアナリストやデータサイエンティストにとって、このライブラリはPandasの操作をより直感的にすることができます。

今回のブログ記事では、pandasqlの基本的な使用方法と、seabornのtipsデータセットを使用した実例を紹介しました。これにより、Pandas DataFrameに対してSQLクエリを簡単に実行する方法を学ぶことができました。

データ解析の作業を効率化するために、pandasqlを活用してみてください!

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5