- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有几个大于 10 GB 的数据集(tsv 格式),我需要以 hdf5 格式。我正在使用 Python。我读过 Pandas 包在读取文件并将它们存储为 hdf5 时不会占用太多内存。但是,如果我的机器内存不足,我无法这样做。我也尝试过 Spark,但在那里感觉不自在。那么,除了读取内存中的大文件之外,我还有什么替代解决方案?
最佳答案
import pandas as pd
import numpy as np
# I use python3.4
# if your python version is 2.x, replace it with 'import StringIO'
import io
# generate some 'large' tsv
raw_data = pd.DataFrame(np.random.randn(10000, 5), columns='A B C D E'.split())
raw_tsv = raw_data.to_csv(sep='\t')
# start to read csv in chunks, 50 rows per chunk (adjust it to the potential of your PC)
# the use of StringIO is just to provide a string buffer, you don't need this
# if you are reading from an external file, just put the file path there
file_reader = pd.read_csv(filepath_or_buffer=io.StringIO(raw_tsv), sep='\t', chunksize=50)
# try to show you what's inside each chunk
# if you type: list(file_reader)[0]
# exactly 50 rows
# don't do this in your real processing, file_reader is a lazy generator
# and it can only be consumed once
Unnamed: 0 A B C D E
0 0 -1.2553 0.1386 0.6201 0.1014 -0.4067
1 1 -1.0127 -0.8122 -0.0850 -0.1887 -0.9169
2 2 0.5512 0.7816 0.0729 -1.1310 -0.8213
3 3 0.1159 1.1608 -0.4519 -2.1344 0.1520
4 4 -0.5375 -0.6034 0.7518 -0.8381 0.3100
5 5 0.5895 0.5698 -0.9438 3.4536 0.5415
6 6 -1.2809 0.5412 0.5298 -0.8242 1.8116
7 7 0.7242 -1.6750 1.0408 -0.1195 0.6617
8 8 -1.4313 -0.4498 -1.6069 -0.7309 -1.1688
9 9 -0.3073 0.3158 0.6478 -0.6361 -0.7203
.. ... ... ... ... ... ...
40 40 -0.3143 -1.9459 0.0877 -0.0310 -2.3967
41 41 -0.8487 0.1104 1.2564 1.0890 0.6501
42 42 1.6665 -0.0094 -0.0889 1.3877 0.7752
43 43 0.9872 -1.5167 0.0059 0.4917 1.8728
44 44 0.4096 -1.2913 1.7731 0.3443 1.0094
45 45 -0.2633 1.8474 -1.0781 -1.4475 -0.2212
46 46 -0.2872 -0.0600 0.0958 -0.2526 0.1531
47 47 -0.7517 -0.1358 -0.5520 -1.0533 -1.0962
48 48 0.8421 -0.8751 0.5380 0.7147 1.0812
49 49 -0.8216 1.0702 0.8911 0.5189 -0.1725
[50 rows x 6 columns]
# set up your HDF5 file with highest possible compress ratio 9
h5_file = pd.HDFStore('your_hdf5_file.h5', complevel=9, complib='blosc')
h5_file
Out[18]:
<class 'pandas.io.pytables.HDFStore'>
File path: your_hdf5_file.h5
Empty
# now, start processing
for df_chunk in file_reader:
# must use append method
h5_file.append('big_data', df_chunk, complevel=9, complib='blosc')
# after processing, close hdf5 file
h5_file.close()
# check your hdf5 file,
pd.HDFStore('your_hdf5_file.h5')
# now it has all 10,000 rows, and we did this chunk by chunk
Out[21]:
<class 'pandas.io.pytables.HDFStore'>
File path: your_hdf5_file.h5
/big_data frame_table (typ->appendable,nrows->10000,ncols->6,indexers->[index])
关于python - 如何在不耗尽内存的情况下读取 tsv 文件并将它们存储为 hdf5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31027831/
List list=null; ICsvListReader listReader = null; listReader = new CsvListReader(new FileReader(new
简短而甜蜜:如何从 R 导出 TSV/CSV? write.table/write.csv几乎可以工作: test <- data.frame(a = 2 : 4, b = 3 : 5) write.
我刚开始使用 Python 的 csv 模块,但由于缺少转义字符和奇怪的数据,我不断遇到无法解析的问题。以下是导致它抓取多行并中断(制表符分隔值)的两个示例: B 2885192 "Some inpu
我已获得一个 TSV 文件。我正在使用 getchar() 函数阅读它,并在运行函数时在命令行中输入 program = MAX_LENGTH_OF_STRINGS) {
我有一个 .tsv,我需要找出特定列中的频率变量并按降序排列该数据。我在 c 中运行一个脚本,该脚本下载一个缓冲区并将其保存到一个 .tsv 文件中,该文件带有一个名称的日期戳,位于与我的代码相同的目
我有一个存储有向图的文件。每行表示为 node1 TAB node2 TAB权重 我想找到节点集。有没有更好的方式获得工会?我当前的解决方案涉及创建临时文件: cut -f1 input_graph
我有一个 5GB+ TSV 文件。我需要可视化它包含的数据,但 Excel 无法打开文件(显然太大了)。 Tableau 不能处理 TSV 文件,Access 也不能。我尝试使用 010 Editor
我总共有 254 个文本文件。我想在 r-programming 中将所有文本文件转换为一个 tsv 文件。我该怎么做?即使在 r 中不可能,还有其他方法可以做到吗? path % wr
我需要阅读一个表格,它是 .tsv R 中的文件。 test <- read.table(file='drug_info.tsv') # Error in scan(file, what, nmax,
我有以下代码要输出到 csv。 import csv keys = ['Name','Hour','Time'] dirname = os.path.dirname(os.path.abspath(_
我正在尝试在 Ubuntu 17.10 中从命令行执行 tesseract。我希望输出位于 .tsv 文件中,因为我需要置信率。正如所解释的here ,我执行: tesseract testing_i
我想使用 Java 代码中的 Apache Jena 的库将 tsv 文件转换为 rdf 文件。我找到了一个从 csv 转换为 rdf 的示例,但它对我没有多大帮助。链接为:http://www.es
我有一个 tsv txt 文件,其中包含 3 行数据。 看起来像: HG sn FA PC 2 16:0 PI 1 18:0 PS 3 20:0 PE 2 24:0
我有以下代码要输出到 csv。 import csv keys = ['Name','Hour','Time'] dirname = os.path.dirname(os.path.abspath(_
我有一个 .tsv 文件,有 39 列最后一列的数据为字符串,长度超过 100,000 个字符现在发生的事情是当我尝试读取文件第 1 行有标题时,然后是数据 发生的事情是在读取第 1 行之后,它转到第
我在访问 tsv 文件中的数据时遇到一些问题。数据位于 tsv 的第三行。我想访问该名称并在屏幕上打印。 box1.bar1 box1.bar2 box1.bar3 box1.bar4
我有一个充满 n 个数据点的 TSV 文件,我想计算所有点之间的距离。我有这样的东西: 我想做的是 .iloc 功能 import pandas as pd x = pd.read_csv('data
我正在尝试在 TSV 上使用正则表达式将每个元素放入捕获组中(听起来很简单,我认为应该如此)。基本上我有一个 58 列的 TSV 文件,我想将每个值放入一个组中。因此,对于正则表达式,我实际上只是执行
您好,我刚刚开始使用 d3 作为数据可视化工具,并且我正在学习本教程:http://bost.ocks.org/mike/bar/ 但是,我的代码: .chart rect { fill:
我正在关注此处的 D3 示例:http://bl.ocks.org/mbostock/3883245 .我正在从远程服务器请求 TSV 来创建图形。我知道这工作正常,因为图表会根据给定的时间自动更改其
我是一名优秀的程序员,十分优秀!