python - 如何使用 Statsmodels 库从 Pandas 数据框创建马赛克图?

标签 python pandas statsmodels

使用 Python 3.4、Pandas 0.15 和 Statsmodels 0.6.0,我尝试创建一个 mosaic plot来自 Statsmodels documentation 中描述的数据框.但是,我只是不明白必须如何格式化提供给 mosaic() 函数的输入。

给定一个简单的数据框:

In:
myDataframe = pd.DataFrame({'size' : ['small', 'large', 'large', 'small', 'large', 'small'], 'length' : ['long', 'short', 'short', 'long', 'long', 'short']})

Out:
  length   size
0   long  small
1  short  large
2  short  large
3   long  small
4   long  large
5  short  small

尝试创建此数据的马赛克图时:

from statsmodels.graphics.mosaicplot import mosaic
mosaic(data=myDataframe, title='Mosaic Plot')

给出 ValueError: cannot label index with a null key

由于马赛克图是列联表的可视化,所以我首先尝试使用

In:
myCrosstable = pd.crosstab(myDataframe['size'], myDataframe['length'])

Out:
length  long  short
size               
large      1      2
small      2      1

仍然,使用 myCrosstable 作为数据参数会产生相同的错误。

数据帧必须如何格式化才能被 mosaic() 函数接受?该文档说作为数据参数的解释: 参数:

data : dict, pandas.Series, np.ndarray, pandas.DataFrame

The contingency table that contains the data. Each category should contain a non-negative number with a tuple as index.

这不是 pd.crosstab 函数返回的内容吗?如果没有,我该如何相应地转换数据框?

最佳答案

我使用了你的数据和这段代码:

mosaic(myDataframe, ['size', 'length'])

得到这样的图表:

mosaic chart

关于python - 如何使用 Statsmodels 库从 Pandas 数据框创建马赛克图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27225636/

相关文章:

python - 有没有一种跨平台的方法可以在 Python 中打开文件浏览器?

python - Pandas:将项目转换为字典,其中 orderID 是字典键

python,使用逻辑回归来查看哪个变量对积极预测增加了更多权重

python - 数据迁移的正确解决方案

python - Matplotlib 2.0 中不同的 Figsize 定义

python - 如何使用 pd.Timestamp 函数将数据列更改为时间戳格式

python - 忽略 Python 统计模型中的 NaN

Python Statsmodels 测试基于 M-Estimators 的稳健线性模型的系数

python - 如何检查Python中的导入别名冲突?

python - 如何在pandas中只返回一个group by?