Panda 交叉表函数获取条件编号
Panda crosstab function getting number for conditions
我不确定标题是否选得好,很抱歉。如果这已经被覆盖,请让我知道我在哪里找不到它。
对于我正在进行的分析,我主要在 JupyterLab 中工作,主要是 scanpy。我想查看在莱顿聚类中共表达某些基因的细胞数量。到目前为止,我正在尝试使用 pandas 交叉表函数,我得到了每个集群的编号。
但是,我有两个条件,并且我正在努力分离样本以分别获得细胞计数。
我用来获取细胞总数的代码工作正常。
pd.crosstab(adata_proc.obs['leiden_r05'], adata_proc.obs['CoEx'])
我努力获取样本数字的代码。我知道 aggfunc = ','.join
不是正确的方法,但这是为了解释问题所在。
pd.crosstab(adata_proc.obs['leiden_r05'], adata_proc.obs['CoEx'], adata_proc.obs['sample'], aggfunc = ','.join)
我可以在 table 中得到条件的名称,但我不想要这个。我想要 2 个条件的数字。这怎么可能?也许有办法在单独的函数中执行此操作?
编辑:
使用 crosstab
,您需要将 'CoEx' 列添加到索引,并使用 'sample' 作为感兴趣的列:
pd.crosstab(index=[adata_proc.obs['leiden_r05'],adata_proc.obs['CoEx']], columns=[adata_proc.obs['sample']])
我建议使用 .groupby
函数:
adata_proc.obs.groupby(['leiden_r05','CoEx'])["sample"].value_counts()
另一个选项(有点滥用)是 pivot_table
interface。在你的情况下是:
pd.pivot_table(adata_proc.obs, index=["leiden_r05"], columns=["CoEx","sample"],values='barcode', aggfunc=len, fill_value=0)
*这里的'values'参数只是为了减少列的数量,使用不合适方法的产物
我不确定标题是否选得好,很抱歉。如果这已经被覆盖,请让我知道我在哪里找不到它。 对于我正在进行的分析,我主要在 JupyterLab 中工作,主要是 scanpy。我想查看在莱顿聚类中共表达某些基因的细胞数量。到目前为止,我正在尝试使用 pandas 交叉表函数,我得到了每个集群的编号。 但是,我有两个条件,并且我正在努力分离样本以分别获得细胞计数。
我用来获取细胞总数的代码工作正常。
pd.crosstab(adata_proc.obs['leiden_r05'], adata_proc.obs['CoEx'])
我努力获取样本数字的代码。我知道 aggfunc = ','.join
不是正确的方法,但这是为了解释问题所在。
pd.crosstab(adata_proc.obs['leiden_r05'], adata_proc.obs['CoEx'], adata_proc.obs['sample'], aggfunc = ','.join)
我可以在 table 中得到条件的名称,但我不想要这个。我想要 2 个条件的数字。这怎么可能?也许有办法在单独的函数中执行此操作?
编辑:
使用 crosstab
,您需要将 'CoEx' 列添加到索引,并使用 'sample' 作为感兴趣的列:
pd.crosstab(index=[adata_proc.obs['leiden_r05'],adata_proc.obs['CoEx']], columns=[adata_proc.obs['sample']])
我建议使用 .groupby
函数:
adata_proc.obs.groupby(['leiden_r05','CoEx'])["sample"].value_counts()
另一个选项(有点滥用)是 pivot_table
interface。在你的情况下是:
pd.pivot_table(adata_proc.obs, index=["leiden_r05"], columns=["CoEx","sample"],values='barcode', aggfunc=len, fill_value=0)
*这里的'values'参数只是为了减少列的数量,使用不合适方法的产物