分析较大文件中的一列[重复]
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/… 用于文件分割以上是关于分析较大文件中的一列[重复]的主要内容,如果未能解决你的问题,请参考以下文章