kharukaのブログ~お金と技術とキャリア~

Edu Fin~金融×教育~若いうちからお金について学ぶってだいじ!自分が学んだテクノロジーはみんなの財産!過去、今、将来の人生!についてのブログ

pandas~欠損値の扱い~(2018年4月4日更新)

前提条件

  • OS:Windows 10 64-bit, version 1607

  • Anaconda 4.4.0(Python 3.6 version 64-bit)インストール

  • NumPyのインストール

入門 Python 3

入門 Python 3

手順概要

1.コマンドプロンプトでIPython Notebookを起動します。

2.欠損値の扱い

手順

1. コマンドプロンプトでIPython Notebookを起動します。

ipython notebook

2. 欠損値の扱い

2.1. numpy、panadasとpandasからSeriesとDataFrameをインポートします。
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
2.2. 今回はnanをよく使うので、numpyからnanをインポートします。Seriesを作成します。
from numpy import nan
data=Series(['one','two',nan,'four'])
data

Out:

0     one
1     two
2     NaN
3    four
dtype: object
2.3. 値がnull(nan)かどうか調べます。
data.isnull()

Out:

0    False
1    False
2     True
3    False
dtype: bool

f:id:kharuka2016:20170815144258p:plain

2.4. null値を削除します。
data.dropna()

Out:

0     one
1     two
3    four
dtype: object
2.5. DataFrameを作成します。
dframe=DataFrame([[1,2,3],[nan,5,6],[7,nan,9],[nan,nan,nan]])
dframe

Out:

   0  1  2
0  1  2  3
1  NaN 5  6
2  7  NaN 9
3  NaN NaN NaN
2.6. null値がある行を削除します。
dframe.dropna()

Out:

   0  1  2
0  1  2  3

f:id:kharuka2016:20170815144304p:plain

2.7. 列の値がすべてnullの行の場合、行を削除するように指定できます。
dframe.dropna(how='all')

Out:

   0  1  2
0  1  2  3
1  NaN 5  6
2  7  NaN 9
2.8. null値がある列を削除するように指定できます。defaultではaxis=0となっており行を指定しています。
dframe.dropna(axis=1)

Out:

0
1
2
3
2.9. 新たにDataFrameを作成します。
dframe2=DataFrame([[1,2,3,nan],[2,nan,5,6],[nan,7,nan,9],[1,nan,nan,nan]])
dframe2

Out:

0 1  2  3  
0  1  2  3  NaN
1  2  NaN 5  6
2  NaN 7  NaN 9
3  1  NaN NaN NaN

f:id:kharuka2016:20170815144309p:plain

2.10. 列の値が2つ以上ない行がある場合、行を削除します。
dframe2.dropna(thresh=2)

Out:

   0  1  2  3
0  1  2  3  NaN
1  2  NaN 5  6
2  NaN 7  NaN 9
2.11. 列の値が3つ以上ない行がある場合、行を削除します。
dframe2.dropna(thresh=3)

Out:

   0  1  2  3
0  1  2  3  NaN
1  2  NaN 5  6

f:id:kharuka2016:20170815144314p:plain

2.12. nanを1に置き換えます。
dframe2.fillna(1)

Out:

   0  1  2  3
0  1  2  3  1
1  2  1  5  6
2  1  7  1  9
3  1  1  1  1

f:id:kharuka2016:20170815144320p:plain

2.13. 列ごとにnanを置き換える値を指定できます。
dframe2.fillna({0:0,1:1,2:2,3:3})

Out:

0 1  2  3  
0  1  2  3  3
1  2  1  5  6
2  0  7  2  9
3  1  1  2  3

f:id:kharuka2016:20170815144324p:plain

2.14. inplace=Trueを指定することで参照ではなく、参照元を置換します。
dframe2.fillna(0, inplace=True)
dframe2

Out:

   0  1  2  3
0  1  2  3  0
1  2  0  5  6
2  0  7  0  9
3  1  0  0  0

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

参考

  • udemy 実践Pythonデータサイエンス

www.udemy.com

Pythonスタートブック

Pythonスタートブック