Summary of learning data analysis(四)

Summary of learning data analysis(四)

数据可视化

在进行数据可视化时,经常会使用到两个可视化库,seaborn库和matplotlib库

difference&connection

seaborn库使用matplotlib库作为底层,正如某位大牛所言“matplotlib试着让表达简单的事情更加简单,表达困难的事情变得可能,那么seaborn就是让表达困难的事情变得简单”,使用matplotlib库最大的困难是其默认的各种参数,而seaborn则避免这个问题。简而言之,seaborn较于matplotlib更高级,但是matplotlib的困难也是其特点所在,各种参数的设置可以更好的满足designer的个性化需求。在对于创建用于打印或者网页的静态图形,建议默认使用matplotlib和附加的库,如pandas和seaborn

matplotlib

导入绘图库库
通常采用如下代码引入matplotlib绘图库

import matplotlib.pyplot as plt
## 在Jupyter notebook进行交互式绘图常补充
# %matplotlib notebook

绘图
利用pyplot进行绘图的流程大致如下
在这里插入图片描述

  • 第一部分

    • 创建画布:plt.figure(n),n为画布编号,可不填。事实上,这一步也可省略,直接执行第二步,因为直接执行第二步时后台会自动执行这一步
    • 创建子图并选定子图:plt.subplot(2,2,1),将当前画布分为四个绘图区域(axes),221(中间逗号可省略)表示将画布分为两行两列,并在第一个绘图区域绘图
  • 第二部分

    • 绘图:plt.plot(x,y,'g--'),matplotlib的plot函数接受一组X和Y坐标,还可以接受一个表示颜色和线型的字符串缩写,关于添加标题等操作下面进行统一总结
  • 第三部分

    • 显示图片:plt.show()
    • 保存图片:plt.savefig("xxx.svg")(将图表保存为SVG格式)

matplotlib操作汇总

  • 默认可视化操作
代码说明
plt.plot()画图
plt.show()显示
  • 设置参数
代码说明
plt.xticks(rotation)变量名倾斜
plt.xlable(’“变量名”)x轴名称
plt.ylable(“变量名”)y轴名称
plt.title(“标题名”)标题名称
  • 子图
代码说明
fig=plt.figure指定默认画图空间
fig.add_subplot(4,1,x)x代表相对位置
  • 加注释
代码说明
plt.legend(loc=‘best’)'best’代表注释框的位置
  • 绘图种类
代码说明
fig,ax=plt.subplots()ax是画图的轴,实际画图;fig用来设置参数
ax.bar(bar_positions, bar_heights, 0.5)柱形图—0.5代表柱宽
ax.barh()橫柱形图
ax.scatter(x, y)散点图
ax.hist(y, range(4,5), bins=20)直方图—range设置了值的范围
ax.set_ylim(0.5)直方图—设置y轴范围
ax.boxplot()盒图
  • 在某元素上加文字
代码说明
ax.text(x, y, ‘text’)加text

seaborn

使用seaborn时,可以使用库本身提供的内置数据集,也可以加载通过pandas导入的dataframe/series数据。
若是使用内置的seaborn数据集,可以使用load_dataset()函数,要查看内置的所有数据集可以查看,下面来使用内置数据集进行绘图分析https://github.com/mwaskom/seaborn-data

# Import necessary libraries
import seaborn as sns
import matplotlib.pyplot as plt

# Load iris data
iris = sns.load_dataset("iris")

# Construct iris plot
sns.swarmplot(x="species", y="petal_length", data=iris)

# Show plot
plt.show()

