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

» 2018年02月13日 05時00分 公開
[加藤公一シルバーエッグ・テクノロジー]

欠損値の処理

 データ分析でよく問題になるのが欠損値の処理です。ここで以下の説明のためにわざと欠損値を入れてみます。

 F列にNoneを代入したはずなのですが、一覧を表示するとNaNとして表示されます。これはpandasでは、デフォルトでは欠損値は「NaN」として扱われることになっているからです。

欠損値を無視する「dropna」メソッド

 「欠損値を無視してデータを分析したい」ことがよくあると思いますが、それは「dropna」メソッドによって簡単にできます。

欠損値を特定の値で書き換える「fillna」メソッド

 また、欠損値を特定の値で書き換えたいこともあると思います。そういう場合は「fillna」メソッドを使います。ここでは欠損値に0を代入しました。

dropnaもfillnaも元のデータは変わっていない

 dropnaもfillnaも破壊的な操作ではない(もとのdfの値を書き換えない)ので注意が必要です。実際には戻り値を他の変数に入れて使うことが多いです。ここでdfの中身を表示すると元から変わっていないことが分かります。

集計演算

縦列のデータの平均値を求める「mean」メソッド、標準偏差を求める「std」メソッド

 次のように縦に集計することもできます。

 「mean」メソッドでは平均値を、「std」メソッドでは標準偏差を求めました。

任意の関数を適用する「apply」メソッド

 「apply」メソッドを使うと、任意の関数を適用することもできます。次の例では、各列について最大値と最小値の差を計算します。

グループ化

 次に、グループ化の例を示すために、さらに一列を追加します。

 これをG列の値をキーとしてグループ化し集計してみます。これはSQLの「GROUP BY」に相当します。

 ここでは、sum()で合計を計算していますが、他の集計も同様にできます。また、グループ化のキーはインデックスとして扱われています。

キーをインデックスとして扱いたくないときは、「as_index」フラグ

 キーをインデックスとして扱いたくないときは、「as_index」フラグを利用します。

 今度は平均値を計算しました。G列がインデックスではなく通常の列として扱われ、インデックスは別途連番が付与されています。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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