Pythonを用いたデータ解析に便利なライブラリであるpandasを使うといろんなCSVファイルを読み込むことができます。こちらの記事では複数のCSVファイルを結合し、大きなデータとしてデータ解析を行うための処理を説明します。
データの準備
read_csv の記事で利用していたサンプルのデータを続けて利用しています。厚生労働省のページより、「PCR検査実施人数」をクリックして「pcr_tested_daily.csv」を、「PCR検査の実施人数」から「pcr_case_daily.csv」をダウンロードして利用します。
データの準備その1 (pcr_tested_daily.csv)
毎日の検査人数データが2020年2月から2022年9月まで記録されています。データ処理の例題に使うために、2020年2月と2020年3月のデータをそれぞれ作成し、CSVファイルとして保存しました(pcr_tested_daily_202002.csv と pcr_tested_daily_202003.csv という名前で保存しました)。
データの準備その2 (pcr_case_daily.csv)
こちらは merge の説明で利用したデータになります。そちらの記事も合わせてご確認ください。
concatを用いてデータを縦方向に結合する
作成したデータをpandasのread_csvで読み込みした後に、結合して1つのDataFrameとして扱う処理を説明します。
concat を用いて行方向で結合する(2月のデータ+3月のデータをつくる)
concatを使用したプログラムを共有します。
サンプルコード
サンプルコードです。
データの読み込みについては read_csv の使い方を確認してください。
実行結果
下の図に実行結果を示します。

2つの列名情報が揃っているデータフレームを用意したので、2つのデータフレームをconcatすると、2月と3月のデータが格納された結果が得られます。
結合時のインデックスを確認する
先程の処理を行ったとき、データフレームの各行に付与されている index が混ざることに注意してください。df12.index を出力することで index を確認できます。これは2月のデータが25日分、3月のデータが31日分だったので、それぞれ0〜24と0〜30の index が付いていたためです。結合したデータに新しく 0行目〜55行目までの index を振り直すには、concatの引数の1つである ignore_index に True を渡します。
インデックスを確認するサンプルコード
データフレームのインデックスは index で取得することができます。取得したインデックスをpythonのリストにして出力してみます。
実行結果
実行結果を確認します。

1行目はインデックスの処理をしない場合の結果です。2つのデータフレームのインデックスが混ざって設定されていることが分かります。
2行目は ignore_index=True としてインデックスを振り直した結果です。0から55まで順番にインデックスが付与されたことが分かります。
concat を用いて列方向(横方向)で結合する(国立感染症研究所のデータ+他機関のデータをつくる)
mergeの記事でサンプルを確認した通り、データフレームの結合には横方向(列を増やす)と縦方向(行を増やす)があります。concat は複数のデータフレームを両方向に柔軟に結合することができます。ここでは列方向にデータを増やす例を実装してみます。
サンプルコード
concat を実行するサンプルコードです。
実行結果(その1)
上のコードを実行すると次の結果が得られます。

期待した結果とは異なる結果になりましたね。これは concat がデフォルトでは縦方向に行を追加しようとするためです。ここでは横方向に列を追加したいので、追加する軸 axis を指定します(2次元の場合には縦方向がaxis=0、横方向がaxis=1です)。以下は axis=1 を指定するサンプルコードです。
スポンサーリンク
サンプルコード(axis指定版)
以下がサンプルコードです。
実行結果(axis指定版)
横方向の結合を指定したので、うまく結合されました。

ただし日付が2重に記録されていることがわかります。これは両方のデータフレームから日付の列を持ってきて結合しているためです。
日付をインデックスに指定して結合するサンプルコード
最後に上の問題を解決する1つの方法として、数値のインデックス(0、1、…)ではなく日付をインデックスと設定することで、重複を取り除いてみます。データフレーム読み込みの際に0列目(日付)をインデックスに使用するように設定した上で、concatを用いて横方向に結合します。
日付をインデックスに指定した実行結果
実行結果を確認します。

望んだ結果が得られました。
データの読み込み・結合はpandasを使う際に大変よく利用する機能になります。結合方法にも細かいパラメータがたくさんありますので、一度ドキュメントを確認してみてください。
また自分の興味のあるデータを実際に読み込んだり、結合や集計を行うことで理解が深まると思います。一度使ってみてくださいね