Statistics with Python: Week2 Nhanes Assignment

这门课不知出于什么原因比较小众,如果有人在做,在week2的assignment中出现问题,希望我的回答可以帮到你。

这个作业的目的就是抓取nhanes(美国健康与营养检测)2015-2016的数据,然后计算平均数/中位数/方差/四分位距。第一次我抓取url后计算的结果有几项怎么都不对,我甚至都开始手动计算了。后来才知道是因为数据更新(真的很坑人),如果这个测试过不了后面拿不了结业证书。

后来我在github上获得了4年前的数据,用获取剪贴板的模式get了csv文件,就成了。需要的可以在我的资源里找。

目录

    • 复制excel粘贴成csv
    • 从url中导入数据
    • 平均数:
    • Standard deviation:
    • Interquartile Range:
    • 系列:
    • 直方图调用:
    • 答案:

复制excel粘贴成csv

import pandas as pd

# 从剪贴板读取数据
df = pd.read_clipboard()

# 保存为 CSV 文件(保存在当前工作目录)
csv_file_path = "nhanes.csv"

# 保存为 CSV 文件
df.to_csv(csv_file_path, index=False)

从url中导入数据

import pandas as pd
import requests
from io import BytesIO

# 替换为实际的 URL
url = "https://wwwn.cdc.gov/Nchs/Nhanes/2015-2016/BPX_I.xpt"

# 从 URL 下载文件
response = requests.get(url)
data = BytesIO(response.content)

# 使用 pandas 的 read_sas 函数读取 xpt 数据
df = pd.read_sas(data, format="xport")

# 显示数据框的前几行
print(df.head())

# 假设你的 DataFrame 包含 BPXSY2 列,并命名为 df
# 移除 BPXSY2 列中的缺失值
bp_data = df["BPXSY2"].dropna()

# 计算中位数
median_bp = bp_data.median()

# 打印结果
print(f"The median systolic blood pressure (BPXSY2) is: {round(median_bp, 1)}")

round(名称,1) 保留到小数点后1位

平均数:

Mean_bp=bp_data.mean()

Standard deviation:

std_bp = bp_data.std()

Interquartile Range:

q1 = bp_data.quantile(0.25)
q3 = bp_data.quantile(0.75)
iqr = q3 - q1

系列:

s.describe()

直方图调用:

sns.distplot(s)
sns.histplot(s)

答案:

在这里插入图片描述在这里插入图片描述