数据可视化
首先还是导入需要的库和数据,这次除了导入numpy、pandas还要导入matplotlib包。
%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
text = pd.read_csv('C:\\Users\\wensa\\Desktop\\hands-on-data-analysis-master\\第二章项目集合\\result.csv')
text.head()#导入数据
任务一:跟着书本第九章,了解matplotlib,自己创建一个数据项,对其进行基本可视化
因为没有书本,就在网上查了一些matplotlib的资料。
Matplotlib 是一个全面的库,用于在 Python 中创建静态、动画和交互式可视化。
【思考】最基本的可视化图案有哪些?分别适用于那些场景?(比如折线图适合可视化某个属性值随时间变化的走势)
思考:柱状图、折线图、饼图、散点图。
柱状图一般用来比较各组数据的差别。
折线图一般用来显示随时间或有序类别而变化的趋势。
饼图一般用来观察各个组成部分的占比。
散点图一般用来考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式,通常用于比较跨类别的聚合数据。
任务二:可视化展示泰坦尼克号数据集中男女中生存人数分布情况(用柱状图试试)。
pyplot 子模块提供 bar() 函数来生成条形图。
Matplotlib 可以将直方图的数字表示转换为图形。 pyplot 子模块的 plt() 函数将包含数据和 bin 数组的数组作为参数,并转换为直方图。
图形由 show() 函数显示。
参考:菜鸟教程:NumPy Matplotlib
sex = text.groupby('Sex')['Survived'].sum()
sex.plot.bar()
plt.title('survived_count')
plt.show()
【思考】计算出泰坦尼克号数据集中男女中死亡人数,并可视化展示?如何和男女生存人数可视化柱状图结合到一起?看到你的数据可视化,说说你的第一感受(比如:你一眼看出男生存活人数更多,那么性别可能会影响存活率)。
思考:在做出泰坦尼克号数据集中男女中死亡人数,还需要做成堆积柱状图,对比泰坦尼克号上原本的男女人数对比。
任务三:可视化展示泰坦尼克号数据集中男女中生存人与死亡人数的比例图(用柱状图试试)
text.groupby(['Sex','Survived'])['Survived'].count().unstack().plot(kind='bar',stacked='True')
plt.title('survived_count')
plt.ylabel('count')
任务四:可视化展示泰坦尼克号数据集中不同票价的人生存和死亡人数分布情况。(用折线图试试)(横轴是不同票价,纵轴是存活人数)
fare_sur = text.groupby(['Fare'])['Survived'].value_counts().sort_values(ascending=False)
fare_sur#先进行排序
# 排序后绘折线图
fig = plt.figure(figsize=(20, 18))
fare_sur.plot(grid=True)
plt.legend()
plt.show()
任务五:可视化展示泰坦尼克号数据集中不同仓位等级的人生存和死亡人员的分布情况。(用柱状图试试)
# 1表示生存,0表示死亡
pclass_sur = text.groupby(['Pclass'])['Survived'].value_counts()
pclass_sur
import seaborn as sns
sns.countplot(x="Pclass", hue="Survived", data=text)
【思考】看到这个前面几个数据可视化,说说你的第一感受和你的总结
思考:任务二,任务三中就能看出,虽然泰坦尼克号上的女性总体占比少,但是存活下来的女性占比较多,男性死亡人数占比多。任务四中,也只能看出购买票价高的人少,票价人数低的的人数还是较多。任务五中柱状图的对比可以看出第三仓位的死亡人数占第三仓位总人数较多,可以看出仓位对死亡人数也有影响,很明显,第一仓位的存活占比就较多。
任务六:可视化展示泰坦尼克号数据集中不同年龄的人生存与死亡人数分布情况。(不限表达方式)
facet = sns.FacetGrid(text, hue="Survived",aspect=3)
facet.map(sns.kdeplot,'Age',shade= True)
facet.set(xlim=(0, text['Age'].max()))
facet.add_legend()
2.7.7 任务七:可视化展示泰坦尼克号数据集中不同仓位等级的人年龄分布情况。(用折线图试试)
text.Age[text.Pclass == 1].plot(kind='kde')
text.Age[text.Pclass == 2].plot(kind='kde')
text.Age[text.Pclass == 3].plot(kind='kde')
plt.xlabel("age")
plt.legend((1,2,3),loc="best")
总结
使用数据可视化可以让我们提取出我们需要观察的数据项,更直观地看出这些看起来很繁杂的数据想表达什么,从中我们能得到什么信息。我认为数据可视化是数据分析中很重要的一部分。