Python・Pandasのget_dummies()でDataFrameをバイナリデータに変換する方法
機械学習やデータ分析では、文字列などのカテゴリカルデータをそのまま扱えないケースが多くあります。そんなときに便利なのが、Pandasのget_dummies()メソッドです。このメソッドを使うと、カテゴリごとの列に分割された0と1のバイナリデータ(ダミー変数)へ簡単に変換できます。
ここでは、次のような「Student」と「Result」の2列を持つPandas DataFrameを例に説明します。
import pandas as pd
dataFrame = pd.DataFrame(
{
"Student": ['Jack', 'Robin', 'Ted', 'Scarlett', 'Kat'],
"Result": ['Pass', 'Fail', 'Fail', 'Pass', 'Pass']
}
)get_dummies()で特定の列をバイナリ化する
get_dummies()を呼び出す際に、バイナリ形式へ変換したい列を指定します。この例では、「Result」列の値を「Pass」「Fail」それぞれの列として展開したいので、次のように記述します。
dfBinary = pd.get_dummies(dataFrame["Result"])
完全なサンプルコード
以下が全体のコードです。
import pandas as pd
# DataFrameを作成
dataFrame = pd.DataFrame(
{
"Student": ['Jack', 'Robin', 'Ted', 'Scarlett', 'Kat'],
"Result": ['Pass', 'Fail', 'Fail', 'Pass', 'Pass']
}
)
print("DataFrame ...\n", dataFrame)
# バイナリデータへ変換
dfBinary = pd.get_dummies(dataFrame["Result"])
print("\nバイナリ形式のDataFrame ...\n", dfBinary)実行結果
上記のコードを実行すると、次のような出力が得られます。
DataFrame ...
Result Student
0 Pass Jack
1 Fail Robin
2 Fail Ted
3 Pass Scarlett
4 Pass Kat
バイナリ形式のDataFrame ...
Fail Pass
0 0 1
1 1 0
2 1 0
3 0 1
4 0 1ポイントまとめ
pd.get_dummies(対象の列)を呼び出すだけで、カテゴリ名がそのまま列名になったダミー変数表現が得られます。- 元の値が「Pass」なら Pass 列が 1、「Fail」なら Fail 列が 1 になります。
- 複数の列を一度に変換したい場合は
pd.get_dummies(dataFrame)のようにDataFrame全体を渡すことも可能です。 - ダミー変数トラップ(多重共線性)を避けたい場合は、引数に
drop_first=Trueを指定すると最初のカテゴリ列を削除できます。
-
Python Pandas - Period(期間)を任意の頻度に変換する方法
PandasのPeriodオブジェクトを任意の頻度に変換するには、period.asfreq()メソッドを使用します。この記事では、H(Hourly:時間単位)の指定子を使って、Periodを時間単位の頻度に変換する手順を解説します。必要なライブラリのインポートまず、必要なライブラリをインポートします。import pandas as pdpandas.Periodは、一定の期間(時点の範囲)を表すオブジェクトです。ここでは、2つのPeriodオブジェクトを作成してみましょう。period1 = pd.Period("2020-09-23 03:15:40") period
-
Python PandasでDataFrameの複数のデータ列をプロットする方法
PythonのPandasライブラリを使えば、DataFrameに含まれる複数のデータ列を簡単に可視化できます。本記事では、plot()メソッドを使用し、kindパラメータをbarに設定することで、複数の列を1つの棒グラフとして描画する方法を解説します。必要なライブラリのインポートまず、PandasとMatplotlibという2つの必須ライブラリをインポートします。Pandasはデータ操作を、Matplotlibはグラフの表示を担当します。import pandas as pd import matplotlib.pyplot as mpサンプルデータの準備ここでは、各チームのランキングポイン