どのようにPandasデータフレームにSQLクエリを実行するには?


パンダはPythonのデータ解析のための事実上の標準ライブラリかもしれません.しかし、ほとんどのデータ科学者は、パンダのデータ操作よりSQLに満足しています.
時には物事がSQLで簡単に行うように感じるかもしれない.我々は両方の世界のベストを取得する方法がある場合はそれは素晴らしいことではないだろうか?
します.
Pythonの生態系の素晴らしいライブラリは、これを行うことが可能になります.
関連項目:A Better Way to Summarize Pandas Dataframes.

次のSQLクエリをpandasdataでパンダデータに書き込む
pandasqlは、PADASデータフレームにSQLコードを実行できるオープンソースパッケージです.そのリポジトリをチェックアウトできますGitHub .
あなたはinstall Pandasql with PyPI 下記の通り.
pip install pandasql
いったんインストールしたら、メモリ上の任意のデータフレームを照会するために、その自己関数を使用することができます.
from pandasql import sqldf
from sklearn import datasets

data = datasets.load_wine(as_frame=True)['data']

sqldf("SELECT * FROM data LIMIT 10", globals())
上記の例では、Scikit Learning Toy DataSetリポジトリで利用可能なワイン認識データセットをインポートしました.次にデータセットから最初の10レコードを問い合わせる.
への最初の引数sqldf 関数は理解するのに簡単です.SQLクエリです.2番目の引数global() データセットを検索するには、グローバルコンテキストを使用します.この引数の他の可能な値はlocal() この関数はインタプリタに関数ブロックのコンテキスト内でのみ表示するよう指示します.
パンダ操作だけを使っているなら、以下のようになります.
df[:10]
両方の操作は、次のデータセットになります.

最初に、それは最初の10の記録を照会する些細な仕事に複雑さを加えるのを直感的に思われるかもしれません.しかし、クエリが大きくなるにつれて、SQLクエリを使用するのが簡単になります.
プロチップ:グローバル環境を記述することなくSQLを使用してクエリーパンダ
私たちはfunctool.partial ユーティリティは、毎回環境を記述する必要はありません部分的な関数を作成します.ここでは、それを行う方法です.
from functools import partial

gpandsql = partial(sqldf, env=globals())

gpandsql("SELECT * FROM data LIMIT 10")

どのような種類のSQLクエリは、パンダのデータを実行することができますか?Pandasql それは一時的なバックエンドとしてSQLiteを使用します.すべての種類のSQL操作sqliteサポートを実行できます.これはgroupby、どこで、結合の異なる種類が含まれます.
以下に例を示します:
from functools import partial
from pandasql import sqldf
from sklearn import datasets

data = datasets.load_wine(as_frame=True)['data']
target = datasets.load_wine(as_frame=True)['target']


gpandsql = partial(sqldf, env=globals())

gpandsql("""
    SELECT * 
    FROM data d 
    LEFT JOIN target t 
    WHERE 
        d.ash = 1.36 
    LIMIT 5"""
).describe()
さらに、より高度な操作を実行することができますwindow functions .
しかし、SQLiteは大規模なアプリケーションのために設計されたデータベースではありません.また、私たちはSQLite has some limitations 我々は気づいている必要がある.
また、pandasqlを使用してデータを検索できることに注意してください.このライブラリを使用してレコードを作成、更新、削除できません.

最後の思考
ほとんどのデータ科学者はSQLデータベースでうまく機能します.いくつかの場合、それはパンダの操作を使用するのは簡単ではありません.
それらのために、Pandasqlは両方の世界の最高を楽しむ素晴らしいツールです.
私はまた、SQLクエリが読みやすさに優れていることに気づいた.彼らは自然言語の流れをたどり、初心者のプログラマにとっても容易に理解できるようになる.

Thanks for the read, friend. It seems you and I have lots of common interests. Say Hi to me on , , and Medium. I’ll break the ice for you.