
こんにちは、TAKです。
今回は、pythonのpandasを用いてカラム(列)を追加する方法を紹介していきたいと思います。
「pandasを使ってデータフレーム化したけど、カラム(列)の追加方法がわからない」方や「カラム(列)を追加する必要性が今一つわからない」といった方は参考にしてみてください。
【こんな人に読んで欲しい記事です】
● pandasを使ってカラム(列)を自由に追加出来るようになりたい方
● pandasのデータフレームにカラム(列)を追加する必要性や活用法を知りたい方
必要ライブラリのインポート

まず最初に今回使うライブラリをインポートしておきます。
pandasだけで大丈夫なので、上記のようにインポートしておいてください。
利用データの確認
今回もシンプルな例を想定してみます。
以下のような、3名の1ヶ月当たり生活費(食費・趣味・勉強代)を並べたデータを想定します。

上記がベースとなるデータフレームであり、これに対して新たなカラム(列)を追加することが今回の目的となります。
追加するカラム(列)としては、生活費合計を意味する「life_total」と、1日当たりの平均支出額を意味する「life_total_per_day」の2つとしてみます。最終的なイメージは以下のようになります。

利用データの作成
上記イメージを前提として、データフレームを作成していきましょう。
データフレームの作り方がわからない方は、以下記事を参考にしてみてください。
実際にpandasを用いて作成したデータフレームが以下となります。
今回は、データフレームを初期化出来るように関数として設定しています。


これで先ほどのイメージ図と同じデータフレームが作成出来ましたね。
このデータフレームをベースとして、2通りの方法でカラム(列)を追加していきたいと思います。
カラム(列)の追加方法①
まず一つ目は、`df[追加列名]`を使う方法です。
シンプルに使えるので、この方法を用いている方も結構多いと思います。
「life_total」のカラム(列)を追加したコードが以下です。

続いて、「life_total_per_day」のカラム(列)を追加したコードが以下となります。

これでイメージ通りのデータフレームを作成することが出来ました。
追加したいカラム(列)名を追加するだけなので、シンプルでわかりやすいですね。
カラム(列)の追加方法②
もう一つ、データフレームにカラム(列)を追加する方法を紹介しておきます。
それは、`df.assign(列名=値)`を用いる方法です。
イメージしやすいように、列名部分に「test」を、値部分に「数値(1)」と「文字列(loading)」を代入した場合の結果を見てみます。以下では、最初にデータフレームを初期化しています。



列名と値に指定した情報がそのままデータフレームに新たなカラム(列)として追加されていますね。
ではこの方法を使って、先ほど同様に「life_total」と「life_total_per_day」を追加してみます。

これで「life_total」が追加されました。
「df」の内容を確認してみましょう。

すると、先ほどの内容が反映されていないことがわかります。
df.assign()を用いると新しいオブジェクトを返してくれるので、以下のように変数に格納しておきます。

続いて、「life_total_per_day」を追加したコードが以下となります。

以上が、df.assign()を用いてカラム(列)を追加する方法でした。
カラム(列)を追加する必要性
最後に、「なぜデータフレームにカラム(列)を追加する必要があるのか?」について考えてみたいと思います。結論から言えば、特徴量を設計してより良いモデルを構築するためだと言えます。
今回使ったシンプルな例を見てもわかると思いますが、一つ一つのカラム(列)は何かしらの意味を持つ「特徴量」となっていました。現実的にはあり得ないですが、例えば今回用いた「3名の生活費」を前提としてローン審査を通過出来るかどうかといったモデルを構築する場合、生活水準が高い人ほど収入も高いと考えることも出来ます。
そうした仮定に立った場合、今回のようにカテゴリ別の生活費を合計したカラム(列)や、1日当たりの平均支出を表したカラム(列)を追加することに、意味を見出せることもあります。
つまり、所与のデータフレームをベースとしてより良い特徴量を生み出せるケースでは、新たな特徴量をカラム(列)として追加する意味があるということです。そうすれば、より精度の高いモデルを構築することにも繋がりますね。
他にも追加する意義はあるでしょうが、僕はこのように解釈しています。
さいごに
今回は、pythonのpandasを用いてデータフレームにカラム(列)を追加する方法を紹介してきました。
よりレベルの高いモデルを構築する場合には、今回紹介したようなカラム(列)の追加は必要不可欠な方法となるので、シンプルな例を通じて理解を深めてみてください。
またねん。