gpt4 book ai didi

python - 如何按日期对条目进行分组并计算百分比

转载 作者:太空宇宙 更新时间:2023-11-04 02:59:35 27 4
gpt4 key购买 nike

我有以下原始数据:

df = 

MONTH DAY ID GROUP
1 1 222 1
1 1 111 2
1 2 333 2
...
12 1 XXS 1

对于每个日期,我需要计算具有 Group 的条目的百分比等于 1 .结果应为以下格式的新数据框(日期应为 dd/mm/yy ):

date,percent
01/01/16,50
02/01/16,0
...

我试过了,但它没有给出预期的结果,因为我不知道如何从这一点开始。不确定如何通过 date到格式为 dd/mm/yy 的单列以及如何计算具有 GROUP == 1 的条目的百分比:

new_df = df.groupby(['MONTH', 'DAY']).agg(['count'])

更新:

print(df.types) 给出以下输出:

MONTH                    float64
DAY float64
GROUP float64
ID object
date datetime64[ns]

这是示例真实数据:

MONTH   DAY GROUP   ID  date
1.0 4.0 2.0 00085163 2016-01-04
1.0 4.0 1.0 000F9334 2016-01-04
1.0 4.0 2.0 002744A2 2016-01-04
1.0 4.0 2.0 00337BB1 2016-01-04
1.0 4.0 2.0 00374DE5 2016-01-04

最佳答案

更新:对于“float64”dtype 的GROUP

In [67]: df
Out[67]:
MONTH DAY GROUP ID
0 1.0 4.0 2.0 00085163
1 1.0 4.0 1.0 000F9334
2 1.0 4.0 2.0 002744A2
3 1.0 4.0 2.0 00337BB1
4 1.0 4.0 2.0 00374DE5

In [68]: (df.assign(date=pd.to_datetime(df.assign(YEAR=pd.datetime.now().year)
...: .loc[:, ['YEAR','MONTH','DAY']])
...: .dt.strftime('%d/%m/%y'))
...: .groupby('date', as_index=0)['GROUP']
...: .agg({'percent':lambda x: len(np.where(np.isclose(x,1))[0])/x.count()*100})
...: )
...:
Out[68]:
date percent
0 04/01/16 20.0

整数 GROUP 列的旧答案:

In [40]: df.groupby(['MONTH', 'DAY'], as_index=0)['GROUP'].agg({'percent':lambda x: len(x[x==1])/x.count()*100})
Out[40]:
MONTH DAY percent
0 1 1 50
1 1 2 0
2 12 1 100

如果您需要将日期作为单列:

In [50]: df['date'] = pd.to_datetime(df.assign(YEAR=pd.datetime.now().year).loc[:, ['YEAR','MONTH','DAY']]).dt.strftime('%d/%m/%y')

In [51]: df
Out[51]:
MONTH DAY ID GROUP date
0 1 1 222 1 01/01/16
1 1 1 111 2 01/01/16
2 1 2 333 2 02/01/16
3 12 1 444 1 01/12/16

In [52]: df.groupby('date', as_index=0)['GROUP'].agg({'percent':lambda x: len(x[x==1])/x.count()*100})
Out[52]:
date percent
0 01/01/16 50
1 01/12/16 100
2 02/01/16 0

关于python - 如何按日期对条目进行分组并计算百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41346471/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com