在这里插入图片描述
(ps:在运行代码时可能会出现<urlopen error [Errno 11004] getaddrinfo failed >的报错信息,关于解决方案可参考:https://blog.csdn.net/qq_43474959/article/details/107902588

至于使用通过pandas导入的数据集进行绘图分析,方法大同小异,在这仅给出一份优秀博客的链接供参考:https://www.jianshu.com/p/5ff47c7d0cc9

seaborn操作汇总

  • Seaborn库是在Matplotlib库基础上的封装

  • 设置风格

    • sns.set():默认风格 sns.set_style(“风格”):5种风格 with
      sns.axes_style(“风格”):with下的语句全部使用这种风格
  • 布局

    • sns.despline(offset, left):设置轴线的偏置及显示
      sns.set_context(“paper”):设置图中曲线大小
  • 调色板:sns.color_palette(),共有6个主题

    • 圆形画板:sns.color_palette(“hls”)
    • 成对:“Paired”
    • 连续型
      • sns.color_palette(“Blues”):由浅到深
      • sns.color_palette(“Blues_r”):由深到浅
      • sns.light_palette(“green”):由浅到深,reverse=True表示由深到浅
      • sns.dark_palette(“green”):由深到浅
    • 线型:sns.cubehelix_palette(8, start, rot)
  • 变量分析

    • 单变量:sns.distplot(x, kde, bins, fit)——直方图
      • x:变量
      • kdn:估计和密度
      • bins:将x轴分为几份
      • fit:分布状态
    • 双变量:
      • sns.jointplot(x, y, data)——散点图
      • sns.jointplot(x, y, kind=“hex”,
        color)——可体现数据密度
    • 多变量
      • sns.pairplot():体现两两变量之间的关系
      • sns.stripplot(x, y, data):不推荐,数据量大时连成一条线
      • 优化方法:
        • sns.stripplot(x, y, data, jitter=True)——加小幅度的抖动
        • sns.swamplot(x, y,data)——树状
        • sns.violinplot(x, y, hue, data, split)——小提琴图
  • 回归分析:regplot,lmplot

    • sns.load_dataset(“数据”)——下载数据
    • sns.regplot(x, y, data, jitter)
  • 分类分析

    • sns.barplot(x, y, hue, data):条形图,描绘整体趋
    • sns.pointplot(x, y, hue,data):点图,描绘变化差
    • sns.factorplot(x, y, data, kind):多层面板分类图
  • Facetgrid——展示子集

    • 使用方法
      • g=sns.FacetGrid(data, col)
      • g.map(plt.hist, “变量”)
    • 设置参数
    • g.set_axis_labels():轴的名称
    • g.set(xticks, yticks):x,y的取值
    • g.fig.subplots_adjust(wspace, hspace):间隙
    • 多变量
      • g.PairGrid()
      • g.map_diag()
      • g.map_offdiag()
  • 热度图:sns.heatmap(data, vmin, vmax, center, annt,fmd, linewidth, cmap)

    • annot:在每一格中显示数字
    • fmd:显示数字的格式
    • linewidth:格间距离
    • cmap:颜色图

task Ⅳ

reflection:基本的可视化图案及应用场景

solution:基本可视化图案如下汇总

  • 折线图

    • 简单线性图
    • 样式较全的线性图
    • 多条折线
  • 条状图

    • 垂直条状图
    • 水平条状图
  • 柱状图

  • 饼图

  • 散点图

  • 直方图

    • 简单直方图
    • 高斯分布直方图/频率分布直方图
  • 箱线图

应用场景:老铁们,这个应该不需要说太多吧,初高中知识哈,不清楚的话,赶紧去找找体育老师~~(手动狗头)

Titanic数据可视化

## 导库(在jupyter notebook中运行)
%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

## 加载数据并简单查看
text = pd.read_csv('D:/contest/kaggle/Data Analisis/data/result.csv')
#text.head()

## 可视化数据集中男女生存人数分布情况
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')

在这里插入图片描述

## 可视化数据集中不同票价的人生存和死亡人数分布情况
## 计算不同票价中生存与死亡人数 1表示生存,0表示死亡
fare_sur = text.groupby(['Fare'])['Survived'].value_counts()
# 未排序绘折线图
fig = plt.figure(figsize=(20, 18))
fare_sur.plot(grid=True)
plt.legend()
plt.show()

在这里插入图片描述

## 可视化数据集中不同票价的人生存和死亡人数分布情况
## 计算不同票价中生存与死亡人数 1表示生存,0表示死亡
fare_sur = text.groupby(['Fare'])['Survived'].value_counts().sort_values(ascending=False)
# 排序后绘折线图
fig = plt.figure(figsize=(20, 18))
fare_sur.plot(grid=True)
plt.legend()
plt.show()

在这里插入图片描述
conclusion:由上面两图可发现,不排序虽然可以观测到survived人数最值所对应票价,但无法观测出趋势如何,因此需要排序后再绘图,所得图像更加直观,所含信息量更大。

## 可视化数据集中不同仓位等级的人生存和死亡人员的分布情况
# 1表示生存,0表示死亡
pclass_sur = text.groupby(['Pclass'])['Survived'].value_counts()

sns.countplot(x="Pclass", hue="Survived", data=text)

在这里插入图片描述
conclusion:乘客社会等级越高,幸存率越高

facet = sns.FacetGrid(text, hue="Survived",aspect=2)
facet.map(sns.kdeplot,'Age',shade= True)
facet.set(xlim=(0, text['Age'].max()))
facet.add_legend()
plt.xlabel('Age') 
plt.ylabel('density') 

在这里插入图片描述
conclusion:在年龄15岁的左侧,生还率有明显差别,密度图非交叉区域面积非常大,但在其他年龄段,则差别不是很明显,认为是随机所致,因此可以考虑将此年龄偏小的区域分离出来。

## 可视化展示数据集中不同仓位等级的人年龄分布
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")

在这里插入图片描述
单有此图并不能展示出仓位等级和年龄之间明显存在某种关系

summary

数据可视化对于我们理解数据相关性提供了很大的帮助,我们也可以通过可视化进行特征的合并等操作,为特征工程工作提供了便利。关于数据可视化,对于数据分析/挖掘人员至关重要,在现在的大数据时代,我们也经常用hive进行数据挖掘,用echarts进行数据可视化,展示大数据的魅力。

reference

https://blog.csdn.net/Lucia_0103/article/details/88549852
https://www.jianshu.com/p/5ff47c7d0cc9
https://blog.csdn.net/Andrew_ZhouC/article/details/86810505

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值