基于pandas的内置可视化

数据分析能够很好地帮我们了解数据,理解数据,能够帮助我们进行有效的特征工程,方便后续的机器学习建模。pandas作为强大的数据分析工具,提供的内置可视化功能也是十分强大的。

基本绘图

Series和DataFrame上的这个功能只是使用matplotlib库的plot()方法的简单包装实现。

%matplotlib inline
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(10,4),index=pd.date_range('2019/04/15',
   periods=10), columns=list('ABCD'))

df.plot()

在这里插入图片描述
绘图方法允许除默认线图之外的少数绘图样式。 这些方法可以作为plot()的kind关键字参数提供。这些包括 -

  • barbarh为条形
  • hist为直方图
  • boxplot为盒型图
  • area为“面积”
  • scatter为散点图
    我们根据不同的了解数据的需求来选择绘图样式。
    下图为我在网上看到的一张图我觉得很棒,搬运过来:
    在这里插入图片描述

条形图

条形图通常用来比较不同类的大小,而堆积条形图通常用来比较不同类占比。

df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot.bar()

在这里插入图片描述
如果我们要生成一个堆积条形图,可以指定stacked参数为True.

df.plot.bar(stacked=True)

在这里插入图片描述
要获得水平条形图,使用barh()方法

df.plot.barh(stacked=True)

在这里插入图片描述

直方图

可以使用plot.hist()方法绘制直方图。我们可以指定bins的数量值。
直方图主要为了了解数据的分布情况,一般用于连续值的列,指定bins数进行区间划分,然后统计每个bin的数量进行展示。

df = pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c':
np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])

df.plot.hist(bins=20)

在这里插入图片描述
如果要将三个直方图分开绘制,则使用df.hist(bins=20)

箱线图

对于数值变量,我们不仅需要了解数据的集中趋势(如均值),还要了解数据的离散趋势,即观测值偏离其中心的趋势。而箱线图能够很好地反应数据的离散趋势,受极端值影响较小。
首先直观了解一下四分位数、分位点和四分位距的概念,如下图所示:
在这里插入图片描述
基于这些指标我们能绘制出箱线图:
在这里插入图片描述

  • 极端值/异常值(outliers)

    • 在一组数据中,小于Q1-1.5IQR或者大于Q3+1.5IQR的数据是疑似极端值;
    • 在一组数据中,小于Q1-3IQR或者大于Q3+3IQR的数据是极端值。
      修正箱线图不同于箱线图,它能够反映出数据的极端值情况。如下图所示:
      在这里插入图片描述
      pandas内置的箱线图可以如下方式绘制:
    df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])
    df.plot.box()
    

在这里插入图片描述
如图所示,上下边缘到四分位线的距离不对称,可以判断这里绘制的箱线图的上下边缘表示的是最大最小值。

区域块图

可以使用Series.plot.area()DataFrame.plot.area()方法创建区域图形,主要用于相对和绝对差异的对比。

df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df.plot.area()

在这里插入图片描述

散点图

绘制散点图可看出两个变量之间的关系。
可以使用DataFrame.plot.scatter()方法创建散点图

df = pd.DataFrame(np.random.rand(50, 4), columns=['a', 'b', 'c', 'd'])
df.plot.scatter(x='a', y='b')

在这里插入图片描述

饼状图

饼状图用来反映各类的百分比情况。
饼状图可以使用DataFrame.plot.pie()方法创建

df = pd.DataFrame(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], columns=['x'])
df.plot.pie(subplots=True)

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值