我正在处理 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)
我使用下面的假数据 (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