常见数据可视化

必须要的可视化库

import matplotlib.pyplot as plt
import seaborn as sns

缺失值

查看缺失值分布

import missingno as msno
msno.matrix(data)

在这里插入图片描述
查看缺失值比例

missing = train.isnull().sum()
missing = missing[missing > 0]
missing.sort_values(inplace=True)
missing.plot.bar()

在这里插入图片描述

相关性分析

# 针对数值型特征
price_numeric = Train_data[numeric_features]
correlation = price_numeric.corr()
print(correlation['price'].sort_values(ascending=False),'\n')
f, ax = plt.subplots(figsize = (7, 7))
plt.title('Correlation of Numeric Features with Price',y=1,size=16)
sns.heatmap(correlation,square = True,  vmax=0.8)

在这里插入图片描述

展示变量两两之间的关系

sns.pairplot():展示变量两两之间的关系(线性或非线性,有无较为明显的相关关系):

  • 对角线:各个属性的直方图,用diag_kind属性控制图类型,可选"scatter"与"reg"
  • 非对角线:两个不同属性之间的相关图,用kind属性控制图类型,可选"scatter"与"reg"
  • hue :针对某一字段进行分类
sns.set()
columns = ['price', 'v_12', 'v_8' , 'v_0', 'power', 'v_5',  'v_2', 'v_6', 'v_1', 'v_14']
sns.pairplot(Train_data[columns],size = 2 ,kind ='scatter',diag_kind='kde')
plt.show()

在这里插入图片描述

查看两变量之间的关系

sns.barplot(x="Sex", y="Survived", data=train)

在这里插入图片描述

查看类别个数

sns.countplot(y = train_2['current_service'])

在这里插入图片描述

查看某连续型变量的分布

sns.distplot(data['age'])

在这里插入图片描述

data['volume'].plot()

在这里插入图片描述

回归标签可视化

定义目标变量SalePrice的可视化

def lable_cv(data_series):
    # 初始化图片
    fig = plt.figure(constrained_layout=True, figsize=(15,10))
    # 切割图片
    grid = gridspec.GridSpec(ncols=3,nrows=3,figure=fig)
    # 开始画第一个图,指定画图位置
    ax1 = fig.add_subplot(grid[0,:2])
    # 开始画图
    ax1.set_title('housePrice')
    sns.distplot(data_series,ax=ax1)  # 指定坐标

    # 画第二个图,指定位置
    ax2 = fig.add_subplot(grid[1,:2])
    ax2.set_title('QQplot')
    stats.probplot(data_series,plot=ax2) 

    #第三个图
    ax3 = fig.add_subplot(grid[:,2])
    ax3.set_title('box_plot')
    sns.boxplot(data_series,orient='v',ax=ax3)
    print('salePrice的偏度:',data_series.skew())
    print('salePrice的峰度:',data_series.kurt())

在这里插入图片描述

时间序列可视化

随着时间迁移,交通数据的流量、速度、占有率如何变化

# 将时间设置为index
data.set_index('starttime',inplace=True)
# 数据归一化
df_norm = (data - data.min()) / (data.max() - data.min())
# 绘制时间序列
plt.figure(figsize=(16,5)) 
sns.lineplot(data=df_norm,dashes=False)
plt.ylabel('norm_value')
plt.xlabel('time')

在这里插入图片描述

三维散点图

for i in range(0,2):    
    x_1 = data['occupancy'].values
    x_2 = data['speed'].values
    z = data['volume'].values

    X, Y = np.meshgrid(x_1, x_2)#网格的创建,这个是关键
    Z = -0.164*X*X + 9.566*X - 0.015*Y*Y+2.607*Y+0.0167X*Y-101.870

    plt.figure(figsize=(8,6))
    ax = plt.subplot(111, projection='3d')  # 创建一个三维的绘图工程
    #  将数据点分成三部分画,在颜色上有区分度
    ax.scatter(x_1, x_2, z, c='lightblue',label='real volume')  # 绘制数据点
    ax.scatter(x_1, x_2, Z, c='pink',label='predict volume')  # 绘制数据点
    # ax.plot_surface(X,Y,Z,color='dodgerblue')        #   mintcream   mintcream                                               
    # cmap='pink'           
    ax.legend()
    ax.set_xlabel('occupancy')
    ax.set_ylabel('speed')
    ax.set_zlabel('volume')
    if(i==1):
        ax.view_init(30, 70)  # 画出两幅图,第二幅图为旋转图

在这里插入图片描述
在这里插入图片描述

参考链接:https://mp.weixin.qq.com/s/IOlHIEIQhuIaubTeP4o39w

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值