どん底から這い上がるまでの記録

どん底から這い上がりたいけど這い上がれない人がいろいろ書くブログ(主にプログラミング)

pandas

スポンサーリンク


インポート

import pandas as pd

csvファイルを読み込んでDataFrameにする。

df = pd.read_csv(filepath)

欠損値の削除

DataFrame.dropna(axis=0, how="any", thresh=None, subset=None, inplace=False)

import numpy as np


# Toy dataset
df = pd.DataFrame([[np.nan, 2, np.nan, 0],
                   [3, 4, np.nan, 1],
                   [np.nan, np.nan, np.nan, 5]],
                   columns=list('ABCD'))

DataFrameの中身

     A    B   C  D
0  NaN  2.0 NaN  0
1  3.0  4.0 NaN  1
2  NaN  NaN NaN  5

欠損値を含む列を取り除く

df = df.dropna(axis=1)
   D
0  0
1  1
2  5

値が全て欠損値の列を取り除く

df = df.dropna(axis=1, how="all")
     A    B  D
0  NaN  2.0  0
1  3.0  4.0  1
2  NaN  NaN  5

欠損値を含む行を取り除く

df = df.dropna()
Empty DataFrame
Columns: [A, B, C, D]
Index: []

DataFrameに欠損値があるか確認する

df.isnull().any()

DataFrameをcsvファイルに書き込む

df.to_csv(filepath, index=False)

正規化

# Toy dataset
df = pd.DataFrame([[0, 20, 13, 0.1],
                   [3, 40, 12, 1.2],
                   [2, 22, 17, 0.5]],
                   columns=list('ABCD'))

min max normalization

df = (df-df.min()) / (df.max()-df.min())
          A    B    C         D
0  0.000000  0.0  0.2  0.000000
1  1.000000  1.0  0.0  1.000000
2  0.666667  0.1  1.0  0.363636

列を指定して正規化する

df["C"] = (df["C"]-df["C"].min()) / (df["C"].max()-df["C"].min())

mean normalization

df = (df-df.mean()) / df.std()
          A         B         C         D
0 -1.091089 -0.665750 -0.377964 -0.898027
1  0.872872  1.149932 -0.755929  1.077632
2  0.218218 -0.484182  1.133893 -0.179605

列を指定して正規化する

df["C"] = (df["C"]-df["C"].mean()) / df["C"].std()

複数の列を指定して正規化

CとDの列をmin max normalizationする。

columns = ["C", "D"]
df[columns] = df[columns].apply(lambda x: (x-x.min()) / (x.max()-x.min()))
   A   B    C         D
0  0  20  0.2  0.000000
1  3  40  0.0  1.000000
2  2  22  1.0  0.363636