【超基礎編】データをpythonのpanndasで分析する(データの前処理)

スポンサーリンク
Python




前回はpandasでcvsファイルを読み込みました。

【超基礎編】データをpythonのpanndasで分析する(データの読み込みまで)
データ分析や機械学習をするためには、自身のデータの管理や保存方法から、Pyhtonで分析するためのデータの読み込みが必要です。 始めてPyhtonを使う方にとっては、これらのことも結構難しく感じると思います。わたし...

そのデータを使って、簡単なデータの前処理を行ってきましょう。

前処理とは、データ分析するためにデータの形や数値を整えることです。

具体的なコードと、その出力をみていきましょう。前処理はデータ分析の目的によって、さまざまな方法があります。今回は、使うことが多い前処理を解説していきます。csvファイルを同じように作って、コードをコピーして自分でも確認してみて下さい

環境構築は、

【2021年最新】WindowsでAnacondaをインストールする方法、初心者がPythonの環境を構築する
Pythonの環境構築におすすめなのが、「anaconda」です。anacondaのなかにある、Jupyter Labはデータ解析や機械学習に非常に相性がいいです。理由は、コードを実行すると結果を返してくれます。その結果をみて、新たなコード
M1 mac でanacondaをインストールし、Pythonを動作確認
M1 mac miniを購入したので、anacondaのインストールし、Pythonの動作を確認しました。 以前はWindowsでのanacondaのインストール方法を提示しました。 macでのイ...

それは、やっていきましょう。

データの読み込み

import pandas as pd

df = pd.read_csv('goods.csv',encoding='SHIFT-JIS')
df

出力:

列の削除

データフレームにある ‘id’ という名前の列は、データの順番なので、分析に必要のない情報です。

必要のないデータは削除します。

df = df.drop(['id'],axis=1)
df

drop は削除するためのコードです。何を削除するかは、[‘id’] で指定します。

さらに、axis=1 とすることで、列を指定しています。

出力:

id が削除されていますね。

データの形を確認する

データの列に liked があります。これは、グッズ好きかどうかを示しています(0:グッズ好きでない、1:グッズ好き)

つまり、0と1は数値というより、区別しているだけ、ということです。

なので、小数点があり数値のデータでは、正しくないことになります。

どうするかというと、データのタイプを変更します。

df.liked = df.liked.astype('object')
df

出力:

次は、数値データ(今回は price )の基本統計量を確認します。

df.describe()

出力:

たった一行のコードで、基本統計量を出力してくれます。

欠損値を確認する

次は、データに欠損があるかを確認してみましょう。

データフレーム上で、NaNと表示されていのが、欠損を表しています。

df.isnull().sum()

出力:

goodsに2つ
priceに2つ
likedに1つ、欠損があることを表しています。

欠損値に対処する

データの欠損は、データ分析しにくい場合があるので、欠損を削除してみましょう。

df_na = df.dropna()
df_na

dropnaで、欠損(na)を削除(drop)する、という意味のコードです。

出力:

NaN があった行が削除されました。

欠損値があるときの対処は、削除のみではありません。

欠損値の補完を行うときもあります。

補完とは、欠損値に適当な数値を入れるということです。

df.price = df.price.fillna(df.price.mean())
df

出力:

NaN に数値が入りました。入った数値の意味をみていきましょう。
コードは、df.price.mean() で、データフレーム(df)の列にある price の平均値(mean())を表します。
それを、データフレーム(df)の price の欠損値に入れ込む(fillna)
入れ込んだデータを、データフレーム(df)の price に反映させる(df.price = )ことを表しています。
では、price の平均値を確認してみましょう。

df.price.mean()

出力:
27500.0

priceの欠損値(NaN)に入った数値と同じですね。

欠損値(NaN)に平均値である 27500 が補完されたことが確認できました。

つぎに、文字列である goods の欠損値を補完してみましょう。

文字列の場合は、最も多い文字にすることが多いです。

最も多い数値(最頻値)は、mode() で出力されます。

試しに見てみましょう。

df.goods.mode()

出力:
0 マウス
dtype: object

マウス、と出力されましたが、その他の情報が、必要ありません。

なので、一番上の情報が知りたい場合は、一番上( [0] )をしてします。

df.goods.mode()[0]

出力:
‘マウス’

これで、必要な情報のみを得ることが出来ました。

ではこれを、欠損値に補完してみます。

df.goods=df.goods.fillna(df.goods.mode()[0])
df

出力:

無事、NaN に「マウス」が入っています。

最後に、liked にも最頻値を入れましょう。

df.liked = df.liked.fillna(df.liked.mode()[0])
df

出力:

補完できましたが、また小数点がついています。

mode() では、小数点がついてしまいます。

気持ちが悪いので、あらためて0か1の数値にしましょう。

df.liked = df.liked.astype('object')
df

出力:

これが最終形態です。すべてに数値が入りました。

今回は、簡単ですが、データの前処理として、きれいなデータにしていく方法を学びました。

まとめ(前処理)

  • 必要のないデータを削除する
  • データの形を確認する
  • 欠損値を確認する
  • 欠損値に対して処理する(削除 or 補完)





コメント

タイトルとURLをコピーしました