我正在尝试分析我目前以.csv格式存储的大型数据集。我想将第3列中的数据存储到小时,分钟和秒字段中,然后执行一些计算。
我通常不在python中工作,我能找到的大多数解决方案建议使用pyexcel或astropy等库。但是,我给予工作的机器没有这些包。我无法获得安装任何软件包的权限,并且被告知我必须使用我可用的软件。如何仅使用python语言和pylab执行任务?
答案 0 :(得分:1)
您可以使用csv
reader
创建一次读取一行的函数,然后生成所需的值。这使得该函数成为一个生成器,它只能有效地读取和使用每行所需的内存。
第4列(第3列从零开始计算)中所需的值是空格分隔值,您可以将其拆分并映射到浮点数(如果您愿意,可以使用更复杂的值):
>>> hms = '03 26 02.785'
>>> hms.split()
['03', '26', '02.785']
>>> map(float, _)
[3.0, 26.0, 2.785]
共:
import csv
def hours_minutes_seconds(filelike):
for line in csv.reader(filelike):
RAJ2000 = line[3]
yield map(float, RAJ2000.split())
csv.reader
需要一个类文件对象(或任何可返回字符串的迭代),因此我们可以使用StringIO
对其进行测试。
用法:
>>> import StringIO
>>> contents = StringIO.StringIO("""1,1,C001,03 26 02.785
... 2,2,C002,03 26 04.152""")
>>> for hms in hours_minutes_seconds(contents):
... print hms
[3.0, 26.0, 2.785]
[3.0, 26.0, 4.152]