我是Pandas的新手,并且正在在线学习本课程。我知道有一种方法可以定义一个使此代码更整洁的函数,但是我不确定该怎么做。
noshow = len((df[
(df['Gender'] == 'M') \
& (df['No_show'] == 'Yes') \
& (df['Persons_age'] == 'Child')
]))
noshow
有多个性别,多个No_show答案和多个人的年龄,我不想为每个人写出代码。
我已经获得了单个函数的代码,但没有多个迭代的代码。
def print_noshow_percentage(column_name, value, percentage_text):
total = (df[column_name] == value).sum()
noshow = len((df[(df[column_name] == value) & (df['No_show'] == 'Yes')]))
print(int((noshow / total) * 100), percentage_text)
我希望这是有道理的。感谢您的帮助!
答案 0 :(得分:0)
欢迎使用Stack Exchange。您对所需的输出不太清楚,但是我认为您想要做的是总结一下df
中年龄,性别和no_show的每种可能组合。为此,您可以使用熊猫documentation here的内置groupby
方法。
如@ALollz所述,以下代码将为您提供有关百分比计数所需的所有信息。
counts = df.groupby(['Gender', 'Persons_age'])['No_show'].value_counts(normalize=True)
现在,您需要决定如何处理它。您可以遍历打印每行的数据框,也可以找到特定的组合,也可以打印出整个内容。
通常,寻找内置方法比尝试在熊猫之外构建函数要好。有很多不同的处理方法,并且检查文档是一个不错的起点。