第一次参加,天池大数据竞赛(血糖预测),初赛排名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)的更多相关文章

  1. 使用命令行将Excel数据表导入Mysql中的方法小结

    从Excel数据表导入MySQL,已经做过好几次了,但每次都会碰到各种问题:invalid utf8 character string, data too long, ...,浪费了不少时间 为了提高 ...

  2. [转]mysql导入导出数据中文乱码解决方法小结

    本文章总结了mysql导入导出数据中文乱码解决方法,出现中文乱码一般情况是导入导入时编码的设置问题,我们只要把编码调整一致即可解决此方法,下面是搜索到的一些方法总结,方便需要的朋友. linux系统中 ...

  3. mysql导入导出数据中文乱码解决方法小结

    linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqld ...

  4. 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',' ...

  5. Web Driver 8中定位方法 ——基于python语言

    WebDriver提供了八种元素定位方法,在python 语言中,方法如下:  id定位:find_element_by_id("id值"):id属性是唯一的.  1 driver ...

  6. 数据科学中的R和Python: 30个免费数据资源网站

    1 政府数据 Data.gov:这是美国政府收集的数据资源.声称有多达40万个数据集,包括了原始数据和地理空间格式数据.使用这些数据集需要注意的是:你要进行必要的清理工作,因为许多数据是字符型的或是有 ...

  7. shell脚本处理大数据系列之(一)方法小结

    转自:http://longriver.me/?p=57 方法1: 单进程处理大规模的文件速度如(上million量级)比较慢,可以采用awk取模的方法,将文件分而治之,这样可以利用充分的利用多核CP ...

  8. 【转】C#绝对新手之C#中的多线程小结

    大概有4种方法: Dispatcher.异步委托.手动多线程.BackgroundWorker,另外还有一个DispatcherTimer,是定时器. 其中Dispatcher与DispatcherT ...

  9. css中居中方法小结

    ---恢复内容开始--- 1.文字垂直居中 .header_nav-item{ height:38px; line-height:38px; } 即文字所在模块的高度和行高设置成一样的! 2.块元素垂 ...

随机推荐

  1. linux网路编程:字节序(大端、小端、网络、主机)

    字节序:就是数据在内存中的存放顺序,也可称之为端模式. 大端模式和小端模式的定义 1) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端. 2) Big-End ...

  2. window.btoa 和 window.atob

    前一段时间被安全部门查出,明文传递密码,被要求整改. 然后就进行了引入了第三方的base64编码的js库,进行了编码然后传递. 其实在前端的加密都是寻求一个心理安慰,作用是微乎其微的,确实也更加好那么 ...

  3. python3基础(七)函数基础

    Function 函数是一段组织好的能够实现特定功能或者逻辑的代码块,函数代码在文件执行时读入内存并不执行,在调用函数时执行,简单来说是把一段代码封装给一个函数名(可以用变量的概念去理解,即把一段代码 ...

  4. 易卡易APP的出现改变你的消费习惯

    科技发展越来越快,移动支付占据市场主导地位,银行业发展受到了重大冲击,致使银行对于信用卡的推广更加重视.人们的消费观念也受到了很大影响从以前的现金消费变成现在的数字消费,人们对于金钱的观念就是一个数字 ...

  5. Python笔记(一):安装+爬虫环境配置+打包为EXE文件

    1.     安装 https://www.python.org/downloads/windows/  到官网下载安装程序 Windows x86        32位操作系统 Windows x8 ...

  6. 【转载】MySQL5.6.27 Release Note解读(innodb及复制模块)

    新功能   问题描述(Bug #18871046, Bug #72811): 主要为了解决一个比较“古老”的MySQL在NUMA架构下的“swap insanity”问题,其表现为尽管为InnoDB ...

  7. 调出js控制台可以在浏览器地址栏输入about:blank

    调出js控制台可以在浏览器地址栏输入about:blank,如果不输入about:blank,直接 打开一个新的页面,有可能输出的结果不准确.也就是说变量有可能被其他的影响到, 造成结果不准确.

  8. (๑•̀ㅂ•́)و✧随笔总目录ヾ(≧▽≦*)o

    SSM整合进阶篇 日常手记 开源博客My Blog系列 短信接口攻击事件 读书笔记 SSM整合优化篇 SSM整合基础篇 SSM整合进阶篇 Spring+SpringMVC+MyBatis+easyUI ...

  9. vue.js之路由

    Vue.js本身只提供数据与视图绑定及组件化等功能,如果想用它来开发一个完整的SPA(单页面应用),我们就还需要使用一些Vue.js的插件.今天我学习一种叫做Vue-router的插件,用来提供路由管 ...

  10. Machine Learning - week 1

    Matrix 定义及基本运算 Transposing To "transpose" a matrix, swap the rows and columns. We put a &q ...