Как зациклить данные с условием? - PullRequest
0 голосов
/ 07 октября 2019

У меня есть такой набор данных, что 1-й столбец - это возраст (числовой), 2-й столбец - пол (категориальный), а 3-й столбец - сохранение (числовой).

Я хочу найтисреднее значение и стандартное отклонение, если столбец представляет собой числовые данные, и найдите режим, если столбец представляет собой категориальные данные.

Я попытался найти индекс, если type = num, и поместил индекс в for loop, чтобы вычислить среднее и стандартное отклонение, а остальная часть индекса используется для вычисления режима категориальных данных (в данном случае это 2-й столбец), однако я застрял в цикле.

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 есть собственный пакет или нет). Спасибо за помощь заранее!

1 Ответ

3 голосов
/ 07 октября 2019

Просто удалите скобки в операторе 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...