新手数据比赛中数据处理方法小结(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.块元素垂 ...
随机推荐
- InnoDB锁
共享锁和排它锁 InnoDB实现了标准的行级锁,包括两种类型:共享锁(S)和排它锁(X) 一个共享锁(S)允许事务持有这种锁来读取一行 一个排它锁(X)允许事务持有这种锁来修改或删除一行 如果事务T1 ...
- Box布局
import sys from PyQt4 import QtCore, QtGui class MainWindow(QtGui.QWidget): def __init__(self, paren ...
- PE文件详解(八)
本文转载自小甲鱼PE文件详解系列教程原文传送门 当应用程序需要调用DLL中的函数时,会由系统将DLL中的函数映射到程序的虚拟内存中,dll中本身没有自己的栈,它是借用的应用程序的栈,这样当dll中出现 ...
- HTML知识点之表示强调的主要元素
<h1>~<h6> 在HTML中,标题(Heading)元素共有6个级别的标签:<h1>~<h6>.它们都是块级元素.标题数字越小,字体就会越大,标题的 ...
- sql servel 报错:将 expression 转换为数据类型 int 时出现算术溢出错误。
执行sql语句:SELECT AVG( DATEDIFF(s,s.CreatedDate,s.SendDate) ) AS submitTime FROM dbo.SmsSend AS s ...
- 全景图(panorama)低成本解决方案
软硬件 米家全景相机,用于较低成本(学习成本+Money)的获得全景图像,而比较专业的获得全景图像的方法则是单反+云平台+PTGui的组合. PhotoShop,用于处理全景图像. PhotoShop ...
- Nginx常用功能(5)
一.反向代理 1.多域名跳转(location) server www.test.com location / { proxy_pass http://192.168.100.100:8080/web ...
- mongodb数据库安装
mongodb的安装 1,下载安装包: http://www.runoob.com/mongodb/mongodb-window-install.html 2,安装至: D:\MongoDB,将 ...
- 使用JSON JavaScriptSerializer进行反序列化和序列化时报错,字符的长度超出了MaxJsonLength的长度
文章参考:https://www.cnblogs.com/wangfuyou/p/6046307.html 1.解决办法是在web.config增加如下节点到<configuration> ...
- Java与算法之(7) - 完全二叉树
树 下图是一"棵"树的样子.树这个名称起的很形象,整个数据结构由根.枝.叶组成,其中1为根节点,2.3是1的子节点,4.5.6.8.9.10这几个没有子节点的节点称为叶节点. 节点 ...