【问题标题】:Pandas, Excel-Import and MultiIndexPandas、Excel-Import 和 MultiIndex
【发布时间】:2014-05-30 21:29:07
【问题描述】:

我是 pandas 的新手,目前正在尝试对以下 Schema 中的 Excel 数据进行一些分析:

我的目标是在 x 轴上使用索引标签 XYZCDEEFGHU 和对应的 Perc 值进行可视化987654329@、ProbYesXProbNoNo 堆叠在 y 轴上。

目前我正在通过代码将 Excel 数据解析为熊猫 DataFrame

import pandas as pd
path = 'x1.xlsx'
x = pd.ExcelFile(path)
sheets = x.sheet_names
table = x.parse(sheets[0], header=2) # take line 2 as column-names

table 生成的MultiIndex 好像没问题:

>>> table.index 
MultiIndex(levels=[[u'Individual', u'Summary'], [u'ABC', u'CDE', u'EFG', u'HIJ'], [u'Abs', u'Perc']], labels=[[0, -1, -1, -1, -1, -1, -1, -1, 1, -1], [0, -1, 1, -1, 2, -1, 3, -1, -1, -1], [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]])

但是,既不能访问特定的行:

>>> table.ix[('Individual', 'CDE')]
KeyError: 'Key length (2) was greater than MultiIndex lexsort depth (0)'

...也不可能访问或过滤/删除包含行索引的列

>>> table.index.names
FrozenList([None, None, None])

即索引没有名称,所以我想我无法访问它们?

我尝试通过替代解析来简化数据结构:

>>> table2 = x.parse(sheets[0], header=2, skiprows=2, parse_cols='B,:I')

然而,这并没有真正的帮助。

编辑

sort没有帮助:

>>> table.sort(inplace=True)
>>> table[:4]

产量:

我无法用那张表进行分析...

【问题讨论】:

  • 你能转换成 CSV 吗? CSV 文件非常简单:pandas.pydata.org/pandas-docs/dev/… ...或者类似的函数调用可能会在 Excel 中工作。
  • 好的,我会尝试...所以您认为 Excel 导入有问题?尽管 MultiIndex 似乎很完美 - 除了索引的 lexsort_depth0...
  • 我认为 Excel 解析器不如 CSV 解析器强大。我发布的链接显示了您需要的 CSV 格式以及如何直接通过调用 pandas.read_csv 在列中获取 MultiIndex
  • pandas.read_excel 与 read_csv 具有或多或少相同的功能(某些关键字未在 read_excel 的文档中列出,但仍可以使用 read_csv 中的关键字参数)

标签: python pandas data-analysis


【解决方案1】:

我觉得做完之后

table.sort(inplace=True)

你可以访问

table.ix[('Individual', 'CDE')]

编辑:

我知道为什么 -- 您的 Excel 文件已合并单元格,例如 A4:A11。当你将它加载到pandas DataFrame中时,索引Individual只在A4中,而A5:A11中的索引都是nan

我能想到的一种解决方法是:

table =table.reset_index().fillna(method='ffill').set_index(['level_0','level_1','level_2'])
#reset_index() automatically gives column names level_?

那么你就可以走了:

table.ix[('Individual','CDE')]

【讨论】:

  • 感谢您的回答。不幸的是,sort 在这里似乎没有意义。排序后,表格包含了上半部分的所有Perc-Values,没有第二个索引的值。
猜你喜欢
  • 2018-10-28
  • 2018-12-29
  • 2018-09-24
  • 1970-01-01
  • 2014-08-17
  • 2017-04-06
  • 2018-07-22
  • 2019-05-20
  • 2017-08-25
相关资源
最近更新 更多