Edited at

前処理の時によく使うPythonメソッド(随時更新)

More than 1 year has passed since last update.

自分用メモ


データ読み込み


フォルダ内にあるcsvファイルの一覧を取得

ファイル名のみ取得したい場合

import os

path = "ディレクトリパス"
csv_files = [f for f in os.listdir(path) if f.endswith(".csv")]
csv_files

[a.csv,

b.csv,
c.csv]

絶対パスを取得したい場合

import glob

files = glob.glob("ディレクトリパス/*.csv")

[ディレクトリパス/a.csv,ディレクトリパス/b.csv,ディレクトリパス/c.csv]


pd.read_csvでエラーが出た時の対処法


FileNotFoundError

ディレクトリ変更されてない

os.chdir("\データのあるディレクトリ")

でディレクトリを指定する。


UnicodeDecodeError

文字コードが違う

df_train = pd.read_csv("train.csv" , encoding="shift-jis")

Shift_JISx0213じゃないとダメなときもある


探索的データ解析(EDA)


データ概要を見るためのメソッド

df.head()

df.tail()
df.info()
df.describe()
df.dtypes


列のタイプをカウントする

df.dtypes.value_counts()

float64 65

int64 41

object 16

dtype: int64


オブジェクトタイプ列の値の種類(カテゴリカル変数の特定)

df.select_dtypes('object').apply(pd.Series.nunique,axis=0)

性別 3

国 199

言語 132


データの抽出

df = df[df["合計"]!=0]


グループごとの平均をみる

df.groupby("種別")["合計"].mean()


前処理データ加工(Preprocessing)


列のドロップ

df=df.drop("Unnamed: 0",axis=1)


インデックスのセット

df = df.set_index("合計")


文字列を数値リテラルに変換

df['Amount'] = pd.to_numeric(df['Amount']) 


値の置き換え

df = df.replace('↓','0')


datetime型変換

df['time'] = pd.to_datetime(df['time'])


特定列の値取得(重複なし)

resion_list = list(set(df['地域名']))


トレーニング、テストデータどちらにもある列のみ残す

df_train,df_test = df_train.align(df_test,join='inner',axis = 1)


欠損値の処理


欠損値の確認

df.isnull().sum()


null値に0を代入

df = df.fillna(0)


null値がある行を削除

df.dropna()