电子游戏销售之缺失值检测与处理

news2024/11/18 9:24:15

电子游戏销售之缺失值检测与处理

文章目录

  • 电子游戏销售之缺失值检测与处理
    • 0、写在前面
    • 1、数据缺失值预处理
      • 1.1 表的形状
      • 1.2 原始数据每个特征缺失和非缺失的数目
      • 1.3 每个特征缺失的率
      • 1.4 处理后各特征缺失值的数目
      • 1.5 删除缺失值后的数据展示
    • 2、替换法处理缺失值
      • 2.1 替换法
      • 2.2 替换法处理缺失值后的数据


在这里插入图片描述


0、写在前面

该篇文章的任务包括以下3个方面

  • 检测与处理缺失值
  • 建立回归模型
  • 数据可视化

实验环境

  • Python版本:Python3.9
  • Numpy版本:Python1.22.3
  • Pandas版本:Pandas1.5.0
  • scikit-learn版本:scikit-learn1.1.2
  • Matplotlib版本:Matplotlib3.5.2

原始数据

  • 数据来源:

https://www.kaggle.com/datasets/gregorut/videogamesales?resource=download
https://tianchi.aliyun.com/dataset/92584

数据字段

  • Name - 游戏名称
  • Platform - 游戏的开发平台
  • Year_of_Release - 游戏发行年份
  • Genre - 游戏类别
  • Publisher - 游戏的发布者
  • NA_Sales - 北美销售量
  • EU_Sales - 欧洲销售量
  • JP_Sales - 日本销售量
  • Other_Sales - 其他地区的销售量
  • Global_Sales - 全球销售量
  • Criticscore - 评判游戏的得分
  • Critic_Count - 评判游戏的人数
  • User_Score - 用户对于游戏的得分
  • Usercount - 给予游戏User_Score的用户人数
  • Developer - 游戏开发者
  • Rating - 评级

tp

前置准备

提前将csv数据导入到MySQL中,以便数据预处理

1、数据缺失值预处理

1.1 表的形状

使用create_engine连接MySQL,读取MySQL中的数据,并输出表的形状

import numpy as np
import pandas as pd
from sqlalchemy import create_engine

# TODO 创建数据库连接
conn = create_engine('mysql+pymysql://root:123456@localhost:3307/dataAnalysis?charset=utf8')
# TODO 读取数据
detail = pd.read_sql('video_games_sales',conn)
print('表的形状为:', detail.shape)       # 表的形状为: (16719, 16)

tp

1.2 原始数据每个特征缺失和非缺失的数目

使用detail.isnull().sum()detail.notnull().sum()即可

print('detail每个特征缺失的数目为:\n',detail.isnull().sum())
print('detail每个特征非缺失的数目为:\n',detail.notnull().sum())

tp

tp

1.3 每个特征缺失的率

使用detail.isnull().sum() / detail.shape[0] * 100即可计算出缺失率

naRate = (detail.isnull().sum() / detail.shape[0] * 100).astype('str')+'%'
print('detail每个特征缺失的率为:\n',naRate)

tp

1.4 处理后各特征缺失值的数目

先使用删除法删除掉缺失值,然后统计处理后各个特征值的缺失数目

detail.dropna(axis = 1, how = 'all', inplace = True)
print('经过缺失值删除处理各特征缺失值的数目为:\n', detail.isnull().sum())

tp

1.5 删除缺失值后的数据展示

使用detail.shape查看删除法预处理后的数据

print('去除缺失的列前detail的形状为:', detail.shape)
print('去除(any)缺失的列后detail的形状为:',detail.dropna(axis = 1,how ='any').shape)
print('去除(all)缺失的列后detail的形状为:',detail.dropna(axis = 1,how ='all').shape)

tp

2、替换法处理缺失值

本次实验使用替换法预处理缺失值数据

2.1 替换法

operate()
print('detail使用替换法处理后每个特征缺失的数目为:\n',detail.isnull().sum())
print('缺失值处理后的数据为:')
print(detail)

Note:其中,operate()方法是用于替换缺失值操作的

