如何解决我如何知道分块前使用的csv文件中的分块数量或行数?
我正在尝试使用5.000.000的块大小使用熊猫处理10GB以上的csv文件。从块到块处理数据需要一些时间,但是我不知道我在文件的哪一部分。我如何在开始循环之前知道csv的块数量(或行数)?选择块大小是否有任何经验法则?
我正在使用的循环是这样的:
chunk = 5_000_000
data = pd.read_csv(path,chunksize=chunk)
for i in data:
do_some_stuff()
解决方法
一些想法
- 估计之前/不读取文件的行数
$csv2 | foreach {
[PSCustomObject]@{
Host = $csv1[$_.vendorid].host
Managed = $_.managed
VendorID = $_.vendorid
Serial = $csv1[$_.vendorid].serial
}
}
Host Managed VendorID Serial
---- ------- -------- ------
A15 Trancom 9001 gtjk123
C15 Stratus 6402 gtjk456
T15 Psycorp 2301 gtjk678
S15 Dell 0101 gtjk103
- 估计数据帧块的可用内存
import os
import sys
full_size = os.path.getsize('test.csv') # get size of file
with open('test.csv','rb') as f:
next(f) # skip header
line_size = len(f.readline()) # get size of one line,assuming 1 byte encoding
linecount = full_size // line_size + 1 # ~count of lines
- 在循环中使用信息
import psutil
chunksize = (
psutil.virtual_memory().available
// (pd.read_csv('test.csv',nrows=1).memory_usage(deep=True).sum()
* 4)) # leave memory for computations,here: 1/4 of available memory for the dataframe
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。