Python-pandas-comparison-with-sql

提供:Dev Guides
移動先:案内検索

Python Pandas-SQLとの比較

多くの潜在的なPandasユーザーはSQLにある程度精通しているため、このページはパンダを使用してさまざまなSQL操作を実行する方法の例を提供することを目的としています。

import pandas as pd

url = 'https://raw.github.com/pandasdev/
pandas/master/pandas/tests/data/tips.csv'

tips=pd.read_csv(url)
print tips.head()

その*出力*は次のとおりです-

    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

SELECT

SQLでは、選択は、選択した列のコンマ区切りリストを使用して行われます(またはすべての列を選択するには*)-

SELECT total_bill, tip, smoker, time
FROM tips
LIMIT 5;

Pandasでは、列名のリストをDataFrameに渡すことで列の選択が行われます-

tips[[total_bill', 'tip', 'smoker', 'time']].head(5)

完全なプログラムを確認しましょう-

import pandas as pd

url = 'https://raw.github.com/pandasdev/
pandas/master/pandas/tests/data/tips.csv'

tips=pd.read_csv(url)
print tips[[total_bill', 'tip', 'smoker', 'time']].head(5)

その*出力*は次のとおりです-

   total_bill   tip  smoker     time
0       16.99  1.01      No   Dinner
1       10.34  1.66      No   Dinner
2       21.01  3.50      No   Dinner
3       23.68  3.31      No   Dinner
4       24.59  3.61      No   Dinner

列名のリストなしでDataFrameを呼び出すと、すべての列が表示されます(SQLの*と同様)。

どこに

SQLでのフィルタリングはWHERE句を介して行われます。

  SELECT * FROM tips WHERE time = 'Dinner' LIMIT 5;

DataFramesは複数の方法でフィルタリングできます。最も直感的なのは、ブールインデックスを使用することです。

  tips[tips['time'] == 'Dinner'].head(5)

完全なプログラムを確認しましょう-

import pandas as pd

url = 'https://raw.github.com/pandasdev/
pandas/master/pandas/tests/data/tips.csv'

tips=pd.read_csv(url)
print tips[tips['time'] == 'Dinner'].head(5)

その*出力*は次のとおりです-

   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

上記のステートメントは、一連のTrue/FalseオブジェクトをDataFrameに渡し、すべての行をTrueで返します。

GroupBy

この操作は、データセット全体で各グループのレコード数を取得します。 たとえば、性別によって残されたヒントの数を取得するクエリ-

SELECT sex, count(*)
FROM tips
GROUP BY sex;

パンダに相当するものは-

tips.groupby('sex').size()

完全なプログラムを確認しましょう-

import pandas as pd

url = 'https://raw.github.com/pandasdev/
pandas/master/pandas/tests/data/tips.csv'

tips=pd.read_csv(url)
print tips.groupby('sex').size()

その*出力*は次のとおりです-

sex
Female   87
Male    157
dtype: int64

上位N行

SQLは LIMIT を使用して*上位n行*を返します-

SELECT * FROM tips
LIMIT 5 ;

パンダに相当するものは-

tips.head(5)

完全な例を確認しましょう-

import pandas as pd

url = 'https://raw.github.com/pandas-dev/pandas/master/pandas/tests/data/tips.csv'

tips=pd.read_csv(url)
tips = tips[[smoker', 'day', 'time']].head(5)
print tips

その*出力*は次のとおりです-

   smoker   day     time
0      No   Sun   Dinner
1      No   Sun   Dinner
2      No   Sun   Dinner
3      No   Sun   Dinner
4      No   Sun   Dinner

これらは、Pandas Libraryの前の章で学んだ、比較した数少ない基本的な操作です。