我尝试从 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))
最佳答案
试试这个:
from pandas import read_csv
data = read_csv('country.csv')
print(data.iloc[:,1].mean())
此代码将您的 csv 转换为 pandas 数据框,并自动类型转换并打印第二列的平均值。
关于python - 使用 NumPy asarray 方法将列表转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30910270/