对数据行进行分组以生成分析数据

问题描述 投票:0回答:1

我正在处理 NHS 出勤数据的数据集(包括列和行的片段)。该数据一直持续到周日的最后一个小时。我已经成功清理了数据,现在我正在尝试首先找到“周末与工作日出勤的最常见原因”。我稍后还会找到“整周最常见的出勤时间”,并希望“上午 8 点至(含)晚上 7 点以及晚上 8 点至上午 7 点之间出勤的最常见原因”。

我已经包含了到目前为止我设法制作的代码,但我正在尝试使用循环、基本函数和条件语句来生成代码。我将不胜感激任何关于我到目前为止所做的事情的建议,以及是否有更好的方法来处理我正在做的事情,以便使下一个分析问题更容易,因为我目前不完全理解我正在做的事情。我真的不知道如何从一开始就解决任何问题,因此将不胜感激任何基本指导。我还想知道是否有一种方法可以使函数始终排除标记为“未公开”的未知值,因为它们是非整数?我还阅读了一些有关使用 Pandas 进行 groupby 的内容,想知道这是否适用?

#Analytical Insight 1: Most Common Reason for Attendance on Weekdays vs Weekends
weekend_data = {} #creating empty dictionary to store the data

for index, row in NHSdata.iterrows():
  if row['Weekday'] == 'Saturday' or row['Weekday'] == 'Sunday':
    for reason in ['Road traffic accident', 'Assualt', 'Deliberate self-harm', 'Sports injury', 'Not known']: #iterating through columns
      if row[reason] != 'Undisclosed':
        weekend_data[reason] = weekend_data.get(reason, 0) + int(row[reason]) #converts row[reason] to integer

weekend_df = pd.DataFrame([weekend_data])
print("Weekend Data:")
print(weekend_df)

部分数据集

python pandas dataframe group-by data-analysis
1个回答
0
投票

我使用下面的假数据 (df) 来计算每种伤害在周末发生的伤害总数:

df

df = df.replace("Undisclosed", 0)  # replace the undisclosed value by 0
df = df[df["Weekday"].isin(["Saturday", "Sunday"])]  # filter on weekends
res = df.sum(axis=0)[2:]  # get the sum per column
print(res)

RoadTrafficAccident    213
Assault                252
DeliberateSelfHarm     215
SportsInjury           115
NotKnown               415
© www.soinside.com 2019 - 2024. All rights reserved.