#機械学習のお勉強〜Pandas編〜
前回に引き続き今度はPandasについて学習したのでアウトプットとして投稿します。
##1.Pandasって?
PandasとはNumpyと同様にデータの整形を行ったり、
可視化や前処理にも活躍する外部ライブラリ
こちらもNumpyと同様、Anacondaには最初からインストールされています。
##2.インポート文
import pandas as pd
pandasを使う際にいちいちライブラリ名を書くのは手間なのでpdで呼び出せるようにしましょう。
##3.どんな時に使うの?
1.データの整理
2.データの可視化
3.データの前処理
どれも機械学習において重要な要素です。
##4.主な関数
###DataFrame関数
その名の通りデータフレームを作成する関数です。
#自作ver
test = pd.DataFrame({'culumn1':[1,2,3,4],
'culumn2':[3,4,5,6]})
#既存のデータを入れる場合
data = pd.read_csv('csvファイルパス')
DataFrameの引数は辞書型です。
read_csv関数は引数にCSVファイルを取ってあげるとCSVファイルを読み取ってデータフレームを作成してくれます。
###データフレームの確認
データフレームの確認は以下の関数で行えます。
#概要の確認
test.info()
#先頭から3列のデータを確認
test.head(3)
#末尾から3列のデータを確認
test.tail(3)
#全ての列を確認
test.columns
#全てのインデックスの確認
test.index
headとtailの引数の列数のデータを表示してくれます。
引数を記載しない場合、デフォルトとして5列表示します。
###列の削除と追加
#列の追加
test['column3'] = [5,6,7,8]
#列の削除
test = test.drop(culumns='culumn3')
列の追加は列に存在しないカラム名を指定して、そのカラムにデータを入れる。
削除する際はdrop関数を用いてカラム名を指定する。
###データの参照
#データがわかりにくいのでインデックスに名前をつける
test.index = ['test1','test2','test3','test4']
#特定のデータを抽出する
test.loc['test1','culumn1']
#特定の列を取得
test.loc['colums1','columns2']
作成したデータフレームインデックスを作成していないとわかりにくいためインデックスを付与。
インデックス名と列名を指定することでそれに対応した値を取得。
列名のみの指定も可能で、その列全体を取得してくれます。
##欠損値処理
機械学習では重要度の比率が高め
#nanを使うためにnumpyをインポート
import numpy as np
#欠損のあるデータを作成
test = pd.DataFrame({'column1':[1,2,np.nan,4],
'column2':[5,np.nan,7,np.nan]})
#データフレームの表示
print(test)
#欠損の有無を調べる
test.isnull().sum()
欠損データはNaNと表示されます。
isnull関数は欠損のあるデータを確認することができ、欠損のあるデータが1として出力されます。
欠損があるとグラフにした時とんでもないことになるので欠損への対処法を書きます。
#欠損のあるデータを削除する
test_dropna = test.dropna()
#欠損のあるデータを置き換える
test_fillna = test.fillna(test.mean())
dropna関数は、NaNのあるインデックスを全て削除します。
fillna関数は、NaNを他の何かに置き換えます。今回はtestデータの平均に置き換えました。
データは基本的に削除ではなくfillna関数で何かに置き換えることが大半だと思われます。(学習データが膨大で多少消しても問題ない限りは)
#5.まとめ
データの整理のめちゃくちゃ出来るなと感じました。
Numpyより出来ることが多くてびっくりしています。
Numpyの拡張的な存在なので当然といえば当然か、、、
Numpyは全ての基本なのでPandasも覚えつつNumpyもしっかり覚えましょう。
以上