tp

对于数值字段,如果是缺失值,使用-1代替;如果不是,则根据字段的含义(xxx),将缺失值替换为未知xxx;对于rank字段,缺失值使用’Z’代替

operate()方法代码如下:

def operate() :
    for i in range(0, len(detail)):
        if i == 1 :
            print(detail.iloc[i][10], "---------")
        name = detail.iloc[i][0]
        genre = detail.iloc[i][3]
        critic_score = detail.iloc[i][10]
        critic_count = detail.iloc[i][11]
        user_score = detail.iloc[i][12]
        user_count = detail.iloc[i][13]
        developer = detail.iloc[i][14]
        rating = detail.iloc[i][15]
        if name == None:
            detail._set_value(i, "Name", '未知游戏')
        if genre == None:
            detail._set_value(i, "Genre", '未知类别')
        if critic_score == None:
            cs = int (-1)
            detail._set_value(i, "Critic_Score", cs)
        if critic_count == None:
            cc = int(-1)
            detail._set_value(i, "Critic_Count", cc)
        if user_score == None:
            us = int (-1)
            detail._set_value(i, "User_Score", us)
        if user_count == None:
            uc = int (-1)
            detail._set_value(i, "User_Count", uc)
        if developer == None:
            detail._set_value(i, "Developer", '未知开发者')
        if rating == None:
            detail._set_value(i, "Rating", 'Z')
    detail.to_csv('../out/vgs1.csv', index=False)

2.2 替换法处理缺失值后的数据

缺失值处理后的数据展示:

在这里插入图片描述

结束!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/133529.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.Springboot配置细节

一、参考资料 13-SpringBoot配置-项目外部配置加载顺序_哔哩哔哩_bilibili 二、配置 2.1 配置文件 注意变量后面是:,而不是等号 2.2 读取配置文件 2.2.1 Value 比如配置文件application.properities中定义了一个name,其值为abc。 代码里面只需按照如…

一、软件安装与配置

一、PyTorch环境软件安装与配置 1.安装anaconda参考 anaconda老版本下载方法(如何查看anaconda与python版本对应关系)及安装教程_breadth_的博客-CSDN博客_anaconda旧版本下载 2.在anconda下安装和激活pytorch环境 此步并没有下载pytorch 3.下载pyto…

云计算运营—03 KVM虚拟化技术方案介绍

KVM虚拟化技术方案介绍 1.背景介绍 KVM(Kernel-based Virtual Machine) 开源全虚拟化方案 支持体系结构 x86(32位,64位)、IA64、PowerPC、S390 依赖x86硬件支持:Intel VT-x/ AMD-V内核模块,使得linux内核成为hypervisor XEN架构 …

《B-树》

tips:B-树读成b树,并不是b减树 【一】基本搜索结构 种类数据格式时间复杂度顺序查找无要求O(N)二分查找有序O(log2N)二叉搜索树无要求O(N)二叉平衡树(AVL和红黑树)无要求,最后随机O(log2N)哈希无要求O(1)位图无要求O…

linux系统中SPI驱动框架的基本原理与实现

大家好,今天主要和大家聊一聊,如何使用linux系统中SPI驱动ICM-20608六轴传感器的操作。 目录 第一:linux系统下SPI驱动框架简介 第二:SPI设备驱动编写 第三:SPI设备和驱动匹配过程 第一:linux系统下SPI驱…

MySQL数据库高级面试题(1)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java面试题…

CSDN年度征文 | 你好,2023

祝大家新年快乐~🧧🧧🧧⭐过去的2022⭐2022已成过去,2023慢步向我们走来。回首2022,这一年不是平凡的一年。这一年,有苦也有乐。冬奥会的成功举办、香港回归25周年、二十大胜利召开、航天任务圆满成功等等都…

设计 | 分享5个好用的PPT模板网站

第一PPT 这个老牌的模板网站了,全站都是免费下载,还是不错的 但是素材质量嘛,免费所以不太高。 第一PPT下载https://www.1ppt.com/ 模板狗 这个是最近发现的一个网站,其中内容比较精美。 而且不用开会员也能单独购买&#x…

