1

我一直在尝试,一整天都在尝试完成这项工作,但它开始让我生气了!我要做的就是创建一个必要的熊猫系列,以便输入到 uptplot 中,如下所述:

https://pypi.org/project/upsetplot/

我不明白 generate_data 函数是如何操纵它的集合来制作一个系列的。我会假设通过调用 set() 有一种简单的方法可以做到这一点,但我似乎找不到它。

所以我开始直接操作我的数据框,但怀疑这些尝试被误导了。

因此,我求助于在下面提供一个简单的数据框,并祈祷一些善良的灵魂可以启发我。

import pandas as pd
from matplotlib import pyplot as plt
from upsetplot import generate_data, plot

df = pd.DataFrame({'john':[1,2,3,5,7,8],
              'jerry':[1,2,5,7,9,2],
              'josie':[2,2,3,2,5,6],
              'jean':[6,5,7,6,2,4]})

df = pd.DataFrame({'john':[True,False,True,False,True,False],
              'jerry':[True,True,False,True,False,True],
              'josie':[True,False,False,True,False,False],
              'jean':[True,False,False,True,False,False],
              'food':['apple','carrot','choc','bread','ham','nut']})

包装主页中的示例

from upsetplot import generate_data
example = generate_data(aggregated=True)
example  # doctest: +NORMALIZE_WHITESPACE
set0   set1   set2
False  False  False      56
              True      283
       True   False    1279
              True     5882
True   False  False      24
              True       90
       True   False     429
              True     1957
Name: value, dtype: int64
4

1 回答 1

2

GroupBy.size使用所有不带 的列汇总计数food

df = pd.DataFrame({'john':[True,False,True,False,True,False],
              'jerry':[True,True,False,True,False,True],
              'josie':[True,False,False,True,False,False],
              'jean':[True,False,False,True,False,False],
              'food':['apple','carrot','choc','bread','ham','nut']})

cols = df.columns.difference(['food']).tolist()
s = df.groupby(cols).size()
print (s)
jean   jerry  john   josie
False  False  True   False    2
       True   False  False    2
True   True   False  True     1
              True   True     1
dtype: int64
于 2019-01-04T06:37:14.997 回答