注目キーワード

【Python】pandasの列にmapを適用してデータを加工する

これまでもpandasのDataFrameに対するデータ処理を紹介してきました。こちらの記事では、pythonのlistの各要素に処理を行う関数であるmap()を参考に、DataFrameの列(Series)の各要素に処理を適用するデータ処理の方法を見てみます。

インストール

これまでのpandasの記事と同様に、pandasがインストールされていない場合にはインストールが必要です。インストールされていない場合には、pip install pandas を実行しておく必要があります。

サンプルデータ

以前、JSONをパースする例で使ったデータをCSVに直して、pandasから簡単に読み込める形にしたサンプルデータを利用します。

name,area,population北海道,83423,514.9青森,9676,120.4岩手,15279,122.9福島,13783,179.0秋田,11612,92.9山形,9323,104.1宮城,7285,227.9

mapを利用して列データに処理を行う

サンプルデータを読み込み、処理を行ってみます。ここではデータの人口(population)が万人単位になっているので、英語のカンマ(3桁ずつ)に合わせて百万人単位(million)で計算してみることにします。

サンプルソース

サンプルの実装です。

  • はじめにデータフレームを読み込みます。
  • 人口の列 df[“population”] を取得し、値を100で割ることで百万人単位の列を作成します。処理はlambda式で書いています。
  • 作成した列データに新しく「population[m]」という名前を付けました。
  • 新しく作成した列と元のデータをconcatで結合しました。

実行結果

実行結果を確認します。初めに百万人単位の列が計算でき、新しく作成したデータフレーム df_new に結合することができました。

mapを利用して列データを置換する

列データ(Series)に対するmapは、データ名を書き換えるためにも利用することができます。同様の処理はupdate()などを用いてできるのですが、場合によってはmap()が高速な場合があるようです。サンプルで使い方を確認してみます。

データ書き換えを行うサンプルソース

サンプルの実装です。

  • 都道府県名を短い記号に置き換える辞書dic を作成します。
  • 名前の列 df[“name”] に対して、dicを渡してデータを書き換えます。
  • 書き換えする際にキーが足りていない場合と足りている場合の動作を比較しています。

実行結果

実行結果を確認します。データの書き換えができることと、キーが足りていない場合にNaNが残ることを確認できました。

スポンサーリンク

列ごとに処理を行って新しい列を作ることは、よくあるデータフレームの操作の一つです。いろんなラムダ式を適用することができるので、是非使ってみてくださいね。