Определение функции в Пандах - PullRequest
0 голосов
/ 13 февраля 2019

Я новичок в Пандах и прохожу этот курс онлайн.Я знаю, что есть способ определить функцию, чтобы сделать этот код чище, но я не уверен, как это сделать.

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 голосов
/ 14 февраля 2019

Добро пожаловать в Stack Exchange.Вы не очень четко представляете себе желаемый результат, но я думаю, что вы пытаетесь получить сводку по каждой возможной комбинации возраста, пола и no_show в вашем df.Для этого вы можете использовать встроенный groupby метод панд документацию здесь .

Как уже упоминалось @ALollz, следующий код даст вам все, что вам нужно знать о ваших счетахв процентах.

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

Теперь вам нужно решить, что с ним делать.Вы можете либо перебирать кадры данных, печатая каждую строку, либо вы можете найти конкретные комбинации, либо вы можете распечатать все целиком.

В общем, лучше искать встроенный метод, чем пытаться создатьфункция за пределами панд.Есть много разных способов сделать что-то, и проверка документации - это хорошее начало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...