【Android】APT

引言: 安卓中APT又叫Annotation Processing Tool,即注解处理器。Java中注解分为编译时注解和运行时注解,编译时注解无法通过反射的方式进行获取和处理,所以我们可以利用APT处理编译时注解。比如常见的三方库ButterKnife、ARouter…

mysql删除重复记录并且只保留一条

准备的测试表结构及数据 插入的数据中A,B,E存在重复数据,C没有重复记录 CREATE TABLE tab ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(20) DEFAULT NULL, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT13 DEFAULT CHARSETutf8; -- --------------------…

使用root用户和普通用户完成分配任务案例 ansible(1)

目录 案例一: 控制主机和受控主机通过root用户通过免密验证方式远程控制受控主机实施对应任务。 案例二: 控制主机连接受控主机通过普通用户以免密验证远程控制受控主机实施特权指定操作。 案例一: 控制主机和受控主机通过root用户通过免…

<网络概述>——《计算机网络》

目录 1.网络基础 1.1 计算机网络背景 1.2 网络发展 1.3 软件分层 1.4 网络和操作系统的关系 1.5 局域网通信的原理 2. 网络协议 2.1 网络协议初识 2.1.1 协议分层 2.2 OSI七层模型 2.3 TCP/IP五层(或四层)模型 3. 网络传输基本流程 3.1 网络传输流程图 3.2 数据包…

密码技术扫盲,Part 3:认证

个人博客 密码技术扫盲,Part 1:对称加密密码技术扫盲,Part 2:非对称加密🎯 密码技术扫盲,Part 3:认证 除了加密,还有一类用法是对信息的认证,主要包括 4 个技术 单向散…

PostgreSQL JIT 实现query性能加速的一些补充

文章目录背景Executor 本身做的一些优化LLVM JIT 的优化本地以及全局优化执行 query 时的优化JIT调度优化 过程背景 之前介绍过一次 PostgreSQL JIT with LLVM 实现,因为有一些细节没有介绍得很清楚,需要额外做一些补充。 关于LLVM 的IR 以及 如何 用LL…

11.HTML颜色、HTML脚本、字符实体、URL

1.HTML颜色 1)HTML 颜色由红色、绿色、蓝色混合而成。 2)HTML 颜色由一个十六进制符号来定义,这个符号由红色、绿色和蓝色的值组成(RGB)。 3)每种颜色的最小值是0(十六进制:#00&…

性能优化系列之怎么让图片加载得更快?

文章の目录一、压缩png1、优势2、说明文档3、安装4、使用4.1、环境4.2、示例4.3、API4.4、还有一个第三库是对当前库的封装,叫jdf-png-native【版本1.1.0,环境同node-pngquant-native】,使用方法和node-pngquant-native差不多二、压缩jpg1、优…

分享68个PHP源码,总有一款适合您

链接:https://pan.baidu.com/s/1QB61EsIl70vXx1yrJkiesA?pwdbup1 提取码:bup1 PHP源码 分享68个PHP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...,大家下载…

【树莓派不吃灰】IO篇① GPIO 开发环境

目录1. 前言1.1 4B GPIO引脚排列2. Python GPIO安装3. 基于C语言的wiringPi安装❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-01-01 ❤️❤️ 本篇更新记录 2023-01-01 ❤️🎉 欢迎关注 🔎点赞 &…

vivo 服务端监控体系建设实践

作者:vivo 互联网服务器团队- Chen Ningning 本文根据“2022 vivo开发者大会"现场演讲内容整理而成。 经过几年的平台建设,vivo监控平台产品矩阵日趋完善,在vivo终端庞大的用户群体下,承载业务运行的服务数量众多&#xff0c…

Modbus-RTU通讯协议中CRC校验

MODBUS协议中的CRC校验_RobotWoods的博客-CSDN博客_modbus crc 以下面这段收发数据为例: 发送的数据是工控机发送给plc的,他们的通信是modbus通信,前面的01。。。。。0f是实际使用的数据,具体意义可以查,后面的4位数87…