我有一本字典(在python中),其中的键是动物名,值是包含基因名的集合。并非所有动物都具有所有基因。
大约有108个基因(我列出了其中的一个)和15种。所有动物共有28个基因。
我想为每个动物和每个基因绘制一个动物中基因的存在情况。
例如:
d = {'dog': {'tnfa', 'tlr1'}, 'cat': {'myd88', 'tnfa', 'map2k2'}}
我想要的情节看起来像这样:
dog cat
tnfa x x
myd88 x
tlr1 x
map2k2 x
如果我也可以将基因数量最多的动物归为一类,那就太好了。但这是可选的。
您对我可以采取的方法有什么建议吗?
最佳答案
让我们尝试一下:
d = {'dog': {'tnfa', 'tlr1'}, 'cat': {'myd88', 'tnfa'}}
df = pd.DataFrame.from_dict(d, orient='index')
df.stack().reset_index()\
.drop('level_1',axis=1).assign(Value='x')\
.set_index([0,'level_0'])['Value']\
.unstack().rename_axis('gene')\
.rename_axis('animal', 1)
输出:
animal cat dog
gene
myd88 x None
tlr1 None x
tnfa x x