如何从csv文件中读取python中的数字?

Ali*_*ice 7 python csv file-io numbers numpy

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

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

所以我有一个字符串列表:n = ['','','1.58'...]如何将这些转换为浮点数?我尝试过:

n_values=np.array(n)
n_values[n=='']='0'
values=n_values.astype(np.float)
np.mean(values)
Run Code Online (Sandbox Code Playgroud)

但是平均值不正确,因为我应该跳过不计算的空字符串.谢谢您帮忙!

小智 14

只需添加引用:

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


Pad*_*ham 10

在你附加时施放:

 n.append(float(row[8]))
Run Code Online (Sandbox Code Playgroud)

如果有空字符串,则在追加之前捕获它们.

try:
    n.append(float(row[8]))
except ValueError:
   continue
Run Code Online (Sandbox Code Playgroud)

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

import pandas as pd

df = pd.read_csv("in.csv")
print(df["col_name"].mean())
Run Code Online (Sandbox Code Playgroud)

  • 没问题,欢迎你.如果你正在使用numpy和处理csv,我肯定会建议你看一下熊猫. (2认同)
  • 是的你必须安装它.尝试用pip安装它 (2认同)