たなブログ 人生リア充化を目指すブログ(`・ω・´)

【Python Coding】pandasでカラム(列)を追加する方法を解説【特徴量との関係を理解する】

Pythonを学ぶ

こんにちは、たなです。

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

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

本記事の内容

  • pandasを使ってカラム(列)を追加する方法
  • pandasのデータフレームにカラム(列)を追加する必要性や活用法

僕のブログでは【完全ガイド】pythonの学習サイトをレベル別に紹介!【基礎から機械学習・人工知能までのロードマップ】という記事も公開しています。より高みを目指したい人は参考にしてみてください。

pythonの学習ロードマップへ

pandasでデータフレームにカラム(列)を追加する方法とその必要性


データフレームを扱う場合、pandasでカラムを追加する頻度はかなり高いです。
汎用性も高く、応用が利く方法となるので基礎から学んでマスターしましょう。

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

import pandas as pd

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

利用データの確認

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

今回使うDataFrameのイメージ


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

そしてここでは以下2つのカラム(列)を追加していきます。

  • life_total:生活費の合計金額を意味するカラム
  • life_total_per_day:1日あたりの平均支出額を意味するカラム

追加した後の最終的なイメージは以下のようになります。

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


この操作を実現していきましょう。

利用データの作成


上記で紹介した内容と同じデータフレームを作成していきます。
データフレームの作り方がわからない方は【Python Coding】pandasでデータフレームを作成する方法を見ておいてくださいね。

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

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

これで先ほど紹介した内容と同じデータフレームが作成出来ました。
このデータフレームをベースにカラム(列)を追加する「2つの方法」を紹介します。

その①:df[列]を使ってカラムを追加する

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

では早速「life_total」のカラム(列)を追加してみます。

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

続いて「life_total_per_day」のカラム(列)を追加していきます。

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

これだけです。
追加したいカラム名や列名を追加するだけなので、シンプルでわかりやすいですね。

その②:assignを使ってカラム(列)を追加する

もう一つ、データフレームにカラム(列)を追加する方法を紹介しておきます。

それはdf.assign(列名=値)を使う方法です。

実際に使ってみた方がイメージしやすいので、以下2つの方法を試してみます。

  • 方法①:数値(1)を持った”test”という列を追加する
  • 方法②:文字列(loading)を持った”test”という列を追加する

最初にデータフレームを初期化しています。

DataFrameを初期化


方法①(数値1を持った”test”という列を追加)を試してみます。

assignの使い方(数値の場合)


続いては方法②(文字列loadingを持った”test”という列を追加)。

assignの使い方(文字列の場合)


どちらも「列名 = 値 / 文字列」がデータフレームに追加されているのがわかるかと思います。

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

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


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

dfの内容を確認|先ほどの結果が反映されていない


すると、データフレームに追加した内容が反映されていないことがわかります。df.assign()は新しいオブジェクトを返してくれるので、内容を保存しておきたい時は以下のように変数に格納しておきましょう。

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


続いて「life_total_per_day」を追加していきます。

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


assignを使っても同じ結果が得られましたね。
以上がデータフレームにカラム(列)を追加する方法でした。

どちらの方法も使えるようにしておくと便利ですよ。

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

最後に「なぜデータフレームにカラム(列)を追加する必要があるのか?」について考察しておきたいと思います。

「追加したいから追加するんだよ」って感じかもしれませんが、そもそもなぜ追加することが多いのかを整理しておきます。

結論から言えば、特徴量を設計してより良いモデルを構築するためにカラムの追加は必須なのだと思います。

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

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

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

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

まとめ:良いモデル構築のためにもデータフレームにカラム(列)を追加する方法は知っておきたい


本記事をまとめます。

  • データフレームのカラム(列)は特徴量として意味を持つ
  • データフレームにカラム(列)を追加する方法は主に2つ
  • 1つ目は”df[列名]”を使う方法
  • 2つ目は”df.assign()”を使う方法
  • 機械学習などのモデル構築ケースでは必須の知識

こんな感じですね。

機械学習や深層学習を扱う現場にいくと、よりレベルの高いモデルの構築が求められます。今回紹介したようなカラム(列)の追加は必要不可欠な方法となるので、ぜひ理解を深めてみてください。

冒頭でも紹介しましたが、pythonの学習方法を【完全ガイド】pythonの学習サイトをレベル別に紹介!【基礎から機械学習・人工知能までのロードマップ】でまとめています。良ければあわせて読んでみてください。

すてきなpythonライフを。