def _boxplot():
"""
箱线图:分析年龄分布。
"""
import pandas as pd
import matplotlib.pyplot as plt
train = pd.read_csv('./titanic.csv', encoding="gbk")
any(train.age.isnull()) # 检查年龄是否有缺失
# train.dropna(subset=["age"], inplace=True) # 删除含有缺失年龄的观测,即行
age_median = train.age.median() # 计算所有人年龄的中位数 -> 28.0
train.age.fillna(age_median, inplace=True) # 使用fillna填充缺失值,inplace=True表示在原数据titanic_df上直接进行修改
plt.style.use("ggplot") # 使用ggplot的图形style
plt.rcParams["font.sans-serif"] = "SimHei"
plt.rcParams["axes.unicode_minus"] = False # 设置中文、负号正常显示
plt.figure(figsize=(5, 6))
plt.boxplot(x=train.age, # 绘图数据
notch=True, # 设置中位线处凹陷
patch_artist=True, # 设置用自定义颜色填充盒形图,默认白色填充
showmeans=True, # 以点的形式显示均值
boxprops={"color": "black", "facecolor": "#F43D68"}, # 设置箱体属性,填充色and 边框色
flierprops={"marker": "o", "markerfacecolor": "#59EA3A", "color": "#59EA3A"}, # 设置异常值属性,点的形状、填充色和边框色
meanprops={"marker": "D", "markerfacecolor": "white"}, # 设置均值点的属性,点的形状、填充色
medianprops={"linestyle": "--", "color": "#FBFE00"} # 设置中位数线的属性,线的类型和颜色
)
plt.ylim(0, 85) # 设置y轴的取值范围
plt.title("乘客年龄箱线图", fontsize="xx-large", color="#DE0052")
plt.tick_params(top="off", right="off") # 去掉o箱线图的上方及右方边框的刻度标签
plt.show()
展示如下:
乘客的平均年龄为30岁,有50%的人,年龄落在22~36岁之间(看箱体);中位线偏下,上相邻值到箱子的距离比下相邻值到箱子的距离长,异常值多在上限值之外,说明年龄整体右偏;有偏大的异常值在66岁以上。
# 在一个定量变量age的基础上增加一个定性变量pclass,分析两者的关系
from matplotlib import pyplot as plt
import seaborn as sns
import pandas as pd
t_df = pd.read_csv('./titanic.csv', encoding="gbk") # 读取数据
age_median = t_df.age.median() # 计算所有人年龄的中位数 -> 28.0
t_df.age.fillna(age_median, inplace=True) # 使用fillna填充缺失值,inplace=True表示在原数据titanic_df上直接进行修改
plt.figure(figsize=(5, 6))
sns.boxplot(x="pclass", y="age", data=t_df, width=0.35)
plt.show()
end~