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类型的数据集
参数
sep: 分隔符,一般csv文件会用,作分隔符
encoding: 编码方式,一般用utf-8编码
数据的统计可视化
本文涉及到的plt.plot功能强大,包含大量实用参数,请自行查阅官方文档
数据的简单统计描述
连续(数值型):df['WoodDeckSF'].describe()
离散:df['MSZoning'].describe()
直方图+kde曲线
直方图+kde曲线:sns.distplot(df['WoodDeckSF'])
参数:
y轴: 概率密度
bins: 指定直方图的桶个数,若未指定,则为API会提供一个默认合适的大小。桶是均分的,有时可能会想知道桶的具体大小是多少,就需要指定bins,然后计算 每个桶的大小*density 即可得到直方图每个区域代表的数量多少
hist=True: 显示直方图
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), 指定每个扇区距离圆心的放置距离