import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 读取数据 train = pd.read_csv('d:/data/heart(1).csv', encoding='gbk') # 成人正常总胆固醇:<200 mg/dl data1=train[train['chol'] > 240] data1 = data1.copy() data1['chol'] = 1 data2=train[train['chol'] < 200] data2 = data2.copy() data2['chol'] = 0 # 绘制柱状图和箱线图分析性别与血糖、年龄与血糖的关系 fig=plt.figure(figsize=(14, 14)) # 设置画布大小 plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文显示 plt.rcParams['axes.unicode_minus'] = False # 坐标轴负号正常显示 fig.add_subplot(1, 2, 1) ##第一个子图 sns.countplot(x='chol', data=df, hue='sex', palette='rainbow') ##表示绘图对象为血糖,并以性别区分。 fig.add_subplot(1, 2, 2) ##第二个子图 sns.boxplot(x='chol', y='age', data=df) plt.show()
时间: 2024-01-21 12:02:24 浏览: 22
这段代码使用了 Pandas、Matplotlib 和 Seaborn 库,对一个心脏病数据集进行了处理和可视化。具体来说:
- `pd.read_csv('d:/data/heart(1).csv', encoding='gbk')` 读取了一个名为 heart(1).csv 的 CSV 文件,并将其存储在一个 Pandas 数据帧中。
- `train[train['chol'] > 240]` 和 `train[train['chol'] < 200]` 分别选出了总胆固醇高于 240 mg/dl 和低于 200 mg/dl 的两组数据,并将它们存储在两个新的数据帧中。然后,为了绘制柱状图,将这些数据分别赋值为 1 和 0。
- `fig=plt.figure(figsize=(14, 14))` 创建了一个大小为 14x14 的 Matplotlib 画布。
- `plt.rcParams['font.sans-serif'] = 'SimHei'` 和 `plt.rcParams['axes.unicode_minus'] = False` 设置了 Matplotlib 中文字体和负号的显示方式。
- `fig.add_subplot(1, 2, 1)` 和 `fig.add_subplot(1, 2, 2)` 分别创建了两个子图,位置为第一行的左右两侧。
- `sns.countplot(x='chol', data=df, hue='sex', palette='rainbow')` 使用 Seaborn 中的 `countplot()` 函数绘制柱状图,其中 `x='chol'` 表示绘制的数据为总胆固醇(即上面处理过的数据),`data=df` 表示使用的数据帧为原始数据集,`hue='sex'` 表示以性别区分不同的柱状图,`palette='rainbow'` 表示使用彩虹色调。这个柱状图用于分析性别与总胆固醇的关系。
- `sns.boxplot(x='chol', y='age', data=df)` 使用 Seaborn 中的 `boxplot()` 函数绘制箱线图,其中 `x='chol'` 表示绘制的数据为总胆固醇(即上面处理过的数据),`y='age'` 表示另一个变量为年龄,`data=df` 表示使用的数据帧为原始数据集。这个箱线图用于分析年龄与总胆固醇的关系。
- `plt.show()` 展示绘制出来的图形。