pythonコード プログラミング系 pandas python データサイエンス 非エンジニア向け

【Python Coding】pandasでカラム(列)を追加する方法

こんにちは、TAKです。
今回は、pythonのpandasを用いてカラム(列)を追加する方法を紹介していきたいと思います。

「pandasを使ってデータフレーム化したけど、カラム(列)の追加方法がわからない」方や「カラム(列)を追加する必要性が今一つわからない」といった方は参考にしてみてください。

【こんな人に読んで欲しい記事です】

● pandasを使ってカラム(列)を自由に追加出来るようになりたい方

● pandasのデータフレームにカラム(列)を追加する必要性や活用法を知りたい方

必要ライブラリのインポート

今回使うライブラリのインポート

まず最初に今回使うライブラリをインポートしておきます。
pandasだけで大丈夫なので、上記のようにインポートしておいてください。

利用データの確認

今回もシンプルな例を想定してみます。
以下のような、3名の1ヶ月当たり生活費(食費・趣味・勉強代)を並べたデータを想定します。

今回使うDataFrameのイメージ

上記がベースとなるデータフレームであり、これに対して新たなカラム(列)を追加することが今回の目的となります。

追加するカラム(列)としては、生活費合計を意味する「life_total」と、1日当たりの平均支出額を意味する「life_total_per_day」の2つとしてみます。最終的なイメージは以下のようになります。

今回実現したいカラム(列)を追加した後のDataFrame

利用データの作成


上記イメージを前提として、データフレームを作成していきましょう。
データフレームの作り方がわからない方は、以下記事を参考にしてみてください。

実際にpandasを用いて作成したデータフレームが以下となります。
今回は、データフレームを初期化出来るように関数として設定しています。

今回使うDataFrame(df)の作成|関数を用いて初期化出来るように設定
カラム追加前のDataFrame(df)

これで先ほどのイメージ図と同じデータフレームが作成出来ましたね。
このデータフレームをベースとして、2通りの方法でカラム(列)を追加していきたいと思います。

カラム(列)の追加方法①

まず一つ目は、`df[追加列名]`を使う方法です。
シンプルに使えるので、この方法を用いている方も結構多いと思います。

「life_total」のカラム(列)を追加したコードが以下です。

「life_total」のカラム(列)を追加

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

「life_total_per_day」のカラム(列)を追加

これでイメージ通りのデータフレームを作成することが出来ました。
追加したいカラム(列)名を追加するだけなので、シンプルでわかりやすいですね。

カラム(列)の追加方法②

もう一つ、データフレームにカラム(列)を追加する方法を紹介しておきます。
それは、`df.assign(列名=値)`を用いる方法です。

イメージしやすいように、列名部分に「test」を、値部分に「数値(1)」と「文字列(loading)」を代入した場合の結果を見てみます。以下では、最初にデータフレームを初期化しています。

DataFrameを初期化
assignの使い方(数値の場合)
assignの使い方(文字列の場合)

列名と値に指定した情報がそのままデータフレームに新たなカラム(列)として追加されていますね。

ではこの方法を使って、先ほど同様に「life_total」と「life_total_per_day」を追加してみます。

「life_total」をカラム(列)に追加

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

dfの内容を確認|先ほどの結果が反映されていないことがわかります。

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

新しいオブジェクトをdfに格納|正しい結果が表示されました。

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

「life_total_per_day」をカラム(列)に追加

以上が、df.assign()を用いてカラム(列)を追加する方法でした。

カラム(列)を追加する必要性

最後に、「なぜデータフレームにカラム(列)を追加する必要があるのか?」について考えてみたいと思います。結論から言えば、特徴量を設計してより良いモデルを構築するためだと言えます。

今回使ったシンプルな例を見てもわかると思いますが、一つ一つのカラム(列)は何かしらの意味を持つ「特徴量」となっていました。現実的にはあり得ないですが、例えば今回用いた「3名の生活費」を前提としてローン審査を通過出来るかどうかといったモデルを構築する場合、生活水準が高い人ほど収入も高いと考えることも出来ます。

そうした仮定に立った場合、今回のようにカテゴリ別の生活費を合計したカラム(列)や、1日当たりの平均支出を表したカラム(列)を追加することに、意味を見出せることもあります。

つまり、所与のデータフレームをベースとしてより良い特徴量を生み出せるケースでは、新たな特徴量をカラム(列)として追加する意味があるということです。そうすれば、より精度の高いモデルを構築することにも繋がりますね。

他にも追加する意義はあるでしょうが、僕はこのように解釈しています。

さいごに

今回は、pythonのpandasを用いてデータフレームにカラム(列)を追加する方法を紹介してきました。

よりレベルの高いモデルを構築する場合には、今回紹介したようなカラム(列)の追加は必要不可欠な方法となるので、シンプルな例を通じて理解を深めてみてください。

またねん。