You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于排名对比DataFrame中N_offspring与survival行数据

问题与解决方案

给定如下部分DataFrame数据:

replicate  N_offspring group  survival  rank offs  rank sur
27   H-CC-81          339   CCC        87          7        13
28   H-CC-82          285   CCC        89         16        12
29   H-CC-83          261   CCC        82         18        19
30   H-CC-84          312   CCC       108         12         5
31   H-CC-85          205   CCC        84         26        15
32   H-CC-86          153   CCC        59         28        27

需求是基于rank offs和rank sur的排名,将对应排名的N_offspring与survival数据进行对比检验(例如对比rank offs=20对应的N_offspring和rank sur=20对应的survival)。

实现步骤

1. 提取指定排名的对应数据

以提取排名20的两组数据为例,用Python代码实现:

# 假设DataFrame变量名为df
# 获取rank offs=20对应的N_offspring值
offs_rank_20 = df.loc[df['rank offs'] == 20, 'N_offspring'].values[0]
# 获取rank sur=20对应的survival值
sur_rank_20 = df.loc[df['rank sur'] == 20, 'survival'].values[0]

2. 单一对排名数据的对比

如果仅需分析单一对排名的数据,可直接对提取出的两个值做描述性对比(如差值、比值);若需结合整体数据分布做推断,可参考后续全排名成对检验的方法。

3. 全排名成对数据的统计检验

若要对所有排名对应的N_offspring和survival做系统性检验,需先将两组数据按排名对齐,再选择合适的统计方法:

  • 配对t检验:适用于数据满足正态分布的情况
  • 威尔科克森符号秩检验:适用于非正态分布的配对数据

代码示例:

import scipy.stats as stats

# 按各自排名排序,确保两组数据按排名顺序对应
sorted_offspring = df.sort_values('rank offs')['N_offspring']
sorted_survival = df.sort_values('rank sur')['survival']

# 配对t检验
t_statistic, p_value = stats.ttest_rel(sorted_offspring, sorted_survival)
print(f"配对t检验:t值 = {t_statistic:.2f},p值 = {p_value:.4f}")

# 威尔科克森符号秩检验
wilcoxon_stat, wilcoxon_p = stats.wilcoxon(sorted_offspring, sorted_survival)
print(f"威尔科克森符号秩检验:统计量 = {wilcoxon_stat:.2f},p值 = {wilcoxon_p:.4f}")

内容的提问来源于stack exchange,提问作者Rimidelo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:15:37