トップページデータ処理データの取り扱いSQL 問い合わせ(Python, pandas, pandasql を使用)

SQL 問い合わせ(Python, pandas, pandasql を使用)

前準備

Python の準備

Python プログラムを動かすために, Windows では「python」, Ubuntu では「python3」などのコマンドを使う.

あるいは, 開発環境や Python コンソール(Jupyter Qt ConsoleSpyderPyCharmPyScripter など)の利用も便利である.

あるいは,オンラインで動くGoogle Colaboratory のノートブックの利用も,場合によっては便利である.

Google Colaboratory のノートブックを使うか, 自分のパソコンで Python を動かすなどがありえる.

(1) (Google Colaboratory を使う場合Google Colaboratory のノートブックの準備

Google Colaboratory のノートブックを新規作成を行う.

  1. Google Colaboratory のWebページを開く

    https://colab.research.google.com

    Google Colab はオンラインの Python 開発環境. 使用するには Google アカウントが必要

  2. ファイル」で、「ノートブックを新規作成」を選ぶ

    [image]
  3. Google アカウントでのログインが求められたときはログインする

    [image]

    [image]

(2) (自分のパソコンで Python を動かす場合)Python の準備

Python のインストール: 別ページで説明している.,pip と setuptools の更新,Python 開発環境

Python の URL: http://www.python.org/

【Python, pip の使い方】

Python, pip は,次のコマンドで起動できる.

Python 開発環境のインストール】

Python の numpy,pandas,seaborn,matplotlib,pandasql のインストール

Iris データセット, titanic データセットの準備

  1. iris, titanic データセットの読み込み
    import pandas as pd
    import seaborn as sns
    sns.set()
    iris = sns.load_dataset('iris')
    titanic = sns.load_dataset('titanic')
    

    [image]
  2. データの確認
    print(iris.head())
    print(titanic.head())
    

    [image]

SQL 問い合わせの例(Python, pandasql を使用)

  1. 選択 (selection)
    import pandas as pd
    from pandasql import sqldf
    import seaborn as sns
    sns.set()
    iris = sns.load_dataset('iris')
    
    pysqldf = lambda q: sqldf(q, globals())
    print(pysqldf("SELECT * FROM iris WHERE sepal_length > 5;"))
    

    [image]
  2. 射影 (projection)
    import pandas as pd
    from pandasql import sqldf
    import seaborn as sns
    sns.set()
    iris = sns.load_dataset('iris')
    
    pysqldf = lambda q: sqldf(q, globals())
    print(pysqldf("SELECT sepal_length, sepal_width FROM iris WHERE sepal_length > 5;"))
    

    [image]
  3. グループごとの数え上げ

    列を1つ選ぶことで、グループを作り、各グループの要素数を求める

    pandasql と SQL を使う場合

    import pandas as pd
    from pandasql import sqldf
    import seaborn as sns
    sns.set()
    iris = sns.load_dataset('iris')
    titanic = sns.load_dataset('titanic')
    
    pysqldf = lambda q: sqldf(q, globals())
    print( pysqldf("SELECT species, count(*) FROM iris group by species;") );
    print( pysqldf("SELECT embark_town, count(*) FROM titanic group by embark_town;") );
    

    [image]
  4. グループごとの最大、最小、平均、中央値、和

    Iris データセットで,各グループの最大値を求める場合のみを載せる.

    pandasql と SQL を使う場合

    import pandas as pd
    from pandasql import sqldf
    import seaborn as sns
    sns.set()
    iris = sns.load_dataset('iris')
    titanic = sns.load_dataset('titanic')
    
    pysqldf = lambda q: sqldf(q, globals())
    print( pysqldf("SELECT species, max(sepal_length), max(sepal_width), max(petal_length), max(petal_width) FROM iris group by species;") );
    

    [image]