用于数据分析的 Python:第 2 章第 38 页“prop_cumsum”错误

Posted

技术标签:

【中文标题】用于数据分析的 Python:第 2 章第 38 页“prop_cumsum”错误【英文标题】:Python for Data Analysis: Chp 2 Pg 38 "prop_cumsum" error 【发布时间】:2017-05-08 23:47:43 【问题描述】:

我正在写这本书,当我运行“Prop_cumsum”时一直出错

> prop_cumsum = df.sort_index(by='prop', ascending=False).prop.cumsum()

/Users/anaconda/lib/python3.5/site-packages/ipykernel/ma​​in.py:1: FutureWarning:不推荐使用 sort_index 的参数,请使用 .sort_values(by=...) 如果 name == 'ma​​in': -------------------------------------------------- ------------------------- KeyError Traceback(最近一次调用 最后的) /Users/anaconda/lib/python3.5/site-packages/pandas/indexes/base.py 在 get_loc(self, key, method, tolerance) 1944 尝试: -> 1945 返回 self._engine.get_loc(key) 1946 除了 KeyError:

pandas/index.pyx 在 pandas.index.IndexEngine.get_loc (pandas/index.c:4154)()

pandas/index.pyx 在 pandas.index.IndexEngine.get_loc (pandas/index.c:4018)()

pandas/hashtable.pyx 在 pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12368)()

pandas/hashtable.pyx 在 pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12322)()

KeyError: 'prop'

在处理上述异常的过程中,又发生了一个异常:

KeyError Traceback(最近调用 最后)在() ----> 1 prop_cumsum = df.sort_index(by='prop', 升序=False).prop.cumsum()

/Users/anaconda/lib/python3.5/site-packages/pandas/core/frame.py sort_index(自我,轴,水平,升序,就地,种类,na_position, sort_remaining, by) 3237 raise ValueError("unable 同时排序和级别”)3238返回 self.sort_values(按,轴=轴,升序=升序, -> 3239 inplace=inplace) 3240 3241 轴 = self._get_axis_number(axis)

/Users/anaconda/lib/python3.5/site-packages/pandas/core/frame.py 排序值(自我,按,轴,升序,就地,种类,na_position) 3149 3150 by = by[0] -> 3151 k = self[by].values 3152 如果 k.ndim == 2: 3153

/Users/anaconda/lib/python3.5/site-packages/pandas/core/frame.py getitem(self, key) 1995 return self._getitem_multilevel(key) 1996 else: -> 1997 return self._getitem_column(key) 1998 1999 def _getitem_column(self, key):

/Users/anaconda/lib/python3.5/site-packages/pandas/core/frame.py _getitem_column(self, key) 2002 # 如果 self.columns.is_unique 则获取第 2003 列: -> 2004 return self._get_item_cache(key) 2005 2006 # 重复列和可能的降维

/Users/anaconda/lib/python3.5/site-packages/pandas/core/generic.py _get_item_cache(self, item) 1348 res = cache.get(item) 1349 如果 res 为 None: -> 1350 个值 = self._data.get(item) 1351 res = self._box_item_values(item, values) 1352 缓存[项目] = res

/Users/anaconda/lib/python3.5/site-packages/pandas/core/internals.py 在 get(self, item, fastpath) 3288 3289 如果没有 isnull(项目): -> 3290 loc = self.items.get_loc(item) 3291 else: 3292 indexer = np.arange(len(self.items))[isnull(self.items)]

/Users/anaconda/lib/python3.5/site-packages/pandas/indexes/base.py get_loc(self, key, method, tolerance) 1945 返回 self._engine.get_loc(key) 1946 除了 KeyError: -> 1947 返回 self._engine.get_loc(self._maybe_cast_indexer(key)) 1948 1949 indexer = self.get_indexer([key], method=method, tolerance=tolerance)

pandas/index.pyx 在 pandas.index.IndexEngine.get_loc (pandas/index.c:4154)()

pandas/index.pyx 在 pandas.index.IndexEngine.get_loc (pandas/index.c:4018)()

pandas/hashtable.pyx 在 pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12368)()

pandas/hashtable.pyx 在 pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12322)()

KeyError: 'prop'

【问题讨论】:

请添加更多代码来详细说明您的问题。 这是我试过的代码 'prop_cumsum = df.sort_index(by='prop', ascending=False).prop.cumsum()' 这可以在 Python for Data Analysis 一书的第 38 页找到 第 32-38 页的命令(包括您的命令)没有错误。尝试逐步重现第 32-38 页上的命令。如果您的 pandas 版本比作者使用的更新,请阅读冲突函数的帮助并更改参数名称(在我的情况下,pivot_table 函数中存在冲突(参数以这种方式重命名:rows->index, cols->columns ))。我的熊猫版本是 0.18.1。 是的,我从 pg 32-38 做了所有事情,没有任何问题,并更改了(行到索引和列到列)但是我不能用上面的命令解决这个问题。 【参考方案1】:

您似乎调用了sort_index 而不是sort_valuesby='prop' 在这种情况下没有意义(您按索引对索引进行排序,而不是按数据框中的列)。

另外,在我的第 2 版的早期版本中,这出现在第 43 页顶部附近。但由于这是早期版本,页码可能不固定。

【讨论】:

以上是关于用于数据分析的 Python:第 2 章第 38 页“prop_cumsum”错误的主要内容,如果未能解决你的问题,请参考以下文章

数据结构复习

第4章第1讲简单语句分析

第1章第2节练习题2 非递归删除指定结点

第2章第300回原生JS与jQuery对AJAX的实现

第2章第2节练习题3 使用队列模拟渡口管理

第2章第3讲常见编译错误与调试