课程学习来源:b站up:【蚂蚁学python】
【课程链接:【【数据可视化】Python数据图表可视化入门到实战】】
【课程资料链接:【链接】】
python:3.12.3
所有库都使用最新版。
Python绘制小提琴图
小提琴图(violin plot)用于显示数据分布及其概率密度
- 图形中间相当于箱线图:黑色粗条代表四分位范围,分别展示中位数、25%分位数、75%分位数;
- 两侧的曲线代表核密度图:越胖表示该位置的数据数量越多
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="whitegrid")
1.读取保险费数据集
df = pd.read_csv("../DATA_POOL/PY_DATA/ant-learn-visualization-master/datas/insurance/insurance.csv")
df.head()
age | sex | bmi | children | smoker | region | charges | |
---|---|---|---|---|---|---|---|
0 | 19 | female | 27.900 | 0 | yes | southwest | 16884.92400 |
1 | 18 | male | 33.770 | 1 | no | southeast | 1725.55230 |
2 | 28 | male | 33.000 | 3 | no | southeast | 4449.46200 |
3 | 33 | male | 22.705 | 0 | no | northwest | 21984.47061 |
4 | 32 | male | 28.880 | 0 | no | northwest | 3866.85520 |
2.全部保险费的数据分布
plt.figure(figsize=(10,6))
sns.violinplot(x=df["charges"])
<Axes: xlabel='charges'>
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
3.性别男女与保险费的关系分布
plt.figure(figsize=(10,6))
sns.violinplot(x="sex", y="charges", data=df)
<Axes: xlabel='sex', ylabel='charges'>
4.是否抽烟与保险费的关系分布
plt.figure(figsize=(10,6))
sns.violinplot(x="smoker", y="charges", data=df)
<Axes: xlabel='smoker', ylabel='charges'>
5.孩子个数与保险费的关系分布
plt.figure(figsize=(10,6))
sns.violinplot(x="children", y="charges",data=df)
<Axes: xlabel='children', ylabel='charges'>
6.年龄与保险费的关系分布
df["age"]=(df["age"]/10).astype(int)
plt.figure(figsize=(10,6))
sns.violinplot(x="age", y="charges", data=df)
<Axes: xlabel='age', ylabel='charges'>