新手数据比赛中数据处理方法小结(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.块元素垂 ...
随机推荐
- Jenkins 学习笔记(二):很简单的发布一次
发布思路:从 github 拉取一些文件,然后推送到 Target server 的某个目录. 准备 1. Jenkins 需要安装的插件:『 Publish over SSH 』 2. 全局配置:系 ...
- react-native-scrollable-tab-view组件的简单使用
react-native-scrollable-tab-view是一个滑动tab组件,可在tab之间进行切换显示内容 https://github.com/skv-headless/react-nat ...
- angular4.0路由传递参数、获取参数最nice的写法
研究ng4的官网,终于找到了我想要的方法.我想要的结果是用'&'拼接参数传送,这样阅读上是最好的.否则很多'/'的拼接,容易混淆参数和组件名称.一般我们页面跳转传递参数都是这样的格式:http ...
- checkbox 全选或取消
Html: 点击label 也能 check <div class="checkbox"> <input class ...
- hexo next主题为博客添加分享功能
title: hexo next主题为博客添加分享功能 date: 2018-01-06 20:20:02 tags: [hexo博客, 博客配置] categories: hexo next主题配置 ...
- MyEclipse2015上传项目到GitHub(很详细)
MyEclipse 2015 默认已经安装了git插件,在MyEclipse中上传项目到github的步骤如下: 1.github官网(https://github.com)申请开通账号(略) 1.1 ...
- 使用js对form表单base64加密
利用js可以对前台数据加密,以防止被恶意获取,以下代码,用base64对数据进行加密,可以在后台进行解密. 引入的js <script type="text/javascript&qu ...
- [小程序开发] 微信小程序audio音频播放组件+api_wx.createAudioContext
引言: audio是微信小程序中的音频组件,可以轻松实现小程序中播放/停止音频等自定义动作. 附上微信小程序audio组件的相关属性说明:https://mp.weixin.qq.com/debug/ ...
- <魔域>按键精灵脚本
用了三天时间才写完,实现了通过图片识别读取坐标数值,自动寻路等简单功能. 主要的难点在于游戏中的坐标系,和电脑屏幕的坐标系存在三维旋转关系,难以换算. //全局变量:第一个数左上右下坐标 Global ...
- SSE图像算法优化系列十三:超高速BoxBlur算法的实现和优化(Opencv的速度的五倍)
在SSE图像算法优化系列五:超高速指数模糊算法的实现和优化(10000*10000在100ms左右实现) 一文中,我曾经说过优化后的ExpBlur比BoxBlur还要快,那个时候我比较的BoxBlur ...