Python: pivot_table и groupby получают совершенно противоположный результат - PullRequest
0 голосов
/ 22 сентября 2018

Я имею дело с набором данных Титаник из [ seaborn ].

titanic = seaborn.load_dataset('titanic')

Я вырезал столбец возраста в категориальных бинах.

age = pd.cut(titanic['age'], [0, 18, 80])

Тогда возникает проблема, groupby и pivot_table дают совершенно разные результаты:

titanic.groupby(['sex', age, 'class'])['survived'].mean().unstack(-1)
titanic.pivot_table('survived', ['sex', age], 'class')

groupby и pivot_table результаты

Сначала, я думаю, этопотому что nan в age , тогда я использовал набор данных, обработанный dropna, чтобы переделать его.

titanic = titanic.dropna()
age = pd.cut(titanic['age'], [0, 18, 80], right = True)
titanic.groupby(['sex', age, 'class'])['survived'].mean().unstack(-1)
titanic.pivot_table('survived', ['sex', age], 'class')

На этот раз я даже получил совершенно другой результат.

groupby и pivot_table результаты после dropna

Моя версия на python: Python 3.6.5 :: Anaconda, Inc. pandas: 0.23.0

Моя операционная система MaxOS High Sierra 10.13.6

Я попробовал еще раз с python 3.7.0 и pandas 0.23.4, но ошибки не было.

результат под python 3..7.0

Значит, мне интересно, это ошибка Анаконды?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Я обнаружил, что это ошибка панд, которая появилась в версии 0.23.0, выпущенной в мае 2018 года, и была решена в версии 0.23.4, выпущенной в сентябре 2018 года.

Так что если выслучается с некоторыми проблемами, связанными с pandas.pivot_table, особенно когда в ваших категориальных данных есть NaN, вам лучше сначала проверить свою версию pandas и обновить ее .:)

0 голосов
/ 22 сентября 2018

Я попробовал ваши заявления и получаю соответствующие результаты: введите описание изображения здесь

...