【发布时间】:2019-08-11 08:24:24
【问题描述】:
我有一个制表符分隔数据的 CSV 文件,其中包含不同类型的标题和数据,我想将其转换为向量字典。最终,我想将字典转换为 numpy 数组,并将它们以某种二进制格式存储,以便不同脚本快速检索。这是一个包含大约 700k 记录和 16 列的大文件。以下为示例:
"answer_option" "value" "fcast_date" "expertise"
"a" 0.8 "2013-07-08" 3
"b" 0.2 "2013-07-08" 3
我已经开始使用 DictReader 类来实现这一点,我刚刚学习。
import csv
with open( "filename.tab", 'r') as records:
reader = csv.DictReader( records, dialect='excel-tab' )
row = list( reader )
n = len( row )
d = {}
keys = list( row[0] )
for key in keys :
a = []
for i in range(n):
a.append( row[i][key] )
d [key] = a
给出结果
{'answer_option': ['a', 'b'],
'value': ['0.8', '0.2'],
'fcast_date': ['2013-07-08', '2013-07-08'],
'expertise': ['3', '3']}
除了必须从数值中清除包围它们的引号字符的小麻烦之外,我认为也许有一些现成的东西。我还想知道是否有任何东西可以直接从文件中提取到 numpy 向量中,因为我不需要在字典中转换我的数据。
我查看了 SciPy.org,搜索 CSV 时也提到了 HDF5 和 genfromtxt,但我还没有深入研究这些建议。理想情况下,我希望能够以快速加载的格式存储数据,这样就可以很容易地从其他脚本中加载,只需一个命令,所有向量都可以在 Matlab 中以相同的方式使用/八度。欢迎提出建议
编辑:数据以制表符分隔,用引号括起来的字符串。
【问题讨论】:
标签: python csv dictionary numpy-ndarray