次の形式の実験からのデータがあります。ここでは、各実験と処理が重複して実行され、ヒットは特定のイベントに関連する遺伝子です。
experiment treatment replicate hit
1 1 1 gene1
1 1 1 gene2
1 1 1 gene1
1 1 1 gene1
1 1 2 gene1
1 1 2 gene1
1 2 1 gene1
1 2 1 gene2
1 2 2 gene2
1 2 2 gene2
私がやりたいことは、治療内の各遺伝子の平均数を計算することです.
以下を使用して、実験ごとの遺伝子数を取得できますvalue_counts()
。
counts = df['hit'].groupby([df['experiment'], df['treatment'],
df['replicate']]
).value_counts().unstack()
次のような出力が生成されます。
experiment treatment replicate gene1 gene2
1 1 1 3 1
1 1 2 2 NA
1 2 1 1 1
1 2 2 NA 2
しかし、私が本当に欲しいのは、治療ごとの平均カウントなので、(NA を 0 に置き換えると仮定して):
experiment treatment gene1 gene2
1 1 2.5 0.5
1 2 0.5 1.5
何か案は?value_counts に適用する.mean()
と、各レプリケートではなく、すべての列の平均が得られるようです。