Мы хотим сгруппировать планеты по типам, а затем разделить их на основе того, имеет ли планета магнитное кольцо. Таким образом, теоретически существует шесть групп, но на основе данных возникают только четыре фактически существующие группы. И как только у нас есть эти группы, мы хотим выполнить некоторые операции суммирования и суммирования.
Непосредственно перед этим было доставлено исправление кода, где нам сообщают, что во избежание ошибки нам необходимо настроить параметр для функции sum(), куда нам нужно вставить: (numeric_only=True). Хотя моя текущая IDE не выдает ошибку без этой настройки, вместо этого она просто объединяет нечисловые значения.
Но настоящая проблема заключается в том, что нас просят запустить код внизу блока с помощью функции agg(). Я думаю, что проблема связана с тем, что я пытаюсь выполнить математические операции с нечисловыми данными, в частности, столбец для «колец» имеет логический тип. Но хотя мне удалось настроить параметры для функций среднего и максимального значения по отдельности (так, чтобы они оценивали только числовые столбцы), я не могу выполнить эту настройку в функции agg(), поскольку у нее нет этого параметра. И, не имея возможности внести эту корректировку только для числовых значений в agg(), сама курсовая работа выдает ошибку.
И если я воспользуюсь своим собственным исправлением, как описано выше, и отделю среднее значение () и max() и выполнять их индивидуально — очевидно, я могу настроить этот параметр на «numeric_only=True» для каждого:
'''
print(planets.groupby (['тип', 'магнитное_поле']).max(numeric_only=True))
print(planets.groupby(['type', 'магнитное_поле']).mean(numeric_only=True))
'''
Это дает все правильные данные, хотя и менее эффективно. Но разве эти две функции не должны иметь те же параметры, что и agg(), поскольку они здесь являются частью агрегатных функций pandas?
И помимо этого вопроса, существует проблема воспроизведения результатов курсовой работы и ее правильного выполнения — я хочу, чтобы все данные находились в одном выходном кадре данных. В конечном итоге, если я разделю эти функции и настрою параметры индивидуально, то смогу собирать данные правильно — но гораздо менее эффективно. А курсовая работа требует, чтобы все результаты были распечатаны в одной и той же распечатке. Есть идеи, чего мне не хватает в этом синтаксисе, чтобы сделать это за одно выполнение? СПАСИБО!!
'''
импортировать numpy как np
импортировать pandas как pd
data = {'planet': ['Mercury', ' Венера', 'Земля', 'Марс',
'Юпитер', 'Сатурн', 'Уран', 'Нептун'],
'radius_km': [2440, 6052, 6371, 3390, 69911, 58232,
25362, 24622],
'луны': [0, 0, 1, 2, 80, 83, 27, 14],
'type': ['наземный', 'наземный', 'земной', 'земной',
'газовый гигант', 'газовый гигант', 'ледяной гигант', 'ледяной гигант'],
'кольца': ['нет', 'нет', 'нет', 'нет', 'да', 'да', 'да','да'],
'mean_temp_c': [167, 464, 15, -65, -110, -140, -195, -200],
'магнитное_поле': ['да', 'нет', 'да', 'нет', 'да', 'да', 'да', 'да' ]
Код: Выделить всё
planets = pd.DataFrame(data)
P = planets.groupby(['type', 'magnetic_field']).agg(['mean', 'max'])
print(P)
Подробнее здесь: https://stackoverflow.com/questions/793 ... pby-syntax
Мобильная версия