这门课不知出于什么原因比较小众,如果有人在做,在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)