我有一组数据,第一列是年龄(数字),第二列是性别(类别),第三列是保存(数字)。
我想做的是,如果该列是数字数据,则找到均值和标准差,如果该列是分类数据,则找到模式。
我试图找到索引type = num
并将索引放入for loop
中以计算均值和标准差,而其余索引用于计算分类数据的模式(在本例中为第二列),但是,我陷入了循环。
import numpy as np
data = np.array([[11, "male",1222],[23,"female",333],[15,"male",542]])
# type of the data above
types = ["num","cat","num"]
idx = []
for i in range(2):
if (types[i] == "num"):
idx.append(types[i].index)
for i in idx:
np.mean(data[:,i].astype("float64"))
我希望代码能够获得数值数据的均值和标准差以及类别数据的众数。如果有可能,请尝试不要构建任何其他程序包(我不确定`index'是否具有其自己的程序包)。
答案 0 :(得分:3)
只需在if语句中删除括号。
...
idx = []
for i in range(2):
if types[i] == "num":
idx.append(types[i].index)
...
编辑: 建议不要使用范围枚举来循环类型范围,而应使用所需的索引。
for index, _type in enumerate(types):
if _type == 'num':
idx.append(index)