代码库:数据可视化

Intro

  • 本文用于整理数据预处理过程中的常见基础代码,不讲解背景知识。

导入常用库

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import importlib
import sklearn as sk
from importlib import reload

# 若是在mac OS 下使用Jupyter notebook or jupyter lab
# 这样可以使用高清视图呈现数据可视化结果
%matplotlib inline
%config InlineBackend.figure_format = 'retina'

加载数据集

  • sklearn自带数据集加载,用于自行练习
# 数据集加载:sklearn自带数据集
# load_* 同样的方式可以加载其它学多小体积的数据集
from sklearn.datasets import load_iris
iris_data = load_iris()

# 数据集的描述信息
print(iris_data.DESCR)

# features
iris_data.data

# labels
iris_data.target

  • 加载外部数据集,如csv
df = pd.read_csv("./train.csv")

# 以pd.read_*还有很多类似的加载数据集的方法。
# 可以用同样的方式加载json html类型的数据集
  • 参数
    1. sep: 分隔符,一般csv文件会用,作分隔符
    2. encoding: 编码方式,一般用utf-8编码

数据的统计可视化

本文涉及到的plt.plot功能强大,包含大量实用参数,请自行查阅官方文档

数据的简单统计描述

  • 连续(数值型):df['WoodDeckSF'].describe()

在这里插入图片描述

  • 离散:df['MSZoning'].describe()

在这里插入图片描述

直方图+kde曲线

  • 直方图+kde曲线:sns.distplot(df['WoodDeckSF'])

在这里插入图片描述

  • 参数:
    1. y轴: 概率密度
    2. bins: 指定直方图的桶个数,若未指定,则为API会提供一个默认合适的大小。桶是均分的,有时可能会想知道桶的具体大小是多少,就需要指定bins,然后计算 每个桶的大小*density 即可得到直方图每个区域代表的数量多少
    3. hist=True: 显示直方图
    4. kde=True: 显示kde曲线

箱型图

在这里插入图片描述

  • 如果一个值小于QL-1.5IQR或大于QU+1.5IQR的值,则被称为异常值。QL为下四分位数,表示全部观察值中有四分之一的数据取值比它小;QU为上四分位数,表示全部观察值中有四分之一的数据取值比它大;IQR为四分位数间距,是上四分位数QU与下四分位数QL的差值,包含了全部观察值的一半。

  • sns.boxplot(data=df['LotFrontage'])

在这里插入图片描述

  • sns.boxplot(x = 'MSZoning', y = 'LotFrontage', data = df.loc[:, ['MSZoning','LotFrontage']])

在这里插入图片描述

  • sns.boxplot(data=df['LotFrontage'], whis=10) 注意观察最大值和最小值的变化

在这里插入图片描述

  • sns.boxplot(data=df['LotFrontage'], whis=30)

在这里插入图片描述

  • 参数
    • data: 数据集
    • x
    • y
    • whis: 原箱型图中,最大值取数据集中 小于等于 QU + 1.5 * IQR的最大值,最小值取 大于等于 QL - 1.5 * IQR的最小值,这个1.5就是whis

曲线图

  • plt.plot(np.linspace(0,10,1000), np.sin(np.linspace(0,10,1000)), '--')

在这里插入图片描述

  • 参数
    • 第一个参数:x
    • 第二个参数:y
    • 第三个参数:点线样式
    • 关于第三个参数,请自行参阅官方文档

散点图

  • sns.scatterplot(x = 'LotFrontage', y = 'LotArea', data = df.loc[:, ['LotFrontage','LotArea']])

在这里插入图片描述

  • plt.plot(df.LotFrontage, df.LotArea, 'go', markersize=10, markeredgecolor='white')

在这里插入图片描述

  • 参数(不要带参数名,直接传参即可,否则会报错
    • 第一个参数(x):x轴数据
    • 第二个参数(y):y轴数据
    • 第三个参数:指定点样式,颜色等
    • markeredgecolor: 点边颜色
    • markersize: 点大小
  • plt.scatter(x = df.LotFrontage, y = df.LotArea, edgecolors='white')

在这里插入图片描述

  • 参数:
    • x
    • y
    • edgecolors: 点边颜色
    • s: 点大小参数,若为标量则是统一设置相同大小,若为n维(n是数据集大小)向量则每个点设置不同大小
    • c: 点颜色,同s
    • marker: 点样式
    • alpha: 透明度,0(透明)~ 1(非透明)

散点图个人更习惯使用scatter

扇形图

  • plt.pie(x = df.groupby('MSZoning').count().Id, labels = df.groupby('MSZoning').count().Id.index,\ radius=3, autopct="%.2f%%", shadow=True, explode=[0, 1, 0, 0, 0])

在这里插入图片描述

  • 参数:
    • x: 数据集
    • labels: 给每个饼对应的标签
    • radius: 指定圆半径
    • autopct="%.2f%%": 在每个扇区显示小数点后两位精度的百分比
    • pctdistance: 百分比距离圆心的放置距离
    • labeldistance: 标签距离圆心的放置距离
    • shadow: 阴影
    • explode: array, len(array) = len(x), 指定每个扇区距离圆心的放置距离

多子图数据可视化


版权声明:本文为qq_29575471原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。