第二章:数据可视化
前期准备
% matplotlib inline
import numpy as np
import pandas as pd
import matplotlib. pyplot as plt
text = pd. read_csv( r'result.csv' )
text. head( )
2.7:如何让人一眼看懂你的数据?
2.7.1:跟着书本第九章,了解matplotlib,自己创建一个数据项,对其进行基本可视化
【思考】最基本的可视化图案有哪些?分别适用于那些场景?(比如折线图适合可视化某个属性值随时间变化的走势)
柱状图:它的适用场合是二维数据集 (每个数据点包括两个值x和y),但只有一个维度需要比较。 折线图:折线图适合二维的大数据集 ,尤其是那些趋势比单个数据点更重要的场合。 饼图:饼图是一种应该避免 使用的图表,因为肉眼对面积大小不敏感。 散点图:散点图适用于三维数据集 ,但其中只有两维需要比较。 气泡图:气泡图是散点图的一种变体,通过每个点的面积大小,反映第三维 。 雷达图:雷达图适用于多维数据 (四维以上),且每个维度必须可以排序(国籍就不可以排序)。但是,它有一个局限,就是数据点 最多6个,否则无法辨别,因此适用场合有限。
2.7.2:可视化展示泰坦尼克号数据集中男女中生存人数分布情况(用柱状图试试)
sex = text. groupby( 'Sex' ) [ 'Survived' ] . sum ( )
sex. plot. bar( )
plt. title( 'survived_count' )
plt. show( )
2.7.3:可视化展示泰坦尼克号数据集中男女中生存人与死亡人数的比例图(用柱状图试试)
text. groupby( [ 'Sex' , 'Survived' ] ) [ 'Survived' ] . count( ) . unstack( ) . plot( kind= 'bar' , stacked= 'True' )
plt. title( 'survived_count' )
plt. ylabel( 'count' )
2.7.4:可视化展示泰坦尼克号数据集中不同票价的人生存和死亡人数分布情况。(用折线图试试)(横轴是不同票价,纵轴是存活人数)
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( )
fare_sur1 = text. groupby( [ 'Fare' ] ) [ 'Survived' ] . value_counts( )
fare_sur1
fig = plt. figure( figsize= ( 20 , 18 ) )
fare_sur1. plot( grid= True )
plt. legend( )
plt. show( )
当数据量较大,折线图看不清楚时,可以采用先排序后绘图
2.7.5:可视化展示泰坦尼克号数据集中不同仓位等级的人生存和死亡人员的分布情况。(用柱状图试试)
pclass_sur = text. groupby( [ 'Pclass' ] ) [ 'Survived' ] . value_counts( )
pclass_sur
import seaborn as sns
sns. countplot( x= "Pclass" , hue= "Survived" , data= text)
使用seaborn更方便,减少代码量
2.7.6:可视化展示泰坦尼克号数据集中不同年龄的人生存与死亡人数分布情况。(不限表达方式)
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" )