Task04:数据可视化

可视化思路

  • 单个变量
    • 单个定性变量:柱状图,条形图,饼图,环形图。反映定性变量的各个水平的频数分布或占比
    • 单个定量变量:直方图,箱线图。反映数据的分布情况,包括对称性,是否有离散点等
    • 单个时间序列变量:折线图。反映指标随时间的变化趋势
  • 两个变量
    • 两个定性变量:堆积柱状图。反映交叉频数的分布情况
    • 两个定量变量:散点图。反映两个变量的相关关系(正向相关、负向相关等)
    • 一个定性变量和一个定量变量:分组箱线图。用于对比不同组别在某一定量变量的平均水平,波动水平的差异
  • 更多变量
    • 涉及3个及更多的变量:气泡图,雷达图,相关系数矩阵的可视化等。

在对统计图进行描述时,应该客观陈述出图形所展现的线性,并合理推断出统计图背后的原因。

datawhale例子

任务二&三:性别和存活人数的关系

# 加载需要的库和数据
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
result = pd.read_csv('./data/result.csv')
result.head()

# 男女生存人数分布情况
number_sex = result['Survived'].groupby(result.Sex).sum()
print(number_sex)
fig = plt.figure(figsize=(8,8))
number_sex.plot.bar()
plt.title('number of suvivor')
plt.show()
plt.close()

# 男女中生存人与死亡人数的比例图
number_sex.jpg

sex_percent.jpg
  • 女性的存活人数是男性的两倍,明显高于男性。但是也有可能是女性人数原来就多的原因,所以需要进一步看存活比率
  • 可以看出女性的存活比例要远高于男性的存活比率,所以结合任务二三可以推测:性别会影响存活率

任务四:不同票价的人生存与死亡人数的分布情况

# 未排序:不同票价中生存与死亡人数
fare_unordered = result.groupby(['Fare'])['Survived'].value_counts()
fare_unordered.head()

# 排序:不同票价中生存与死亡人数
fare_ordered = fare_unordered.sort_values()
fare_ordered

# 将未排序的和排序的绘制折线图
fig = plt.figure(figsize=(20,15))
fare_unordered.plot(grid=True)
plt.legend()
plt.show()
plt.close()

# 将排序的和排序的绘制折线图
fig = plt.figure(figsize=(20,15))
fare_ordered.plot(grid=True)
plt.legend()
plt.show()
plt.close()
survive_unordered.jpg

survive_ordered.jpg
  • 从图中可以看出,当票价为6-15时死亡人数最多,当票价大于30后,死亡人数明显要少于票价较低时的死亡人数。所以可以推测是否存活和票价有一定的关系。

任务五:不同舱位等级的人生存和死亡人员的分布情况

# 1表示生存,0表示死亡
pclass_survived = result.groupby(['Pclass'])['Survived'].value_counts()
pclass_survived
import seaborn as sns
sns.countplot(x='Pclass',hue='Survived',data=result)
plt.show()
plt.close()
pclass_survived.jpg
  • 等级1的存活比例>等级2的存活比例>>等级3的存活比例
  • 等级1和2的存活比例相差不是很大,但等级3的存活比例相对来讲非常低。
  • 推测存活比例和舱位等级有关。但其实还是和票价有关。

任务六:不同年龄的人生存与死亡人数分布情况

# 方法一
result.Age[result.Survived == 0].plot(kind='kde')
result.Age[result.Survived == 1].plot(kind='kde')
plt.xlabel('Age')
plt.legend((0,1),title='Survived')
plt.show()
plt.close()

# 方法二:
facet = sns.FacetGrid(result, hue="Survived",aspect=3)
facet.map(sns.kdeplot,'Age',shade= True)
facet.set(xlim=(0, result['Age'].max()))
facet.add_legend()
plt.show()
plt.close()
age_survive1.jpg
age_survive2.jpg
  • 从图中可以看出:20-40岁的乘客居多。且通过比较存活和未存活两条曲线可以看出:
  • 在12岁以前存活的概率要大于未存活的概率。这可能是源于父母都会保护小孩。
  • 12-30岁,存活的概率小于未存活的概率,这个可能要结合其他信息进行辅助分析。
  • 30-40,50-60的存活概率大于未存活概率。
  • 40-50未存活概率大于存活概率

任务七:不同舱位等级的人的年龄分布

# 不同舱位等级的人的年龄分布情况
result.Age[result.Pclass == 1].plot(kind='kde')
result.Age[result.Pclass == 2].plot(kind='kde')
result.Age[result.Pclass == 3].plot(kind='kde')
plt.xlabel("Age")
plt.legend((1,2,3),loc="best")
plt.show()
plt.close()
  • 三者都比较接近正态分布
  • 1等级的年龄均值>2等级的年龄均值>3等级的年龄均值
  • 1等级和2等级的年龄的标准差比3等级的小

  • 总结:
    • 图形类别要结合实际要分析的问题和研究目的进行选择。
    • 图形类别要结合要分析的变量的类型进行选择。
    • 从描述性统计上一般能够得到比较直观的信息,也为后续的统计建模提供一定的分析思路,但是不能仅依赖与描述性统计和可视化结果。

你可能感兴趣的:(Task04:数据可视化)