当某些值标记为“未定义”时,将数据从csv文件读取到numpy数组的最佳方法是什么:
0.231620,0.00001,444.157
0.225370,--undefined--,1914.637
0.237870,0.0003,--undefined--
我有很多这些文件需要循环,可以假定未定义的值应为零。
答案 0 :(得分:1)
要读取CSV文件并以最佳方式替换值,我认为它使用的是使用numpy的Pandas
import pandas as pd
df = pd.read_csv('foo.csv', header=None)
df.replace("--undefined--", 0.0, inplace=True)
df
0 1 2
0 0.23162 0.00001 444.157
1 0.22537 0 1914.637
2 0.23787 0.0003 0
答案 1 :(得分:0)
我建议你尝试将你读取的每个值转换为float,然后捕获类型转换ValueError异常并在异常处理程序中将其赋值为零。
这将是最蟒蛇的方式
假设您的CSV包含浮点值,您应该以:
结尾ExecutionContext
或者,只有' - undefined - '字符串要处理为' 0.0',您可以像(最里面的循环)一样编写
with open('data.csv', 'r') as fd:
# iterate over all lines in csv
for line in fd:
# split and iterate over values in line, maintaining item index
for i, value in enumerate(line.split(',')):
try:
value = float(value)
except ValueError:
# consider undefined/non-float value equals to 0
value = 0.0
# store parsed value wherever you need it
print('value[%d] = %f' % (i, value))
答案 2 :(得分:0)
不需要Pandas,只需使用Numpy。
import numpy as np
x = np.genfromtxt('data.csv', dtype=np.float, delimiter=',',
missing_values='--undefined--', filling_values=0.0,
)