使用 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'])
得到这样的图表:
关于python - 如何使用 Statsmodels 库从 Pandas 数据框创建马赛克图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27225636/