集合分析:创建 pandas 系列,其中交叉点作为索引,值作为计数
set analysis: create pandas series with intersections as index and values as counts
我试了又试,一整天都在尝试让这项工作成功,这让我开始生气了!
我想要做的就是创建一个必要的 pandas 系列以输入到 upsetplot 中,详情如下:
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
按 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
我试了又试,一整天都在尝试让这项工作成功,这让我开始生气了! 我想要做的就是创建一个必要的 pandas 系列以输入到 upsetplot 中,详情如下:
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
按 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