请给出Ex5-2B,Ex5-3B,Ex5-3C的答案
时间: 2024-11-06 08:25:06 浏览: 23
### Ex5-2B 答案
#### 任务描述
1. **读取 `diabetes.csv` 文件**,将数据保存到 `datas` 变量。
2. **统计并显示**:
- 怀孕次数的最大值
- BMI的平均值
- 舒张压的标准差
- 血清胰岛素的中位数
3. **将血糖单位从 mg/dL 换算成 mmol/L**,并保存到新列 `Glucose_mmol_L`。
4. **将修改后的数据保存到 `diabetesresult.csv` 文件**,保留三位小数。
#### 代码实现
```python
import numpy as np
import pandas as pd
# 读取数据
datas = pd.read_csv("diabetes.csv")
# 统计并显示
print(f"怀孕次数的最大值为: {datas['Pregnancies'].max()}")
print(f"BMI的平均值为: {datas['BMI'].mean():.2f}")
print(f"舒张压的标准差为: {datas['BloodPressure'].std():.2f}")
print(f"血清胰岛素的中位数为: {datas['Insulin'].median()}")
# 将血糖单位从 mg/dL 换算成 mmol/L
datas['Glucose_mmol_L'] = datas['Glucose'] / 18
# 插入新列
datas.insert(loc=1, column='Glucose_mmol_L', value=datas['Glucose_mmol_L'])
# 保存到新文件
datas.to_csv("diabetesresult.csv", index=False, float_format='%.3f')
```
### Ex5-3B 答案
#### 任务描述
1. **导入 pandas**。
2. **从给定数据构造 DataFrame**,设置列标签和行标签。
3. **修改列标签**,将 "weight" 改为 "weight_1"。
4. **显示所有行标签(床位)**。
5. **显示特定患者的详细信息**。
6. **显示前几位患者的详细信息**。
#### 代码实现
```python
import pandas as pd
# 构造 DataFrame
data = [
["paul", 67, 8.1, 84.3, 174],
["tom", 55, 11.2, 89.2, 170],
["bob", 34, 7.4, 77.5, 172],
["jack", 48, 9.7, 79.1, 165],
["adam", 44, 7.9, 87.5, 168],
["edward", 58, 9.4, 69.1, 175]
]
columns = ["patient", "age", "GLU", "weight", "height"]
index = ["B01", "B04", "C02", "C09", "D03", "D09"]
DF1A = pd.DataFrame(data, columns=columns, index=index)
# 修改列标签
DF1A.rename(columns={"weight": "weight_1"}, inplace=True)
print(DF1A)
# 显示所有行标签
print(DF1A.index)
# 显示特定患者的详细信息
print(DF1A.loc["C02"])
print(DF1A.loc[["B04", "C09"]])
# 显示第5位患者的详细信息
print(DF1A.iloc[4])
# 显示前3位患者的详细信息
print(DF1A.head(3))
```
### Ex5-3C 答案
#### 任务描述
1. **用字典创建 DataFrame**。
2. **使用 `loc` 和 `iloc` 切片**。
3. **设置行标签**。
4. **对某一列进行统计分析**。
#### 代码实现
```python
import pandas as pd
# 创建 DataFrame
data = {
"name": ["Jack", "Mike", "Tom", "Stev", "Davie", "Jessy"],
"id": ["1001", "1002", "1003", "1004", "1005", "1006"],
"score": [65, 78, 65, 78, 98, 87]
}
df = pd.DataFrame(data)
# 打印显示 df,并查看数据
print(df)
# 使用 loc 方式取出 Mike 的名字
print(df.loc[df['name'] == 'Mike', 'name'])
# 切出列标签为 "name" 的这一列
print(df['name'])
# 使用 iloc 方式切出指定数据
print(df.iloc[[1, 3], [0, 2]])
# 设置行标签
df.index = ["A", "B", "C", "D", "E", "F"]
print(df)
# 使用 loc 方式切出指定数据
print(df.loc[['B', 'D'], ['name', 'score']])
# 使用 set_index 函数把 id 这一列设为行标签
df = df.set_index("id")
print(df)
# 分数的简单统计分析
print(df['score'].describe())
```
这些代码分别实现了三个练习的要求,希望对你有所帮助!
阅读全文