分析较大文件中的一列[重复]

Posted

技术标签:

【中文标题】分析较大文件中的一列[重复]【英文标题】:Analyzing one column from a larger file [duplicate] 【发布时间】:2018-10-06 08:48:30 【问题描述】:

我正在使用熊猫。我正在尝试从一个较大的文件中读取一列名称。这个文件总共是 35GB,这让我的内核死了。因此,我只想阅读其中一列。然后我想“分块”这些数据,这样内核就不会死掉。由此,我需要按每个名称获取总和并找到计数最高的名称。以下是可能有用的:

import pandas as pd

data = pd.read_csv("/Users/Desktop/EQR_Data/EQR_Transactions_1.csv", low_memory=False)

我想从我的主文件中导入的列名:

'seller_company_name'

【问题讨论】:

如果 'seller_company_name' 是唯一导入的列数据,您要对哪一列数据求和? 请创建minimal reproducible example 'seller_company_data' 中的所有名称都是我需要求和/计数的名称。列中有 15 个不同的名称,每个名称都有多个条目。我需要总结这些条目并找到出现最多的名称。 【参考方案1】:

如果只阅读一列,请使用关键字usecols

data = pd.read_csv("/Users/Desktop/EQR_Data/EQR_Transactions_1.csv", usecols=['seller_company_name'])

那你可以groupby卖家名:

grpd = df.groupby('seller_company_name')

然后在 grpd.groups 中是一个字典,其中包含每个卖家的出现指数列表。将其转换为具有这些列表长度的 dict:

result = d: len(grpd.groups[d]) for d in grpd.groups

【讨论】:

【参考方案2】:

有时你最好只使用命令行

如果您可以访问类似 unix 的环境,这就是 grep / sed/ awk / cut 在处理流时构建的目的

见here for an example

另一种方法是拆分您的 csv 并对其进行批处理(由 ',' 分隔,取第一个零索引列)

cat some.csv | cut -d, -f1 | sort | uniq -c

【讨论】:

***.com/questions/3194349/… 用于文件分割

以上是关于分析较大文件中的一列[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何仅过滤dataTable angular中的一列[重复]

从Python中的csv文件中删除第一列[重复]

awk 更改文件中的一列,其中列更改不同文件中的位置

如何更新php sql中的一列(点)[重复]

基于Javascript中的一列从多列中删除重复项

Pandas 只识别我的数据框中的一列 [重复]