Python “大熊猫”;阅读“U csv”;未读取整个.TXT文件
首先,我在这里发现了几个标题/主题相同的问题,我尝试了建议的解决方案,但没有一个对我有效 以下是问题: 我想从一个巨大的.txt文件(>50GB)中提取一个工人样本 为此,我正在使用HPC群集 数据中的每一行表示一个具有许多信息(列变量)的工作进程。其思想是根据ID变量中的前两个字母提取工作者的子样本:Python “大熊猫”;阅读“U csv”;未读取整个.TXT文件,python,pandas,csv,bigdata,Python,Pandas,Csv,Bigdata,首先,我在这里发现了几个标题/主题相同的问题,我尝试了建议的解决方案,但没有一个对我有效 以下是问题: 我想从一个巨大的.txt文件(>50GB)中提取一个工人样本 为此,我正在使用HPC群集 数据中的每一行表示一个具有许多信息(列变量)的工作进程。其思想是根据ID变量中的前两个字母提取工作者的子样本: df = pd.read_csv('path-to-my-txt-file', encoding= 'ISO-8859-1', sep = '\t', low_memory=False, err
df = pd.read_csv('path-to-my-txt-file', encoding= 'ISO-8859-1', sep = '\t', low_memory=False, error_bad_lines=False, dtype=str)
df = df.rename(columns = {'Worker ID' : 'worker_id'})
# extract subsample based on first 2 lettter in worker id
new_df = df[df.worker_id.str.startswith('DK', na=False)]
new_df.to_csv('DK_worker.csv', index = False)
问题是生成的.CSV文件的行数仅为应该存在的行数的10-15%(我有另一个关于我应该期望的大概行数的信息来源)
我认为数据有一些编码问题。我试过类似“utf-8”、“拉丁语1”之类的词。。一切都没有改变
您是否看到此代码中有任何可能导致此问题的错误?我错过了一些争论吗
我不是Python专家:)
非常感谢。您无法将50GB的文件加载到计算机RAM中,无法存储那么多数据。我怀疑csv模块能否处理如此大小的文件。您需要做的是将文件分成小块打开,然后处理每一块
def process_data(piece):
# process the chunk ...
def read_in_chunks(file_object, chunk_size=1024):
while True:
data = file_object.read(chunk_size)
if not data:
break
yield data
with open('path-to-my-txt-file.csv') as f:
for piece in read_in_chunks(f):
process_data(piece)
亲爱的贾里德,谢谢你的回复。你完全正确,但你错过了我的一句话,我使用的是HPC或高性能计算机集群(256GB RAM+28核CPU),对不起,我必须弄清楚这一点。我会按照你的建议把文件分块读。