Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 07.12.2017
Сообщений: 40

Оптимизация функции

07.08.2019, 22:43. Показов 615. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня.
Сейчас решаю задачу по созданию сводной аналитической таблицы через библиотеку пандас.
На примере небольшого кусочка (реальный дф 250к + строк)
Произвожу расчет того, как были осуществлены выплаты по разным категориям пользователей.
На примере классификации по уровню дохода (высокий и низкий) и наличию просрочки (0 или 1) родилась функция, которая вычисляет процент от общего кол-ва, который подходит под заданные критерии.
Т.е. задача выполнена верно - но на объеме 250к строк работает ну очень долго.
Может, сможете направить на путь истинный и подсказать, как можно переписать запрос, что бы результат был тем же, но выполнялся он быстрее?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import pandas as pd
sales = {
    'income_group':     ['высокий доход', 'высокий доход', 'низкий доход', 'низкий доход'],
    'debt':  [0,1,0,1]
 
}
df = pd.DataFrame(data=sales)
print(df)
 
def is_good_debt_income (row):
    imp = row['debt']
    al = row['income_group']
    if imp == 0:
        if al == 'высокий доход':
            return df[(df['income_group'] == 'высокий доход') & (df['debt'] == 0)]['income_group'].count() / \
                   df[df['income_group'] == 'высокий доход']['income_group'].count()
    if imp == 1:
        if al == 'высокий доход':
            return df[(df['income_group'] == 'высокий доход') & (df['debt'] == 1)]['income_group'].count() / \
                   df[df['income_group'] == 'высокий доход']['income_group'].count()
    if imp == 0:
        if al == 'низкий доход':
            return df[(df['income_group'] == 'низкий доход') & (df['debt'] == 0)]['income_group'].count() / \
                   df[df['income_group'] == 'низкий доход']['income_group'].count()
    if imp == 1:
        if al == 'низкий доход':
            return df[(df['income_group'] == 'низкий доход') & (df['debt'] == 1)]['income_group'].count() / \
                   df[df['income_group'] == 'низкий доход']['income_group'].count()
df['is_good_debt_income'] = df.apply(is_good_debt_income, axis=1)
print(df)
 
data_pivot = df.pivot_table(index=['income_group'], columns='debt', values='is_good_debt_income')
print(data_pivot)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.08.2019, 22:43
Ответы с готовыми решениями:

Оптимизация кода. Классы и функции
Как лучше, со стороны оптимизации? Так: class a: def a(): <code> def b(): <code> class b: ...

Оптимизация кода, функции bfs если быть точнее
Есть код, его мне нужно оптимизировать. Идея написать bfs, который будет загонять словарь с ключами в виде уровня и значения в виде...

Оптимизация функции
Всем привет. Нужна ваша помощь, чтобы исправить ошибку. Буду рад любой помощи. https://glot.io/snippets/er2muuidny

2
27 / 26 / 6
Регистрация: 02.02.2014
Сообщений: 96
07.08.2019, 23:47
Python
1
pd.get_dummies(df, columns=['debt']).groupby('income_group').mean()
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
08.08.2019, 00:14
Никогда не сравнивайте при больших объемах данных Series напрямую со значением. Нужно всегда получать numpy массивы значений из Series. Как именно - описано в документации.
.searchsorted - дает x10 прирост производительности при поиске в отсортированном датафрейме.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.08.2019, 00:14
Помогаю со студенческими работами здесь

Оптимизация функции через scipy.optimize.minimize
Добрый день! Начинаю осваивать язык. Помогите, пожалуйста, разобраться с оптимизацией в SciFy. На простых примерах все естественно...

Оптимизация функции через scipy.optimize.minimize
Добрый день! Я только начинаю осваивать язык, совсем ещё новичок. Помогите, пожалуйста, разобраться с оптимизацией в SciPy. У...

Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация
Много много лет назад, на заре становления профессии "оптимизатора" в какой то умной книжке был создан миф. Это миф о цветовой индефикации...

Оптимизация кода, функции и методы как параметры функции
Грубо говоря - есть множество циклов которые привязаны к проверочным функциям, поскольку сами по себе тела циклов в принципе идентичны,...

Оптимизация функции
Всем привет, нужна помощь в написании курсовой работы. Вот такое задание: Расчеты сделанные вручную, нужно написать код для 1 и 2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru