Найти - Пользователи
Полная версия: Прошу помочь разобраться с циклом for в pandas
Начало » Центр помощи » Прошу помочь разобраться с циклом for в pandas
1
zantal
 for (race, sex), sub_df in data.groupby(['race', 'sex']):
    print("Race: {0}, sex: {1}".format(race, sex))
    print(sub_df['age'].describe())

Уважаемые коллеги! Выше представлен один кусок кода из курса по pandas. Необходимо из dataset сформировать таблицу с указанием расы и пола человека. Я что-то не понял как работает этот код: что такое sub_df и почему мы передаём кортеж (race, sex).
Вообще, если не сложно, опишите на пальцах, механизм работы настоящего кода. А то я до конца ни оной строчки тут не понимаю.
Заранее большое спасибо!
PEHDOM
zantal
Я что-то не понял как работает этот код: что такое sub_df, почему мы передаём кортеж (race, sex).
тут надо понимать что возвращает
  for x in data.groupby(['race', 'sex']):
    print(x)
сделай так и увидишь чтото типа такого:
 (('male', 'asian'),    Race  Sex   Age.....
N  asian         male   MM ...)
...........
где N номер строки в датасете для записи. MM возрвст ну и тд…
Соотствевенно for (race, sex), sub_df всего лишь способ распаковать в переменные выдачу итератора, в race, sex попадут, собвтеено, расса и пол, а в sub_df все остальное(это тоже датафрейм).
zantal
Спасибо огромное. Сейчас попробую!
zantal
Тогда, если можно еще на такой вопрос:

1) вот в этом примере, который мне удалось найти в интернете, (ссылка:
приводится пример, где цикл for пробегает по уже сгруппированной по столбцам A и B таблице, то есть .groupby(). А почему в нашем примере в методе .groupby перед этим списком еще передаётся data. Что это и зачем?
 for (race, sex), sub_df in pd.groupby(data, ['race', 'sex']):
    print("Раса: {0}, пол: {1}".format(race, sex))
    print(sub_df['age'].describe())

PEHDOM
zantal
А почему в нашем примере в методе .groupby перед этим списком еще передаётся data. Что это и зачем?
потому что гладиолус ООП в пайтоне так реализована и запись вида instance_of_Class.method(*args) идентична Class.method(instance_of_Class, *args). По сути это просто разные формы записи одного и тогоже.
zantal
PEHDOM
Спасибо тебе большое за развёрнутые и понятные ответы. Теперь я разобрался и всё понял. Ещё раз спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB