如何过滤数据框并根据 pandas 数据框中的另一列获取记录总数?

How to filter dataframe and get the total number of records based on another column in pandas dataframe?

我收集了 jira 数据并将其写入一个 csv 文件,其中我收集的数据框有 Ticket_NoRequest TypeAssignee NameStatus 作为列。我想要实现的是计算 In ProgressOpenClosed 门票的数量,以便在 x 轴上带有 Assignees 的绘图条形图中将其可视化,并且Status 在 y 轴上。可能吗?下面是示例数据集。 plotly 没有为我给出的 x 和 y 轴绘制任何东西(很明显)。

N;Issue key;Request Type;Assignee name;Status
0;JIRA_1;Bug;User1;Awaiting Review
1;JIRA_2;Improvement;User2;In Progress
2;JIRA_3;Improvement;;New
3;JIRA_4;Improvement;User3;Closed
4;JIRA_5;Improvement;User3;Awaiting Review
5;JIRA_6;Improvement;;New
6;JIRA_7;Bug;User5;Closed
7;JIRA_8;Bug;User5;Closed

import plotly.express as px
fig = px.bar(data_frame=df, x=['Request Type'], y=['Status'])

所以,我想在情节中表现出来。

User1: 1 张状态为 Awaiting Review

的工单

User3: 4 张状态为 2: New1: Awaiting Review2: New status

的工单

等等

为了实现你想要的,你不能直接在数据帧上做。在使用 plotly 之前,您需要首先对每个类别进行计数,px.bar 需要一个类别及其计数。以下代码生成如下所示的绘图,它执行您的请求。

import pandas as pd
import plotly.express as px


df = pd.read_csv("data_jira.csv", delimiter=';')
dff = df.groupby(['Assignee name', 'Status'])['N'].count().reset_index(drop=0).rename(columns={'N': 'Count'})

# Change barmode to 'overlay' for stacked barchart
px.bar(data_frame=dff, x='Assignee name', y='Count', color='Status', barmode='group')