在Pandas中定义功能

时间:2019-02-13 16:31:43

标签: pandas function dataset

我是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)

我希望这是有道理的。感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

欢迎使用Stack Exchange。您对所需的输出不太清楚,但是我认为您想要做的是总结一下df中年龄,性别和no_show的每种可能组合。为此,您可以使用熊猫documentation here的内置groupby方法。

如@ALollz所述,以下代码将为您提供有关百分比计数所需的所有信息。

counts = df.groupby(['Gender', 'Persons_age'])['No_show'].value_counts(normalize=True)

现在,您需要决定如何处理它。您可以遍历打印每行的数据框,也可以找到特定的组合,也可以打印出整个内容。

通常,寻找内置方法比尝试在熊猫之外构建函数要好。有很多不同的处理方法,并且检查文档是一个不错的起点。