python - 在这个问题上得到一个值错误,不完全确定为什么
问题描述
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)
解决方案
对于 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)
推荐阅读
- gcc - 找不到 -ll collect2:错误:ld 返回 1 退出状态
- reactjs - UseEffect 或在功能组件中抛出逻辑
- pycharm - 无法在 Windows 10 PC 中打开我的 PyCharm 应用程序?
- c++ - 单个文件中的多个命名空间相互引用 C++
- python-3.x - Modin df iterrows 非常缓慢。有什么办法可以加快速度吗?
- php - 如何将表格的内容发送到我的电子邮件?使用 HTML 和 PHP
- elasticsearch - 知道弹性搜索中的开始日期字段时如何计算持续时间字段?
- postgresql - 我将如何按大多数加权匹配排序?
- php - 我想删除 json 格式
- java - 使用 BigInteger 时如何在范围内选择一个随机数