1 数据可视化
%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#加载result.csv这个数据
data=pd.read_csv('result.csv')
【思考】最基本的可视化图案有哪些?分别适用于那些场景?
1)折线图:适合属性值随连续自变量变化的走势。
2)柱状图:适合离散的特征值,利用value_counts图形化显示Series中各值的频数
3)直方图和密度图:适合数值型,可以直观的体现特征变量的分布情况。
4)热图和散点图:可以看出仓位等级与生存情况的关系最大。票价与生存情况的关系也比较大。
5)饼图:饼图能够直观显示分类数据的占比情况(占比)
用柱状图展示泰坦尼克号数据集中男女中生存人数的分布
sex = data.groupby('Sex')['Survived'].sum()
print(sex)
sex.plot.bar()
plt.title('survived_count')
plt.show()
Sex
female 233
male 109
Name: Survived, dtype: int64
sex.plot.barh()
plt.title('survived_count')
plt.show()
用柱状图展示泰坦尼克号数据集中男女中生存人与死亡人数的比例图
#计算男女中死亡人数 1表示生存,0表示死亡
#count() 方法用于统计字符串里某个字符出现的次数
sex=data.groupby(['Sex','Survived'])['Survived'].count()
sex
Sex Survived
female 0 81
1 233
male 0 468
1 109
Name: Survived, dtype: int64
#unstack:将数据的行索引转换为列索引
sex.unstack()
Survived | 0 | 1 |
---|---|---|
Sex | ||
female | 81 | 233 |
male | 468 | 109 |
#数据可视化
sex.unstack().plot.bar(stacked='True')
plt.show()
【提示】男女这两个数据轴,存活和死亡人数按比例用柱状图表示
用折线图展示泰坦尼克号数据集中不同票价的人生存和死亡人数分布情况,横轴是不同票价,纵轴是存活人数
# 计算不同票价中生存与死亡人数 1表示生存,0表示死亡
#value_counts()查看表格某列中有多少个不同值的方法,并计算每个不同值有在该列中有多少重复值。
fare_sur = data.groupby(['Fare'])['Survived'].value_counts()
fare_sur.head(20)
Fare Survived
0.0000 0 14
1 1
4.0125 0 1
5.0000 0 1
6.2375 0 1
6.4375 0 1
6.4500 0 1
6.4958 0 2
6.7500 0 2
6.8583 0 1
6.9500 0 1
6.9750 0 1
1 1
7.0458 0 1
7.0500 0 7
7.0542 0 2
7.1250 0 4
7.1417 1 1
7.2250 0 9
1 3
Name: Survived, dtype: int64
#可以将数据集依照某个字段中的数据进行排序,该函数即可根据指定列数据也可根据指定行的数据排序。
"""
by 指定列名(axis=0或’index’)或索引值(axis=1或’columns’)
axis 若axis=0或’index’,则按照指定列中数据大小排序;若axis=1或’columns’
,则按照指定索引中数据大小排序,默认axis=0
ascending 是否按指定列的数组升序排列,默认为True,即升序排列
inplace 是否用排序后的数据集替换原来的数据,默认为False,即不替换
na_position {‘first’,‘last’},设定缺失值的显示位置
"""
fare_sur=fare_sur.sort_values(ascending=False)
fig = plt.figure(figsize=(20, 18))
fare_sur.plot(grid=True)
plt.legend()
plt.show()
# 未排序
fare_sur1 = data.groupby(['Fare'])['Survived'].value_counts()
fig = plt.figure(figsize=(20, 18))
fare_sur1.plot(grid=True)
plt.legend()
plt.show()
柱状图展示泰坦尼克号数据集中不同仓位等级的人生存和死亡人员的分布情况
# 1表示生存,0表示死亡
#unstack:将数据的行索引转换为列索引
#value_counts()查看表格某列中有多少个不同值的方法,并计算每个不同值有在该列中有多少重复值。
pclass_sur = data.groupby(['Pclass'])['Survived'].value_counts().unstack()
pclass_sur.plot.bar()
<AxesSubplot:xlabel='Pclass'>
可视化展示泰坦尼克号数据集中不同年龄的人生存与死亡人数分布情况
data.Age[data.Survived==0].plot(kind='kde') #'kde'密度图
data.Age[data.Survived==1].plot(kind='kde')
plt.xlabel("age")
plt.legend((0,1),loc="best")
<matplotlib.legend.Legend at 0x2b732fd7100>
用密度图展示泰坦尼克号数据集中不同仓位等级的人年龄分布情况
data.Age[data.Pclass == 1].plot(kind='kde') #'kde'密度图
data.Age[data.Pclass == 2].plot(kind='kde')
data.Age[data.Pclass == 3].plot(kind='kde')
plt.xlabel("age")
plt.legend((1,2,3),loc="best")
<matplotlib.legend.Legend at 0x2b71d694430>
本文主要学习来源:[datawhale](https://github.com/datawhalechina/hands-on-data-analysis)