如何在Python中从csv文件读取数字?

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

我有一个 csv 文件,我必须计算某些列的平均值。 我就是这么做的:

file=csv.reader(open('tab.csv','r'))
n=[]
for row in file:
    n.append(row[8])

所以我有一个字符串列表:n=['','','1.58'...] 我怎样才能将它们转换为浮动? 我尝试过:

n_values=np.array(n)
n_values[n=='']='0'
values=n_values.astype(np.float)
np.mean(values)

但是平均值不正确,因为我应该跳过不计数的空字符串。 感谢您的帮助!

python csv numpy file-io numbers
2个回答
19
投票

只需添加引用:

with open('tab.csv', newline='') as file:
    reader = csv.reader(file, quoting=csv.QUOTE_NONNUMERIC)
    n=[]
    for row in reader:
        n.append(row[8])

文档

csv.QUOTE_NONNUMERIC


17
投票

只需在附加时进行投射:

 n.append(float(row[8]))

如果有空字符串,请在附加之前捕获它们。

try:
    n.append(float(row[8]))
except ValueError:
   continue

或者您可能想尝试 pandas,特别是 pandas.read_csv

import pandas as pd

df = pd.read_csv("in.csv")
print(df["col_name"].mean())
© www.soinside.com 2019 - 2024. All rights reserved.