gpt4 book ai didi

python - 使用 margins=True 的 Pandas pivot_table 时出错

转载 作者:行者123 更新时间:2023-11-28 21:50:07 31 4
gpt4 key购买 nike

我的代码(来自书 Python Data Science Handbook (O'Reilly)):

全面披露:在撰写本文时,这本书仍处于早期发行阶段,这意味着它仍未编辑且处于原始状态。

import numpy as np
import pandas as pd
import seaborn as sns
titanic = sns.load_dataset('titanic')

titanic.pivot_table('survived', index='sex', columns='class')

结果是:

Dataframe

但是,如果我现在尝试使用 margins 关键字添加总计,则会出现以下错误:

titanic.pivot_table('survived', index='sex', columns='class', margins=True)

TypeError: cannot insert an item into a CategoricalIndex that is not already an existing category

知道是什么原因造成的吗?

版本信息:

  • python 3.4.2
  • Pandas 0.16.2
  • numpy 1.9.2

最佳答案

这似乎是由于 pandas 0.15 和 0.16 之间的变化。在以前的版本中,泰坦尼克号数据集具有此数据类型:

In [1]: import pandas, seaborn

In [2]: pandas.__version__
'0.15.2'

In [3]: titanic = seaborn.load_dataset('titanic')

In [4]: titanic.dtypes
Out[4]:
survived int64
pclass int64
sex object
age float64
sibsp int64
parch int64
fare float64
embarked object
class object
who object
adult_male bool
deck object
embark_town object
alive object
alone bool
dtype: object

使用较新的 pandas:

In [1]: import pandas, seaborn

In [2]: pandas.__version__
'0.16.2'

In [3]: titanic = seaborn.load_dataset('titanic')

In [4]: titanic.dtypes
Out[4]:
survived int64
pclass int64
sex object
age float64
sibsp int64
parch int64
fare float64
embarked object
class category
who object
adult_male bool
deck category
embark_town object
alive object
alone bool
dtype: object

有几列自动转换为分类列,这会引发此错误。该书目前未出版且未经编辑;我一定会使用最新版本进行测试,并在发布前修复这些类型的错误。

目前,这里有一个解决方法:

In [5]: titanic['class'] = titanic['class'].astype(object)

In [6]: titanic.pivot_table('survived', index='sex', columns='class', margins=True)
Out[6]:
class First Second Third All
sex
female 0.968085 0.921053 0.500000 0.742038
male 0.368852 0.157407 0.135447 0.188908
All 0.629630 0.472826 0.242363 0.383838

编辑:我将此作为问题提交给 pandas 项目:https://github.com/pydata/pandas/issues/10989

关于python - 使用 margins=True 的 Pandas pivot_table 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32400279/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com