LoginSignup
13
17

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-07-22

自分用メモ

データ読み込み

フォルダ内にある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()
13
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
17