たなブログ 教養を高めて生涯資産を増やすブログ(`・ω・´)

【Python Coding】pandasでデータフレームを結合(単純結合)

PR Pythonを学ぶ

こんにちは、TAKです。
今回はpythonのpandasを使って、データフレーム同士を結合する方法を紹介していきたいと思います。

pandasで「作成」したデータフレームや「読み込んだ」データフレームを結合する方法自体はいくつかありますが、今回は一番基本とも言える「単純」な結合方法を紹介します。

ここで言う「単純」とは、結合させたい2つのデータフレームがあった時に、行方向に繋げる方法と列方向にそのまま繋げる方法を意味しています。

本記事ではシンプルな具体例を用いて紹介していくので、ご自身のローカル環境で確認しながら理解を深めてみてくださいね。

ライブラリのインポート(共通)

今回はpandasだけ使う

まず最初に、今回必要なライブラリのインポートをしておきます。
今回はpandasだけでOKです。
pandasを使ってデータフレームの作成と結合を実現させていきます。

利用データの確認

今回使うデータをpandasを用いてシンプルに作っていきます。
以下のようなデータフレームを3つ作っていくイメージです。

今回使う3つのデータフレーム

DataFrame1とDataFrame2はカラム(列)名が共通しているので、行方向に結合させます。
DataFrame1とDataFrame3はカラム(列)名が共通していないので、列方向に結合させます。

つまり、今回最終的に実現させたいデータフレームの結合イメージは以下のようになります。

データフレームの結合後イメージ(左:行方向に結合 / 右;列方向に結合)

利用データの作成

上記のイメージを前提として、データフレームを3つ作成していきましょう。
「そもそもpandasを使ったデータフレームの作成方法が今一つわからない」という方は、以下の記事を参考にしてみてください。

先ほどのイメージ図と合わせる形で作成したデータフレームが以下となります。

DataFrame1(df1)の作成
DataFrame2(df2)の作成
DataFrame3(df3)の作成

これで準備OKですね。

データフレームの結合(行方向)

では実際にデータフレーム同士を結合する方法をみていきましょう。
データフレーム同士を単純に結合する場合は、`pd.concat()`を使います。
そして、行方向に結合する場合はデフォルト(axis=0)指定・列方向に結合する場合はaxis=1を指定します。

言葉だけだと今一つわかりにくいと思うので、まずは行方向へのデータフレーム結合をみていきます。
DataFrame1(df1)とDataFrame2(df2)を結合して、DataFrame12(df12)を作成したコードが以下です。

データフレーム同士を行方向に結合した結果(df12)

pd.concatの中で、データフレームを指定することで結合が可能になります。
鍵カッコで括る必要があるので、その点だけ気をつけてください。

データフレームの結合(列方向)

では次に、データフレームを列方向に結合する方法を見ていきます。
DataFrame1(df1)とDataFrame3(df3)を結合して、DataFrame13(df13)を作成したコードが以下です。

データフレーム同士を列方向に結合した結果(df13)

pd.concatの中でデータフレームを指定している点は先ほどと同じですが、「列」方向への結合であるためaxis=1を指定している点が異なっているといえます。

もしaxis=1を指定しなかった場合には、以下のような結果となります。
行列方向にデータが追加され、該当の無い箇所は欠損値(NaN)となっていますね。

axis=1を指定せずにdf1とdf3を結合した結果

以上がデータフレーム同士の単純結合方法となります。
データフレーム同士を繋げたいような場合には、是非活用してみてください。

さいごに

今回はpythonのpandasを使って、データフレーム同士を単純に結合する方法を紹介してきました。

データフレームを繋げる方法がわかれば、より効率的なデータ分析が可能となるので、是非使いこなせるようにしてみてください。

では今回はこのへんで。