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

Posted

技术标签:

【中文标题】如何从csv文件中读取python中的数字?【英文标题】:How to read numbers in python from csv file? 【发布时间】:2015-10-10 19:07:42 【问题描述】:

我有一个 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)

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

【问题讨论】:

你可以使用n.append(float(row[8])),但是如果你有空值,你需要把它放在一个try/except块中。 @Alice 您实际上要问的是如何将字符串转换为浮点数。问题中的其余内容无关紧要 @OmerDagan:必须进行显式类型转换是一种代码味道,只需使用 pandas pd.read.csv()。目前的问题很好(希望 CSV 文件有标题) 【参考方案1】:

按你追加的方式投射:

 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())

【讨论】:

没有问题,不客气。如果您使用 numpy 并处理 csv,我绝对建议您看看 pandas。 我试过了,但我得到了:没有名为 pandas 的模块。我应该安装它吗? 是的,您必须安装它。尝试使用 pip 安装它【参考方案2】:

只需添加引用:

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文件中读取python中的数字?的主要内容,如果未能解决你的问题,请参考以下文章

如何从数据库中读取值,例如 jmeter 中的 csv 文件

读取csv字典变成str了怎么办

如何使用 python 从位于同一目录中的多个 zip 文件夹中读取 csv 文件?

Python 从 CSV 读取数据

如何读取 csv 文件并将逗号从数字转换为点?

如何批量读取csv格式的文件名及文件内容到新的Excel中?