python pandas 集計処理(ダミー変数)
pandas 集計処理(get_dummies関数)について
■astype関数とcategory変換について カテゴリ型は、数値型に次いでよく使う型。pythonではastype関数はデータ型を変換する関数。
import numpy as np import pandas as pd
index | ID | 日 | 時 | セッション | 閲覧時間 |
---|---|---|---|---|---|
0 | 328667572 | 31 | 16 | 38 | 5 |
1 | 70373573 | 24 | 23 | 37 | 7 |
2 | 1839656582 | 12 | 20 | 28 | 6 |
4 | 1471882803 | 10 | 22 | 22 | 7 |
5 | 302325623 | 20 | 8 | 22 | 2 |
↓"時"をカテゴリ型に変更し、"timecatt"カラムを追加。
sample["timecatt"]=(sample["時"].astype("category"))
↓インデックスデータ確認方法。
sample["timecatt"].cat.codes
↓マスターデータ確認方法。
sample["timecatt"].cat.categories
■ダミー変数について カテゴリ値をフラグの集合値に変換すること。そのような変数をダミー変数化と呼び、 生成したフラグをダミー変数と呼ぶ。
■get_dummies関数でやること① get_dummies関数は引数のカテゴリ型をダミー変数化する関数。drop_first引数をTrueにすると最初のdummyフラグを 落として、フラグ数を1つ減らす。
↓timcattをダミー変数化
dummy=pd.get_dummies(sample["timecatt"],drop_first=False)
↓マスターデータに朝、昼、昼過ぎ、夕方、夜を追加
sample["timecatt"].cat.add_categories(["朝"],inplace=True) sample["timecatt"].cat.add_categories(["昼"],inplace=True) sample["timecatt"].cat.add_categories(["昼過ぎ"],inplace=True) sample["timecatt"].cat.add_categories(["夕方"],inplace=True) sample["timecatt"].cat.add_categories(["夜"],inplace=True)
↓集約するデータの書き換え、isin関数を使用 1~6の場合は朝、7~12の場合は昼、13~18の場合は昼過ぎ、19~24の場合は夜
sample.loc[sample["timecatt"].isin([1,2,3,4,5,6]),"timecatt"]="朝" sample.loc[sample["timecatt"].isin([7,8,9,10,11,12]),"timecatt"]="昼" sample.loc[sample["timecatt"].isin([13,14,15,16,17,18]),"timecatt"]="昼過ぎ" sample.loc[sample["timecatt"].isin([19,20,21,22,23,24]),"timecatt"]="夜"
index | ID | 日 | 時 | セッション | 閲覧時間 | rank | timecatt |
---|---|---|---|---|---|---|---|
0 | 328667572 | 31 | 16 | 38 | 5 | 9 | 昼過ぎ |
1 | 70373573 | 24 | 23 | 37 | 7 | 10 | 夜 |
2 | 1839656582 | 12 | 20 | 28 | 6 | 3 | 夜 |
4 | 1471882803 | 10 | 22 | 22 | 7 | 10 | 夜 |
5 | 302325623 | 20 | 8 | 22 | 2 | 3 | 昼 |
↓timecattと日を連結してカラムcate_dayを追加。
sample["cate_day"]=pd.Categorical(sample[["timecatt","日"]].apply(lambda x:"{}_{}".format(x[0],x[1]),axis=1))
index | ID | 日 | 時 | セッション | 閲覧時間 | rank | timecatt | cate_day |
---|---|---|---|---|---|---|---|---|
0 | 328667572 | 31 | 16 | 38 | 5 | 9 | 昼過ぎ | 昼過ぎ_30 |
1 | 70373573 | 24 | 23 | 37 | 7 | 10 | 夜 | 夜_20 |
2 | 1839656582 | 12 | 20 | 28 | 6 | 3 | 夜 | 夜_10 |
4 | 1471882803 | 10 | 22 | 22 | 7 | 10 | 夜 | 夜_10 |
5 | 302325623 | 20 | 8 | 22 | 2 | 3 | 昼 | 昼_20 |