gpt4 book ai didi

python - 计算列中出现的频率

转载 作者:太空宇宙 更新时间:2023-11-03 20:17:40 25 4
gpt4 key购买 nike

我正在尝试计算包含日期时间列('%Y-%m-%d %H:%M:%S')的数据框中的值出现次数。

数据:

Date                        Employee        Operation        Order

2001-01-01 08:32:17 User1 Approved #00045
2001-01-01 08:36:23 User1 Edited #00045
2001-01-01 08:41:04 User1 Rejected #00046
2001-01-01 08:42:56 User1 Deleted #00046
2001-01-02 09:01:11 User1 Created #00047
...
2019-10-03 17:23:45 User1 Approved #72681

我遇到的问题与计算每天特定操作的发生次数有关。更准确地说,我正在尝试构建一个图表,该图表将显示 User1 如何处理他/她的订单的趋势,例如能够显示 User1 在 2005 年有大量拒绝/删除操作,在 2019 年有大量批准/完成操作。目的是学习如何解析大数据 block 。

我已阅读 this answer ,这与我的问题有点相关。然而,问题是这个问题中使用的 df 仅包含 2 列。我的 df 包含 4 列。这是否意味着我需要首先创建一个新的 df (pseudo: df1 = df['Date'] + df['Operation']) ,其中仅包含 2 个特定列,或者还有其他方法吗这样做吗?

最佳答案

我认为最好根据日期、用户和操作创建组。为此,您可以使用 groupby + dt.date 。然后您可以使用 groupby.count 来计算每个组的出现次数。 。您可以使用unstack生成一个数据框,如下所示:

#df=df.reset_index() #only if date is the index
#df['Date']=pd.to_datetime(df['Date']) # If Date not is datetime
new_df=df.groupby([df['Date'].dt.date,'Employee','Operation'])['Operation'].count().unstack(fill_value=0)
print(new_df)
<小时/>
Operation            Approved  Created  Deleted  Edited  Rejected
Date Employee
2001-01-01 User1 1 0 1 1 1
2001-01-02 User1 0 1 0 0 0

您也可以使用dt.year而不是按天分组:

new_df=df.groupby([df['Date'].dt.year,'Employee','Operation'])['Operation'].count().unstack(fill_value=0)
print(new_df)
Operation Approved Created Deleted Edited Rejected
Date Employee
2001 User1 1 1 1 1 1

或按年份和 month :

new_df=df.groupby([df['Date'].dt.year,df['Date'].dt.month,'Employee','Operation'])['Operation'].count().unstack(fill_value=0)
print(new_df)
Operation Approved Created Deleted Edited Rejected
Date Date Employee
2001 1 User1 1 1 1 1 1
<小时/>

详细信息

1。示例的 DataFrame:

df

Date Employee Operation Order
0 2001-01-01 08:32:17 User1 Approved #00045
1 2001-01-01 08:36:23 User1 Edited #00045
2 2001-01-01 08:41:04 User1 Rejected #00046
3 2001-01-01 08:42:56 User1 Deleted #00046
4 2001-01-02 09:01:11 User1 Created #00047
  • 如果 Date 不是列,您应该使用 df=df.reset_index()。要将日期转换为日期时间,请使用 df['Date']=pd.to_datetime(df['date'])
  • 关于python - 计算列中出现的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58354447/

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