【发布时间】:2012-02-03 10:13:45
【问题描述】:
我正在尝试从 csv 文件中读取一列数据并为其创建直方图。我可以将数据读入数组,但无法制作直方图。这是我所做的:
thimar=csv.reader(open('thimar.csv', 'rb'))
thimar_list=[]
thimar_list.extend(thimar)
z=[]
for data in thimar_list:
z.append(data[7])
zz=np.array(z)
n, bins, patches = plt.hist(zz, 50, normed=1)
这给了我错误:
TypeError: cannot perform reduce with flexible type
知道发生了什么吗?
【问题讨论】:
-
您可能需要将字符串转换为数字。我认为 csv.reader 只是创建字符串列表,而 numpy 创建字符串数组
-
你需要使用
csv吗?我认为np.loadtxt会在这里做得更好(更简单的代码、自动转换等)。 -
我尝试使用 csv 而不是 loadtxt,因为它可以更好地处理非数字字段,例如列标签。但是如果 csv 只有数字 loadtxt 是一个不错的选择。
-
@Bago - 仅供参考,您可以指定
skiprows=1到loadtxt以使其跳过列标题。但是,csv模块将处理包含逗号等带引号字符串的 csv 文件。loadtxt(故意)未设置为处理非简单分隔符。
标签: arrays csv numpy histogram