スポンサーリンク

用途

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')
おすすめの記事