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