web-dev-qa-db-ja.com

csvファイルからpythonの数字を読み取る方法は?

私は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)

しかし、数えない空の文字列をスキップする必要があるため、平均は正しくありません。お手伝いありがとうございます!

7
Alice

追加するだけでキャスト:

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

空の文字列がある場合は、追加する前にそれらをキャッチします。

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

または、特にパンダを試してみることもできます pandas.read_csv

import pandas as pd

df = pd.read_csv("in.csv")
print(df["col_name"].mean())
10

引用を追加するだけです:

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