如何使用NumPy计算CSV文件指定列的平均值并解决类型报错问题
问题原因分析
- 你当前读取的
emp_code数组所有元素都是字符串类型(从输出的dtype='<U2'可确认),数值计算方法无法直接作用在字符串上,所以调用mean()会抛出类型错误 np.mean['Age']的写法本身不正确:一方面np.mean是函数需要用圆括号传参,另一方面你当前读取的普通numpy数组不支持按列名索引,只有结构化数组、pandas DataFrame这类结构才支持列名访问
解决方案
方案1:转换现有数组的年龄列为数值类型计算
无需修改读取逻辑,直接对提取的年龄列做类型转换后计算即可:
import numpy as np # 提取索引为1的第二列(年龄列),转换为整数类型后计算平均值 age_col = emp_code[:, 1].astype(int) age_mean = age_col.mean() print(age_mean)
方案2:读取CSV时指定类型,支持按字段名访问
如果你的CSV有表头行,可在读取时指定字段名和对应类型,后续就可以直接按列名调用计算:
from numpy import genfromtxt emp_code = genfromtxt('C:\\Users\\V\\Desktop\\data science\\DS1_C4_S1_Numpy_PracticeBrief.csv', delimiter=',', dtype=[('id', int), ('age', int)], # 按顺序指定每列的字段名和数据类型 skip_header=1) # 如果CSV第一行是表头就保留该参数,没有表头则删除 # 直接按字段名计算平均值 age_mean = emp_code['age'].mean()
方案3:使用pandas实现更简便的列操作
如果允许引入pandas库,按列名处理数据会更直观:
import pandas as pd df = pd.read_csv('C:\\Users\\V\\Desktop\\data science\\DS1_C4_S1_Numpy_PracticeBrief.csv') # 此处的Age替换为你CSV中年龄列的实际表头名即可 age_mean = df['Age'].mean() print(age_mean)
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

