連載
» 2018年02月13日 05時00分 公開

Pythonで始める機械学習入門(6):機械学習の前に重要なデータ抽出・加工に便利なPythonライブラリ「pandas」の基本的な使い方のチュートリアル (2/4)

[加藤公一,シルバーエッグ・テクノロジー]

データの抽出

1次元にデータが並んだ「Series」型

 次に、始値だけを抜き出してみましょう。次のようにします。

 同じようにデータの先頭部分を表示してみます。

 dow.head()を表示したときと表示形式が変わっていますが、実はデータ型が異なるのです。確認してみましょう。

 今度はSeries型というデータ型になっていることが分かります。DataFrame型が2次元的な広がりを持つ表であるのに対し、Seriesは1次元にデータが並んだものです。DataFrameは各行にインデックスが付与されていますが、Seriesも同様に各要素にインデックスが付与されています。上記で見たように、DataFrameから1列を抽出するとSeries型になります。

DataFrame型から複数の列を取り出す

 []の中にリストを入れることでDataFrameから複数の列を取り出すこともできます。その場合、戻り値の型はDataFrameになります。

条件による行の抽出

 次に、条件による行の抽出を行ってみましょう。連第4回で紹介したNumPyのブロードキャスティングとインデクシングの組み合わせと同様にできます。

 次の例では高値が2万4000ドルを超えている行を抽出します。

ラベルによる指定の「loc」メソッドと位置による指定の「iloc」メソッド

 以降の説明のために簡単な人工データを用意します。

 「loc」メソッドを使って行と列を指定して次のような抽出もできます。

 この[]の中の3:5はインデックスが3〜5であることを意味し、["B", "C"]はB列とC列を意味します。このようにlocだとDataFrameに付与されたインデックスと列名で指定しますが、「iloc」メソッドを使って数値で指定することもできます。次がその例です。

 locのときの3:5はインデックスが3〜5だったのに対し、ilocでの3:5は3〜4になっていることに注意してください。ilocの仕様はリストや配列でのインデックス指定と同じになっています。このようにlocはラベルによる指定なのに対し、ilocは位置による指定になってます。

データの加工

 既存のDataFrameに対して何らかの計算を行ってデータを付加したいことがよくあります。試しに、C列とD列を足し算したものをE列として追加してみましょう。

 この足し算はNumPyのブロードキャスティングと同じです。このようにして列を増やすことができますが、同じような書き方で列を上書きすることもできます。例として、B列を2倍したものをA列に上書きしてみましょう。

1つのセルを書き換える「at」メソッドと「iat」メソッド

 1つのセルを書き換えるのには「at」や「iat」を使います。

 atはラベル指定版で、例えば次のように使います。

 1つのセルが-1に置き換わりました。位置を指定してセルを書き換えるにはiatを使います。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。