雑多なメモになりますが、
自分用データ分析する際に使用する時にそこそこ使うやつ。
※随時更新
データ読込
import pandas as pd
// Excel
df = pd.read_excel("./sample.xlsx")
// CSV
df = pd.read_csv("./sample.csv")
データの形状確認
df.shape
(388, 12) // 388行、12列のデータ
欠損値の確認
df.isnull().sum()
データの中身にどういった値があるのか確認
for col in df.columns:
print(col + ':\n' + str(df[col].unique().tolist()) + '\n')
散布図
import matplotlib.pyplot as plt
pd.plotting.scatter_matrix(df_linear, figsize=(10,10))
plt.show()
いらない説明変数の削除(列を消す)
// 1列分消す
df = df.drop("hoge", axis=1)
// 複数列消す
drop_params = ["hoge", "fuga"]
df = df.drop(drop_params, axis=1)
欠損値を埋める
// nothingという文字列で欠損値を埋める
df["hoge"].fillna("nothing", inplace=True)
// 複数行は上記のいらない変数を複数消した方法と同じように配列を渡すことで実現可能
// 平均値で欠損値を埋める
df["temp"] =.fillna(df["temp"].mean(), inplace=True)
名寄せする
encode_rules = {
"female": "female",
"Female": "female",
"FEMALE": "female"
}
df["sex"] = df["sex"].map(encode_rule)
ダミー変数化する
dummy_params = [
"sex",
"type",
]
df = pd.concat([df, pd.get_dummies(df[dummy_params])], axis=1)
値があれば1,なければ0としてフラグ変数を作る
df["hoge_flag"] = df["hoge"].map(lambda x:1 if not pd.isnull(x) else 0)
2変数間の差をとり、新しい変数を作る
df["temp_diff"] = df["temp_inside"] - df["temp_outside"]
列の並び順を変える
// 説明変数が量的変数と質的変数が混在している場合に標準化などを行うために量的変数だけ列の前半にまとめたいときなどに使用
df = df.ix[:, [0,2,1]]
標準化する
// トレーニングデータとテストデータに分ける
X_train, X_test, y_train, y_test = train_test_split(X.values, y.values, test_size=test_size, random_state=1234)
// 標準化
stdsc = StandardScaler()
# trainの量的変数だけ標準化
std_idx = 4
X_train_std = stdsc.fit_transform(X_train[:,:std_idx])
# trainの質的変数をがっちゃんこ
X_train = np.insert(X_train_std, [std_idx], X_train[:,std_idx:], axis=1)
# testの量的変数だけ標準化
X_test_std = stdsc.transform(X_test[:, :std_idx])
# testの質的変数をがっちゃんこ
X_test = np.insert(X_test_std, [std_idx], X_test[:,std_idx:], axis=1)