使用NumPy asarray方法将列表转换为数组

时间:2015-06-18 08:32:04

标签: python csv python-3.x numpy

我尝试从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))

1 个答案:

答案 0 :(得分:1)

试试这个:

from pandas import read_csv

data = read_csv('country.csv')
print(data.iloc[:,1].mean())

此代码会将您的csv转换为pandas数据帧,并具有自动类型转换和第二列的打印平均值。