R语言分块数据处理(readr::read

您所在的位置:网站首页 CSV读取多版本语言 R语言分块数据处理(readr::read

R语言分块数据处理(readr::read

2024-04-20 01:00| 来源: 网络整理| 查看: 265

作者:黄天元,复旦大学理学博士,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现。著有《R语言高效数据处理指南》(《R语言数据高效处理指南》(黄天元)【摘要 书评 试读】- 京东图书)、《文本数据挖掘——基于R语言》(《文本数据挖掘 基于R语言》(黄天元)【摘要 书评 试读】- 京东图书)。知乎专栏:R语言数据挖掘。邮箱:[email protected].欢迎合作交流。

先前因为协助朋友做一个清洗任务,碰到了一个问题,就是有一个庞大的csv,有三十多个G。在没有超级计算机的情况下,我普通的电脑最大也只能到16G的内存,对这个数据毫无办法,连载入都不可能。现在这份数据存在一个问题,就是某一列的字符串存在不同的编码格式问题,所以只能想办法进行转化。

所幸,readr包有一个read_csv_chunked函数,可以支持分块的读取。不仅仅如此,读取之后可以马上进行一些数据操作,然后根据需要返回指定的结果。官方链接如下:

我们稍微看一下函数的构成:

read_csv_chunked( file, callback, chunk_size = 10000, col_names = TRUE, col_types = NULL, locale = default_locale(), na = c("", "NA"), quoted_na = TRUE, quote = "\"", comment = "", trim_ws = TRUE, skip = 0, guess_max = chunk_size, progress = show_progress(), show_col_types = should_show_types(), skip_empty_rows = TRUE )

这里,一般需要用到的是前面几个参数。file可以指定文件路径,callback可以指定要进行的操作(这一步很重要,后面稍微展开一下),chunk_size指定每次要处理多少行(需要根据每行数据量来确定,保证这个量少于最大内存可载入量),col_names和col_types可以指定读入列的名称和类型(先指定可以节省计算机识别的时间,如果不符合会直接报错)。

那么我们来展开这个callback参数,我们可以在外部定义一个函数,对其进行操作,然后放入这个参数中。举例而言,官方给出了这样一个例子:

# Cars with 3 gears f



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3