Python 计算熊猫每天看到的新ID的数量
鉴于以下数据,其中用户每天都很活跃,我想使用Pandas计算每天新用户的数量Python 计算熊猫每天看到的新ID的数量,python,pandas,Python,Pandas,鉴于以下数据,其中用户每天都很活跃,我想使用Pandas计算每天新用户的数量 Data: Day | UserID ---------- 1 | A 1 | B 1 | C 1 | C ---------- 2 | A 2 | B 2 | D 2 | A 2 | E ---------- 3 | B 3 | D 3 | F Result:
Data:
Day | UserID
----------
1 | A
1 | B
1 | C
1 | C
----------
2 | A
2 | B
2 | D
2 | A
2 | E
----------
3 | B
3 | D
3 | F
Result:
Day | New Users
---------------
1 | 3
2 | 2
3 | 1
在我看来,步骤如下:
是否有一种干净的方法来实现这一点?此构建为一个表,给出每个ID第一次出现的日期,按天分组,然后统计相应的行
df = pd.DataFrame([(1, "A"), (1, "B"),
(1, "C"), (1, "C"),
(2, "A"), (2, "B"),
(2, "D"), (2, "A"),
(2, "E"), (3, "B"),
(3, "D"), (3, "F")],
columns=["day", "userid"])
(df
.sort_values('day')
.groupby('userid')
.first()
.rename(columns={"day": "first_seen"})
.groupby('first_seen').size()
)
假设数据帧首先按
天
排序,您可以在用户ID
上分组(将设置为_index=False
),然后将结果的索引设置为天
。这将为您每天提供每个新用户
df2 = df.groupby('UserID', as_index=False).Day.first().set_index('Day')
>>> df2
UserID
Day
1 A
1 B
1 C
2 D
2 E
3 F
然后获取新用户的总数:
>>> df2.groupby(level=0).UserID.count()
Day
1 3
2 2
3 1
Name: UserID, dtype: int64