自分用メモ
データ読み込み
フォルダ内にある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()