新手数据比赛中数据处理方法小结(python)
第一次参加,天池大数据竞赛(血糖预测),初赛排名1%。因为自己对python不熟悉,所以记录一下在比赛中用到的一些python方法的使用(比较基础细节,大佬绕道):
1.数据初探
data.info() data.describe()
使用上面两行代码,可以初步的看到整个数据的分布、缺失等情况

2.数据中存在性别是字符串表示的,使用map方法,将他数字化,当然也可以使用onehot。(python把字符串数据转变成数字)
data['性别'] = data['性别'].map({'男' :1,'女':0})
3.数据中日期的处理,这里有两种,一种是直接使用get_dummies(),或者如果使用的是lgb模型可以直接使用参数categorical_feature
另外一种就是计算两个日期之间的差值:(python计算日期的差值)
import time
import datetime
#日期标准化
data['体检日期'] = pd.to_datetime(data['体检日期'],format='%d/%m/%Y')
days =[]
for day in data['体检日期']:
days.append((day-pd.to_datetime('2017-09-15')).days)
data['体检日期'] = days
在比赛中有大佬开源了自己的代码,里面对于时间的处理是:
data['体检日期'] = (pd.to_datetime(data['体检日期']) - parse('2017-10-09')).dt.days
但是,有些我在用这种方法做的时候发现,他对时间的识别很不准,比如数据如果是02-11-2017他会识别成2017年2月11日,但是其中的30-10-2017又识别的2017年10月30日。存在这种问题,所以用了之前的方法,把格式给指定,就不会出现这种问题了
4.pandas的dropna() 删除空值太多的列。在数据比赛中,竟然有大量的数据都是NAN,这时候如果太多的NAN的特征或者样本可以删除掉:
import pandas as pd data.dropna(axis =1 ,thresh = 100,inplace = True)
这里的参数解释:axis=1 表示删除的是列,如果是0则删除行,thresh=100表示如果空值超过100就删除这一列,inplace=True表示改变本身。还有参数how具体的可以参考文档:官方文档
5.使用pandas(python)读取含有中文字符的文件,在比赛中使用的数据特征名称都是中文,因为是医学词汇,看中文比较熟悉所以在读取的时候,需要指定格式:
import pandas as pd
data = pd.read_csv('...../data.csv',encoding = 'gb2312')
使用encoding指定文档格式就可以了,如果不知道文档是什么格式,或者想转换格式,可以使用notepad++打开就可以转换格式了。
6.使用time包,记录算法运行的时间。因为要考虑到算法的时间效率,可以使用time包,计算时间:
import time
import datetime
print('开始训练.....')
T0 = time.time()
..
..
..
算法
..
..
..
print('训练用时{}秒.format(time.time() - T0))
这样就能得到算法运行的用时了。
先写在这里,对于数据的可视化处理,还有很多很多的方法,细节不一一记录了。后面几项尤其是模型对比及可视化非常有帮助,等有空了再补上。
6.特征扩张
7.主成分析降维
8.归一化
9.模型数据对比
9.1 K折模型预测数据图(预测值和真实值的图)
9.2 K折模型预测数据图(拟合训练数据预测值与真实值的图)
9.3 多种模型比较结果的正态分布(方法及代码)
10. xgb特征选择
11.三大相关系数(pearson、spearman、kendall)特征选择
新手数据比赛中数据处理方法小结(python)的更多相关文章
- 使用命令行将Excel数据表导入Mysql中的方法小结
从Excel数据表导入MySQL,已经做过好几次了,但每次都会碰到各种问题:invalid utf8 character string, data too long, ...,浪费了不少时间 为了提高 ...
- [转]mysql导入导出数据中文乱码解决方法小结
本文章总结了mysql导入导出数据中文乱码解决方法,出现中文乱码一般情况是导入导入时编码的设置问题,我们只要把编码调整一致即可解决此方法,下面是搜索到的一些方法总结,方便需要的朋友. linux系统中 ...
- mysql导入导出数据中文乱码解决方法小结
linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqld ...
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12',' ...
- Web Driver 8中定位方法 ——基于python语言
WebDriver提供了八种元素定位方法,在python 语言中,方法如下: id定位:find_element_by_id("id值"):id属性是唯一的. 1 driver ...
- 数据科学中的R和Python: 30个免费数据资源网站
1 政府数据 Data.gov:这是美国政府收集的数据资源.声称有多达40万个数据集,包括了原始数据和地理空间格式数据.使用这些数据集需要注意的是:你要进行必要的清理工作,因为许多数据是字符型的或是有 ...
- shell脚本处理大数据系列之(一)方法小结
转自:http://longriver.me/?p=57 方法1: 单进程处理大规模的文件速度如(上million量级)比较慢,可以采用awk取模的方法,将文件分而治之,这样可以利用充分的利用多核CP ...
- 【转】C#绝对新手之C#中的多线程小结
大概有4种方法: Dispatcher.异步委托.手动多线程.BackgroundWorker,另外还有一个DispatcherTimer,是定时器. 其中Dispatcher与DispatcherT ...
- css中居中方法小结
---恢复内容开始--- 1.文字垂直居中 .header_nav-item{ height:38px; line-height:38px; } 即文字所在模块的高度和行高设置成一样的! 2.块元素垂 ...
随机推荐
- centos6快速搭建nginx
step1:配置本地 yum库,保存 $vi /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://ngin ...
- Linux知识--初始linux
从今天开始陆续分享Linux的知识 因为服务器基本是Linux的 所以Linux不学明白 Shell命令不熟 会让你的办事效率大打折扣. 一.Linux文件系统 Linux文件系统是从Unix结构 ...
- C#Winform 自定义透明按钮和单窗体模块化实现
技术看点 WinForm自定义控件的使用 WinForm单窗体应用如何模块化 需求及效果 又来一波 C# GDI自定义控件show .这个控件已经使用几年了,最近找出来重构一下.原来是没有边框的,那么 ...
- 读汤姆大叔《JavaScript变量对象》笔记
一段简单的JavaScript代码思考 先看一段简单的代码,打印结果是??为什么why?? 从上述打印结果不难看出,在打印基本变量num.函数表达式fn.函数声明fun时,就已经知道变量num.函数表 ...
- islider结合react的简单实用
我用islider都是结合react来使用,主要运用在移动端,做首页轮播图,或者是手机图片预览,左右滑动 首先需要 npm install islider.js --save 让后在jsx文件头部引入 ...
- top命令参数解析
PID 进程ID USER 进程所有者的用户名 PR 任务优先级 NI nice值.数值越小表示优先级越高,数值越大表示优先越低. VIRT 进程使用的虚拟内存总量,单位kb.VIRT=SWAP+RE ...
- C# 实现邮件发送
要实现邮件发送功能首先需要准备两三个邮箱测试,在这里呢准备了2个QQ邮箱和一个微软邮箱,详细请看代码. 我这里是使用QQ邮箱向另外两个邮箱发送邮件的,在开始写代码之前你需要登录你QQ邮箱进行以下几个操 ...
- ajax解决跨域问题
1.在介绍之前先介绍几个概念 json: { date: "Sun Dec 24 21:44:42 CST 2017", temperature: "21", ...
- JVM GC知识回顾
这两天刚好有朋友问到我面试中GC相关问题应该怎么答,作为java面试中热门问题,其实没有什么标准回答.这篇文章结合自己之前的总结,对GC做一个回顾. 1.分代收集 当前主流VM垃圾收集都采用" ...
- bzoj:1941: [Sdoi2010]Hide and Seek
1941: [Sdoi2010]Hide and Seek Time Limit: 16 Sec Memory Limit: 162 MBSubmit: 531 Solved: 295[Submi ...