以下は5行に制限する場合
pd.set_option('max_rows', 5)
列名date
のデータに日付(YYYY-MM-DD)がある場合。
df = pd.read_csv('sample_date.csv',
index_col='date', parse_dates=True)
日付形式の修正が必要なときはpd_to_datetime()
を使う。
以下は’YYYY年MM月DD日’の形式のデータを標準形式にする例。
df = pd.read_csv('sample_date.csv',
index_col='date', parse_dates=True,
date_parser=lambda x: pd.to_datetime(x, format='%Y年%m月%d日'))
)
print(df.isnull().sum(axis=0)) # 行ごとの場合 axis=1
各行に0以上の値がいくつあるか数える例
concrete["result"] = concrete.gt(0).sum(axis=1)
データフレームの行数は変えず,各行に,該当する特徴(〇〇州在住)から得られる新たな特徴量(〇〇州在住平均年収)を追加する。 データの集約には"max",“min”,“median”,“var”,“std”,“count"も使える。
customer["AverageIncome"] = (
customer.groupby("State") # for each state
["Income"] # select the income
.transform("mean") # and compute its mean
)
customer[["State", "Income", "AverageIncome"]].head(10)
上記のように訓練データセットで作った特徴量を検証セットに流し込むこともできる。
# Create splits
df_train = customer.sample(frac=0.5)
df_valid = customer.drop(df_train.index)
# Create the average claim amount by coverage type, on the training set
df_train["AverageClaim"] = df_train.groupby("Coverage")["ClaimAmount"].transform("mean")
# Merge the values into the validation set
df_valid = df_valid.merge(
df_train[["Coverage", "AverageClaim"]].drop_duplicates(),
on="Coverage",
how="left",
)
df_valid[["Coverage", "AverageClaim"]].head(10)
要素が文字列(object)である列の名前の抽出方法を2通り
object_cols = [col for col in df.columns if df[col].dtype == "object"]
cols_obj = train.select_dtypes('object').columns
float
かint
のいずれか列を抽出。
cols_num = train.select_dtypes(include=['float','int']).columns
該当列のインデックス(0,1,..)を知りたいとき場合
cols_num = train.columns.get_indexer(train.select_dtypes(include=['float','int']).columns)
データフレーム"members"の列email
を’@‘マークを区切り文字として2列に分割する例
df[["ID", "domain"]] = ( # 分割結果を格納する
members["email"] # 列`email`を分割
.str # 文字列に対する演算をする
.split("@", expand=True) # 空白で分割して複数列にする
)
列名と,その列にある異なる文字列要素の数を辞書に格納する。 ついでに,出現頻度でソートする。
object_cols = [col for col in df.columns if df[col].dtype == "object"]
object_nunique = list(map(lambda col: df[col].nunique(), object_cols))
d = dict(zip(object_cols, object_nunique))
sorted(d.items(), key=lambda x: x[1])
df_B
の各列(type object)の要素が df_A
のsubsetか確認object_cols = [col for col in df_A.columns if df_A[col].dtype == "object"]
gool_cols = [col for col in object_cols if
set(df_B[col]).issubset(set(df_A[col]))]
bad_cols = list(set(object_cols)-set(good_label_cols)) # some object is found only in df_B
print('all elements in df_B is subset of df_A:', common_cols)
print('\n some elements only in df_B`, bad_cols)