空飛ぶチンアナゴの統計解析日記

統計解析を嗜むチンアナゴのメモ帳です

CDCのCOVID-19の感染データをapiを使って取得する

data.cdc.gov
のデータセットからデータを取得して性別と年齢階級別の罹患数を求めるためのコードを出したので、やり方を忘れないうちにメモっておく。

使うモジュール

https://dev.socrata.com/foundry/data.cdc.gov/9bhg-hcku
公式のapiのドキュメントを見ると単にRequests(https://docs.python-requests.org/en/latest/)を使うのではなくsodapyを使う。
pypi.org

実際のコード

1) まずはapiサーバーに接続するためのクライアントを設定する

client = Socrata("data.cdc.gov", None)

2) サーバーに接続したらgetメソッドで表を取り出す。

get(dataset_identifier, content_type="json", **kwargs)

dataset_identifierにはjsonのファイル名を代入する。
kwargsのところにはSoQLと呼ばれるSQLっぽいクエリを代入する。
SoQLの詳しい説明は
https://dev.socrata.com/docs/queries/
を参照のこと。

3) 取り出しに成功したらpandasで読み込む

pandas.pydata.org
を用いてデータフレームとして読み込む。

実際のコード例

import pandas as pd
from sodapy import Socrata

client = Socrata("data.cdc.gov", None)
results = client.get("9bhg-hcku",  where="`group`='By Total' and `sex`!='All Sexes'", limit=2000)
df = pd.DataFrame.from_records(results)

ほとんどサンプルのコードと変わらないが、こんな感じでpandasのデータフレームに読み込める。
ここまでできればcsv等から読み込んだ時と同じようにデータの加工ができる。