python_analytics

主にpythonやライブラリーを使ったデータ解析、機械学習、統計学などについて書いていきます

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