python - Pandas、Excel 导入和多重索引

标签 python pandas data-analysis

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

enter image description here

我的目标是使用索引标签 XYZCDEEFG 进行可视化x 轴上的 HU 以及 YesProbYesX 的相应 Perc 值, ProbNo, No 堆叠在 y 轴上。

目前我正在通过代码将 Excel 数据解析为 panda 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

生成的tableMultiIndex似乎没问题:

>>> 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')

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

编辑:

它有助于排序:

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

产量:

enter image description here

使用该表我无法进行分析...

最佳答案

我认为做完之后

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')]

关于python - Pandas、Excel 导入和多重索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23963665/

相关文章:

python - 在 pandas 中,如何使用 "where"参数来查询日期时间索引列?

python - 如何按单词 'by' 拆分字典并仅保留书名?

python - dtype 对象的累积操作

python - 通过忽略区分大小写的方式删除重复项并将下一列值添加到 python 中的 pandas 数据框中的第一个值

python - 从 pandas 中的不规则时间序列生成规则时间序列

python - 属性错误 : 'list' object has no attribute 'encode'

javascript - 从 JavaScript 到 Django 的实时音频流

python - OpenERP - 模块导入错误

python - Travis 脚本退出代码永远不会失败,即使应该失败

python - 修改 pandas 数据框中的值