“动手学数据分析”小组学习的Task04-学习日志


前言

本文章为天池“动手学数据分析”小组学习的Task04-学习日志,旨在了解数据可视化基本步骤及相关python处理。
学习网址添加链接描述:添加链接描述


一、python常用可视化图形及常用库

1.Matplotlib

Matplotlib是用于以图形方式可视化数据的最基本的库。Matplotlib的图表由两个主要部分组成,即轴(界定图表区域的线)和图形(在其中绘制轴,标题和来自轴区域的东西)。以下为Matplotlib常见可视化图形及函数:

1.1.散点图

函数:matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)
参数:
^x, y → 散点的坐标
^s → 散点的面积
^c → 散点的颜色(默认值为蓝色,‘b’,其余颜色同plt.plot( ))
^marker → 散点样式(默认值为实心圆,‘o’,其余样式同plt.plot( ))
^alpha → 散点透明度([0, 1]之间的数,0表示完全透明,1则表示完全不透明)
^linewidths →散点的边缘线宽
^edgecolors → 散点的边缘颜色(以上为基本)
^cmap → 指的是matplotlib.colors.Colormap,相当于多个调色盘的合集
^norm、vmin、vmax → 散点颜色亮度设置

1.2.直方图

函数:plt.hist(x, bins=None, range=None, density=None, weights=None, cumulative=False, bottom=None, histtype=‘bar’, align=‘mid’, orientation=‘vertical’, rwidth=None, log=False, color=None, label=None, stacked=False, normed=None, *, data=None, **kwargs)

参数:
^x: 作直方图所要用的数据,必须是一维数组;多维数组可以先进行扁平化再作图;必选参数;
^bins: 直方图的柱数,即要分的组数,默认为10;
^range:元组(tuple)或None;剔除较大和较小的离群值,给出全局范围;如果为None,则默认为(x.min(), x.max());即x轴的范围;
^density:布尔值。如果为true,则返回的元组的第一个参数n将为频率而非默认的频数;
^ weights:与x形状相同的权重数组;将x中的每个元素乘以对应权重值再计数;如果normed或^density取值为True,则会对权重进行归一化处理。这个参数可用于绘制已合并的数据的直方图;
^ cumulative:布尔值;如果为True,则计算累计频数;如果normed或density取值为True,则计算累计频率;
^ bottom:数组,标量值或None;每个柱子底部相对于y=0的位置。如果是标量值,则每个柱子相对于y=0向上/向下的偏移量相同。如果是数组,则根据数组元素取值移动对应的柱子;即直方图上下便宜距离;
^ histtype:{‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’};'bar’是传统的条形直方图;'barstacked’是堆叠的条形直方图;'step’是未填充的条形直方图,只有外边框;‘stepfilled’是有填充的直方图;当histtype取值为’step’或’stepfilled’,rwidth设置失效,即不能指定柱子之间的间隔,默认连接在一起;
^ align:{‘left’, ‘mid’, ‘right’};‘left’:柱子的中心位于bins的左边缘;‘mid’:柱子位于bins左右边缘之间;‘right’:柱子的中心位于bins的右边缘;
^ orientation:{‘horizontal’, ‘vertical’}:如果取值为horizontal,则条形图将以y轴为基线,水平排列;简单理解为类似bar()转换成barh(),旋转90°;
^ rwidth:标量值或None。柱子的宽度占bins宽的比例;
^ log:布尔值。如果取值为True,则坐标轴的刻度为对数刻度;如果log为True且x是一维数组,则计数为0的取值将被剔除,仅返回非空的(frequency, bins, patches);
^ color:具体颜色,数组(元素为颜色)或None。
^ label:字符串(序列)或None;有多个数据集时,用label参数做标注区分;
^ stacked:布尔值。如果取值为True,则输出的图为多个数据集堆叠累计的结果;如果取值为False且^ histtype=‘bar’或’step’,则多个数据集的柱子并排排列;
^ normed: 是否将得到的直方图向量归一化,即显示占比,默认为0,不归一化;不推荐使用,建议改用density参数;
^ edgecolor: 直方图边框颜色;
^ alpha: 透明度;

1.3.散点图

函数:plt.bar(x, height, width, bottom, **kwargs)

参数:
^(x, height)定义在什么位置上,多高的bar(注意X的值和X轴区别)
^width 定义bar的宽度
^bottom 定义bar的其实高度(常用于用堆叠的方式展示两组数据)

2.Seaborn

Seaborn是基于Matplotlib的库基本上,提供更好的图形和功能,导入库并使用sns.set()初始化图形样式,如果没有此命令,图形将仍然具有与Matplotlib相同的样式,常用可视化图形及函数如下。

(1)散点图:
sns.set()
sns.scatterplot()

(2)热图:
sns.heatmap

(3)配对图:
显示了所有变量之间的关系。如您有大数据集,请谨慎使用此功能,因为它必须显示所有数据点的次数与有列的次数相同,这意味着通过增加数据的维数,处理时间将成倍增加。
sns.pairplot()

(4)联合图:
sns.jointplot()

(5)ViolinPlot(小提琴图):
sns.catplot()

二、可视化示例操作

1.引入库

代码如下:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')

2.计算男女中生存人数分布情况——柱状

代码如下:

sex_survived=train_join1.groupby(['Sex','Survived'])['Survived'].count().unstack()
sex_survived.plot(kind='bar',stacked='True')
plt.title('survived_count')
plt.ylabel('count')
plt.show()

结果如下:
在这里插入图片描述

3.男女中生存人与死亡人数的比例图——柱状

代码如下:

sex_survived=train_join1.groupby(['Sex','Survived'])['Survived'].count().unstack()
sex_survived.plot(kind='bar',stacked='True')
plt.title('survived_count')
plt.ylabel('count')
plt.show()

结果如下:

在这里插入图片描述

4.不同票价的人生存和死亡人数分布情况——排序后

代码如下:

Fare_survived=train_join1.groupby('Fare')['Survived'].value_counts().sort_values(ascending=False)
fig = plt.figure(figsize=(20, 18))
Fare_survived.plot(grid=True)
plt.legend()
plt.show()

结果如下:
在这里插入图片描述

5.不同票价的人生存和死亡人数分布情况——无序

代码如下:

Fare_survived1=train_join1.groupby('Fare')['Survived'].value_counts()
fig = plt.figure(figsize=(20, 18))
Fare_survived1.plot(grid=True)
plt.legend()
plt.show()

结果如下:
在这里插入图片描述

6.不同仓位等级的人生存和死亡人员的分布情况

代码如下:

Pclass_survived1=train_join1.groupby('Pclass')['Survived'].value_counts()
print(Pclass_survived1)
sns.countplot(x="Pclass", hue="Survived", data=train_join1)
plt.show()

结果如下:
在这里插入图片描述

7.不同年龄的人生存与死亡人数分布情况

代码如下:

facet = sns.FacetGrid(train_join1, hue="Survived",aspect=3)
facet.map(sns.kdeplot,'Age',shade= True)
facet.set(xlim=(0, train_join1['Age'].max()))
facet.add_legend()
plt.show()

结果如下:
在这里插入图片描述

8.不同仓位等级的人年龄分布情况——折现

代码如下:

train_join1.Age[train_join1.Pclass == 1].plot(kind='kde')
train_join1.Age[train_join1.Pclass == 2].plot(kind='kde')
train_join1.Age[train_join1.Pclass == 3].plot(kind='kde')
plt.xlabel("age")
plt.legend((1,2,3),loc="best")
plt.show()

结果如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值