我正在处理一个问题,在该问题中,我以csv文件的形式拥有非常大的数据集。此csv文件具有多个列,其中之一是状态代码。数据集比我需要的要大得多-我只需要一个状态的值。
我正在考虑使用的解决方案是使用Python读取csv文件,然后仅用我需要的行写入新文件-删除50个州(美国)中的49个。
csv文件具有300万以上的行。我是Python的新手,我不确定如何有效地完成此任务,完成此任务的最佳方法是什么?
谢谢您的帮助,如果这看起来像是一个简单的问题,我深表歉意-我是Python的新手。
答案 0 :(得分:2)
删除所有行与仅提取一个状态不同。从文件中删除行的处理足够here。假设您只想提取一个状态,这是您可以做到的一种方法。
with open("file.csv", "r") as file:
for line in file:
sline = line.split(",")
if sline[n] == statecode:
# Where n is the position of the statecode column zero indexed
# and statecode is your target state code
pass # this is where you do something with the data
使用这种模式,您可以实现几乎所有涉及逐行递增cv的解决方案。这包括写入新的csv,处理内存中的数据,pandas
或dask
解决方案,等等。
如果您要这样做,您的系统很可能仅能直接导入到pandas
或dask
。这些是带有内置read_csv
方法的流行数据处理python工具。
答案 1 :(得分:1)
关于在Python中处理大量数据,最推荐的库之一是Pandas。它是一个Python库,专门用于数据分析,并能够使用DataFrame对象解析大量数据。