こけこっこー

がんばる

pandasでデータフレームから特徴量とターゲットの配列を切り出す

機械学習アルゴリズムにデータを入れていざ学習させよう、というときには当たり前ですが データフレームの形式のままでは無理です。 データフレームから特徴量とターゲット(正解)を配列として切り出してやる必要があります。

まずpandas.DataFrame で作られたデータフレーム df があるとします。 A, Bが特徴量でCがターゲットとしましょう。

   A  B  C
0  a  b  c
1  a  b  c
2  a  b  c

特徴量を切り出すには以下のようにします。

features = df.ix[:, 'A':'B']
X = features.values

pandas.DataFrame.ix を使うと行と列を指定してデータを切り出す事ができます。 行・列番号または行・列ラベルで切る取る対象を指定可能です。

以下の記事が詳しかったです。 記事にある通り、lociloc で指定する方法もあります。

ailaby.com

次に、pandas.DataFrame.values を使うとデータフレームからラベルを除いたデータだけの配列を取得することができます。 つまり、X は以下のようになります。

[['a' 'b']
 ['a' 'b']
 ['a' 'b']]

この調子でターゲットも切り出しましょう。

y = df['C'].values

以下のようになります。

['c' 'c' 'c']

ちなみに特徴量 X が大文字なのは行列だから、 y が小文字なのはベクトルだから、慣習的にこのように書くようです。