赞
踩
“本文通过 Python 代码实现的方式来来介绍具体的实现。
以 Python 为基础,调用各种比较基础的库,其中穿插一些Kaggle处理的建议,用引号表示。“
1.1 魔术工具及所需要包
魔术工具,python 的 notebook 可以自动的更新 py 文件里的 function。
%load_ext autoreload
%autoreload 2
%matplotlib inline
导入全部的 模块,如果需要安装包的,可以一次性检查一下。
import os
import math
from concurrent.futures import ProcessPoolExecutor
import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
1.2 数据导入前的预览
有些竞赛的数据体量巨大,当我们读入 pandas 之后再处理,会大大增加数据处理的时间,因此我们可以选在在 terminal 里面先查阅一下文档的情况。在 notebook 里面使用 ! 可以直接在 cell 里面使用 terminal 的命令行。
!wc -l data/Train.csv
显示文档的长度
---
!shuf -n 1 data/Train.csv
显示文档中的任意一行
---
!head -1 data/Train.csv
显示文档的第 1 行
通过上述预览的方法,我们可以了解文档中各个 columns 的特征之后,来比较好的读取。当我们不告诉 pandas 数据的 types 的时候,他会选择 chunk 的方式来读取,这种方式会占用大量的内存,所以我们尽量指示适合的 types,来加速读取速度,也就是在 read_csv 时,设置 dtypes 参数来帮助 pandas 加速识别。
types = {'id': 'int64',
'item_nbr': 'int32',
'store_nbr': 'int8',
'unit_sales': 'float32',
'onpromotion': 'object'}
%%time df_raw = pd.read_csv(f'{PATH}train.csv', parse_dates=['date'], dtype=types, infer_datetime_format=True)
---
CPU times: user 1min 41s, sys: 5.08s, total: 1min 46s
Wall time: 1min 48s
1.3 nan数据情况及比例预览
list(df_raw.isnull().mean())
---
[0.0, 0.0, 0.0, 0.0, 0.0, 0.050198815830476785, 0.0, 0.6440885010906825, 0.8263907759426613, 0.0, 0.0, 0.0, 0.34201558117793707, 0.8581290121533188, 0.8207067622312246, 0.5254596447491431, 0.0, 0.0, 0.0, 0.0, 0.73982923028981, 0.0008102212527267062, 0.5211542536615769, 0.8027198504206918, 0.6295269554378311, 0.8027198504206918, 0.5432097226550328, 0.8027198504206918, 0.9371293237768775, 0.9371293237768775, 0.9371293237768775, 0.93712932
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。