我尝试从csv行得到意思。我从字符串列表中的csv获取数据,进一步我用numpy将其转换为数组。当我尝试绘制一些图形时,它的工作完美。 但是当我计算平均值时,我的数据会出现一些错误。
如果我使用NumPy,我会:
TypeError: cannot perform reduce with flexible type
如果我使用统计库我得到:
TypeError: can't convert type 'string' to numerator/denominator
如果我在iPython上使用命令'type'检查我的数组,我会看到它是numpy.ndarray类型。
我的阵列出了什么问题?你能解释一下,为什么转换numpy.asarray为matplotlib工作完美,但为不同的操作得到错误的类型。
import csv
import numpy as np
import statistics as stat
life_exp=[]
with open('country.csv') as csvfile:
datareader = csv.reader(csvfile)
for row in datareader:
if datareader.line_num!=1:
life_exp.append(row[1])
array_life_exp = np.asarray(life_exp)
print(stat.mean(array_life_exp))
print(np.mean(array_life_exp))
答案 0 :(得分:1)
试试这个:
from pandas import read_csv
data = read_csv('country.csv')
print(data.iloc[:,1].mean())
此代码会将您的csv转换为pandas数据帧,并具有自动类型转换和第二列的打印平均值。