你可以在python中的csv中读取子集

问题描述 投票:0回答:1

自1980年以来,我在csv中有每日天气数据,大小超过10GB。我对日期感兴趣的列,我希望能够让用户选择一个日期,以便只返回该日期的结果。

我想知道是否可以同时读入和子集以节省内存和计算

我是python的新手并尝试过:

d=pd.read_csv('weather.csv',sep='\t')['Date' == 'yyyymmdd']

无济于事。

是否可以读入仅存在一天的所有数据(ei 20011004)?

python csv subset
1个回答
0
投票

简短的回答:从csv你将无法做到这一点。

答案很长:csv格式对于人类来说非常方便阅读,但对于操作机器而言,这是最糟糕的。您需要逐行解析,直到找到日期符合请求日期的行。

一种可能的解决方案:您应该将csv转换为更适合此类操作的格式。我的建议是使用类似hdf5的东西。你可以用pandas读取整个csv,然后将它保存为hdf5文件d.to_hdf('weather.h5', format='table')。你可以查看pandas hdf文档here。这应该允许您以更高的内存和cpu有效的方式处理。

二进制文件可以实现索引和排序,使您无需通过所有数据来检查所需的那些部分。相同的想法适用于数据库。

附录:二进制格式还有其他选项,例如parquet(可能会更好,你应该测试)或feather(如果你想要与R进行某种程度的“原生”互操作)。您可能需要查看以下post,以获取有关以不同格式及其大小加载/保存时间的一些见解。

© www.soinside.com 2019 - 2024. All rights reserved.