すごいひまつぶし

メモ書き用

pandasのgroupbyで指定したカラムごとの累積を作成してみた

こんにちは!
えねこのきつねです!

今回、特定の値毎に累積を詰めないかな?ということで作成してみました。

以下がpythonのソースとなります。


import numpy as np
import pandas as pd
import random 

np.random.seed(1)  # seedを1で固定
pd.set_option('display.max_rows', None) # すべての行を表示

tekitou_df = pd.DataFrame()
tekitou_df["column1"] = [int(i%10)+1 for i in range(100)]
tekitou_df["number"] = np.random.choice([0, 1], size=100)
# すべて1、0で置いたケースを作成 (確認用)
tekitou_df.loc[tekitou_df["column1"] == 1, "number"] = 1
tekitou_df.loc[tekitou_df["column1"] == 10, "number"] = 0 
# column1行の、数値の種類ごとにカウント
tekitou_df['column1_cumcount'] = tekitou_df.groupby(['column1']).cumcount() + 1
# number_cumcount
tekitou_df['number_cumsum_by_column1'] = tekitou_df.groupby(['column1'])['number'].cumsum()
tekitou_df.sort_values(["column1", "column1_cumcount"])

 

column1_cumcountでcolumn1の出現?回数を累積し、

number_cumsum_by_column1では、column1毎のnumberを累積しています。

 

イメージ図

以上、復習用でした!