Уведомления

Группа в Telegram: @pythonsu

#1 Март 6, 2021 10:42:23

jeen
Зарегистрирован: 2021-03-06
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

функция, чтобы создать две группы в датасете

Добрый день. Подскажите, пожалуйста, что не так с функцией. У меня есть данные о доходе клиентов, в этих данных пропуски. Я хочу разделить случаи на те, когда есть данные, и когда нет. Выше пропуски NaN уже перекодированы в нули.
Теперь я мучаю функцию, с помощью которой хочу получить новый столбец, разделяющий клиентов на две категории.

 def no_value(row):
    for row in clients:
        if row['total_income'] == 0:
            return 'нет данных'
        else:
            return 'есть данные'

 clients['income_novalue'] = clients['total_income'].apply(no_value)

Ошибку дает такую:
<ipython-input-32-0dabf40b23f4> in no_value(row)
2 def no_value(row):
3 for row in clients:
—-> 4 if row == 0:
5 return ‘нет данных’
6 else:

TypeError: string indices must be integers

Спасибо за любой совет, всю голову сломал.

Отредактировано jeen (Март 6, 2021 10:55:28)

Прикреплённый файлы:
attachment 333.jpg (89,0 KБ)

Офлайн

#2 Март 6, 2021 10:57:43

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

функция, чтобы создать две группы в датасете

1. Ничего сказать нельзя, по вашему коду непонятно что такое clients (сами бы его содержимое посмотрели).
2. Заменять NaN на нули очень плохая идея. Ноль валидный доход. Теперь вы не сможете отличить людей у которых нет данных от людей у которых нулевой доход.



Офлайн

#3 Март 6, 2021 11:03:29

jeen
Зарегистрирован: 2021-03-06
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

функция, чтобы создать две группы в датасете

Clients - это датасет. Выглядит так - см. плз скриншот в приложении.

Прикреплённый файлы:
attachment 222.jpg (50,8 KБ)

Офлайн

#4 Март 6, 2021 14:14:02

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

функция, чтобы создать две группы в датасете

jeen
Clients - это датасет.
В языке питон нет понятия датасет. Тут не экстрасенсы чтобы угадывать что вы имеете ввиду и какие пакеты используете.
99 процентов участников форума не будут скачивать картинку. Смотреть что там. Перебивать текст с картинки в код.
Если вы хотите чтобы вам помогли вы должны приводить фгагмент в виде текста с использованием кнопочки <>.
Фрагмент должен быть запускабелен.

p.s.
Совет вам простой чтобы голову не сломали. Пользуйтесь отладчиком или печатайте промежуточные результаты чтобы вам было понятно что внутри переменных и что именно вы с ними делаете. row судя по всему строка, конкретнее можно сказать только имея работающий код. Активнее пользуйтесь интерактивным режимом, и функциями help, dir ,type, id.

p.s. 1
:) Тут некоторые используют pandas. Я бы начинающим не рекомендовал им пользоваться, так как эта работа напоминает действия Гарри Поттера. pandas содержит сотни разных типов объектов и управляется тысячами неочевидных и зачастую нелогичных заклинаний. Успешные действия зависят от знания всего этого хозяйства наизусть, иначе невовремя сказанное заклинание “левиоссо” может привести к зависанию компьютера и потере данных.



Офлайн

#5 Март 6, 2021 14:28:47

jeen
Зарегистрирован: 2021-03-06
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

функция, чтобы создать две группы в датасете

Все, порядок - работает:

 def no_value(clients):
    total_income = clients['total_income']
    for row in clients:
        if total_income == 0:
            return 'нет данных'
        else:
            return 'есть данные'
clients['income_novalue'] = clients.apply(no_value, axis = 1)

Отредактировано jeen (Март 6, 2021 14:29:54)

Офлайн

#6 Март 6, 2021 14:44:10

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

функция, чтобы создать две группы в датасете

см. ниже



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Март 6, 2021 14:44:20)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version