首页 > 解决方案 > 在这个问题上得到一个值错误,不完全确定为什么

问题描述

import libraries
import pandas as pd
from scipy import stats
from scipy.stats import ttest_ind

df = pd.read_csv('https://tf-assets-prod.s3.amazonaws.com/tf-curric/data-analytics-bootcamp/medicalcosts.csv')

为性创建两个单独的 DataFrame

df_male = df.loc[df['sex'] == 'male']
df_female = df.loc[df['sex'] == 'female']

运行 t 检验比较男性和女性之间的费用列并打印结果

tc, pc = stats.pearsonr(df_male.charges, df_female.charges)
print(tc)
print(pc)

运行 t 检验比较男性和女性之间的 bmi 列并打印结果

tb, pb = stats.pearsonr(df_male.bmi, df_female.bmi)
print(tb)
print(tb)

标签: pythonpandas

解决方案


对于 pearson 相关性,您正在查看两个变量之间的关联。这意味着变量将具有相同的长度,并stats.pearsonr期望两个输入具有相同的长度。

在您的示例中,您试图在不同的观察结果之间进行相关性,这不太有意义。因此它会抛出一个错误:

len(df_male.charges)
676

len(df_female.charges)
662 

对于 t 测试,它将起作用:

ttest_ind(df_male.bmi, df_female.bmi)
Ttest_indResult(statistic=1.696752635752224, pvalue=0.08997637178984932)

推荐阅读