用途
SQLでのデータ抽出は慣れてるけど、Pythonでのデータ抽出方法がわからない。(データアナリスト職の方)
逆にPythonは得意だけど、SQLは触ったことない。(エンジニア職でデータ分析やってみたい方)
といった境目を繋げるような形になれば幸いです。
※適宜思いついたところで不定期更新していきます。
※SQLはbigqyeryでのコードとなります。Pythonはpandasなどを利用します。
データ表示
全データを表示する
SQL
-- テーブル内容を全て表示 SELECT * FROM dataset.table
Python
## dfの内容を全て表示 df
部分的なデータを条件指定して表示する
SQL
-- WHERE句で条件指定して項目(nameとpriceの2項目)表示する SELECT name , price FROM dataset.table WHERE target_date = '2021-01-01' -- target_dateに'2021-01-01'が入っているもののみを抽出
Python
## df内で、target_dateに'2021-01-01'が入っているnameとpriceを抽出する df.query('target_date == ["2021-01-01"]')[['name', 'price']]
重複したデータを除外して表示
SQL
SELECT DISTINCT name FROM dataset.table
Python
print(df['name'].unique())
データを昇順(または降順)に並び替える
SQL
# ORDER BYに指定した項目ごとにデータを昇順にして表示 SELECT * FROM dataset.table ORDER BY age
Python
import pandas as pd df.sort_values('age', assending=True)
データ削除
全データを削除する
SQL
-- 指定したテーブルを削除する DROP TABLE dataset.table
Python
## 指定したデータを削除する df.drop()
データ集計
データ件数を集計
SQL
-- 指定したテーブルの全レコード件数をカウントする SELECT COUNT(*) AS COUNT FROM dataset.table
Python
import pandas as pd ## 指定したデータの件数をカウントする df.value_counts()
統計量を出す
SQL
-- 単発でできる処理がないので、統計量をそれぞれの集計関数で表示する SELECT COUNT(column) -- 件数 , AVG(column) -- 平均 , STDDEV(column) -- 標準偏差 , MIN(column) -- 最小値 , MAX(column) -- 最大値 FROM dataset.table
SQLでの四分位数の算出はやや複雑なので、こちらを参照
Python
## 指定したデータの統計量(件数、平均、標準偏差、四分位数)を表示する df.describe() > df count 8.000000 mean 230031.625000 std 76197.198242 min 129880.000000 25% 174588.250000 50% 223474.500000 75% 264029.500000 max 359905.000000
複数データの連結
SQL
-- 複数のテーブルをidで連結して、連結したtableを項目表示する SELECT * FROM dataset.table AS t1 INNER JOIN dataset.table AS t2 ON t1.id = t2.id
Python
import pandas as pd -- 複数のデータフレームをidで連結する df = pd.merge(df1, df2, on='id', how='inner')