Задать вопрос
  • Как удалить строки в таблице с одинаковыми параметрами по столбцам?

    Maksim_64
    @Maksim_64
    Data Analyst
    dataframe.drop_duplicates(subset=[col1,col2,..],keep=False)
    keep параметр, поддерживает 'first' (оставить первое) и 'last' оставить последнее, False удалит все строки.

    Дополнил, ответ для сравнения между колонками для общего случая если это две или более или подсет.
    cols = ['col1', 'col2', ..]
    df.loc[~(df[cols].eq(df[cols].iloc[:, 0], axis=0).all(axis=1))]
    Ответ написан
    8 комментариев
  • Куда надо устанавливать Python и его библиотеки?

    Maksim_64
    @Maksim_64
    Data Analyst
    Правильно создавать виртуальные окружения для каждого проекта и устанавливать библиотеки в виртуальные окружения.

    Учись сразу делать правильно, интернет полон обучающих материалов, как это делать.
    Ответ написан
    6 комментариев
  • В данном случае является ли класс абстрактным?

    Maksim_64
    @Maksim_64
    Data Analyst
    Нет не является, ты можешь создать его экземпляр.

    Вот так будет абстрактный.
    from abc import ABC, abstractmethod
    class Shape(ABC):
    
        @abstractmethod
        def area(self):
            pass
    Ответ написан
    1 комментарий
  • Что изучать дальше?

    Maksim_64
    @Maksim_64
    Data Analyst
    Начни и продолжай разрабатывать проект, постепенно увеличивая его сложность и улучшая его качество. Используй git. Многие навыки тяжело развить вне контекста проекта.
    Ответ написан
    Комментировать
  • Есть ли смысл учить школьную статистику и вероятность?

    Maksim_64
    @Maksim_64
    Data Analyst
    Если все требования для теории вероятности в порядке, дискретная математика, для дискретных переменных, интегрирование, дифференцирование для непрерывных, алгебра для работы с выражениями, линейная алгебра, для работы с несколькими переменными, то какая еще школьная статистика и теория вероятности, сразу в бой, к взрослой теории вероятности с нее надо начинать, сначала изучаешь вероятностные модели, а потом, методы статистической оценки этих моделей.
    Ответ написан
    Комментировать
  • Какие задачи решают python + ai если говорить о решении задач за деньги в качестве сотрудника или на фрилансе?

    Maksim_64
    @Maksim_64
    Data Analyst
    Задачи? список где в бизнесе не применяется AI будет короче.

    Например, оптимизация поиска, пользователь ввел на сайте описание товара, и получил наиболее подходящие результаты. Звучит просто, а по факту все сложно. Например может потребоваться, создание своего трансформера (нейронной сети, определенной архитектуры), которая на вход получает, текстовое описание, а на выходе, эмбеддинг. Затем, ты создашь, для всех текстовых описаний эмбеддинги и поместишь их в векторную базу данных. Затем конечный пользователь вводит текст, твой трансофмер, создает эмбединг и делает запрос к векторной базе данных, и база возвращает n-ближайших товаров.

    Замени, товары на документы, текст, на картинки, звук, видео, любое представление информации. Возможности для бизнеса безграничны.

    ИИ за 24 часа, это всегда потеря времени. Развитие это своего рода, сложный процент + определенный шум. Что бы это работало, нужно основание больше 1 и время. Основание, это математика, и дело не в каких то формулах, а в определенном развитии мышления.
    Ответ написан
    3 комментария
  • Выбор специальности образования на магистратуре?

    Maksim_64
    @Maksim_64
    Data Analyst
    Сильно в будущем может повлиять специальность в будущем ?
    Отдохни, а потом займись чем нибудь таким за что заплатят деньги.
    Ответ написан
    Комментировать
  • От чего зависит время ответа модели?

    Maksim_64
    @Maksim_64
    Data Analyst
    время ответа по картинке 3-4 сек

    1. Если ты что то процессируешь по одному в еденицу времени, то CPU будет быстрее и значительно быстрее чем GPU. При этом если ты процессируешь кусками (batch), то GPU даст буст вплоть до 100 раз. Ты должен даже сформировать правильный размер (batch size), сколько картинок ты даешь за раз. Модель должна принимать массив, с представлениями картинок.

    2. В целом свой воркфлоу ты должен делить на CPU bounded, GPU bounded и I/0 (input/output). И оптимизировать, например чтение с диска картинок это I/O операции, которые требуют определенной оптимизации.

    По итогу. Сравнение по одной картинке смысла не имеет и на CPU будет быстрее. Сравнивать нужно пайплайн на большом количестве + если не оптимизировать I/O, то система может простаивать, ожидая выполнения медленной операции, например загрузка картинки.
    Ответ написан
  • Как создать паттерн для библиотеки re, в котором первая группа не будет повторяться, а вторая будет?

    Maksim_64
    @Maksim_64
    Data Analyst
    Честно сказать не совсем понял, что в итоге ты хочешь сделать. Предположу что объеденить числа и фрукты в одну группу и собрать все такие группы.
    taken = re.findall(r'([0-9]+\D+)', string=string)
    затем легко, удалить лишние символы даже обычным питоном.
    Ответ написан
  • Говорят,что не надо знать матем. при изучении программирования, но почему все задачи математические?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Способов изучать программирование множество, большинство не требуют чего то большего чем школьная программа.

    2. На работе математические требования зависят от области применения.

    Скорее всего при самостоятельном обучении, ты встал на путь, который требует математику.
    Ответ написан
    Комментировать
  • Как распарсить файл в табличной верстке через beatifulsoap?

    Maksim_64
    @Maksim_64
    Data Analyst
    У тебя всегда таблица в htnl используй подходящуюю структуру данных пандас датафрейм.

    import pandas as pd
    from io import StringIO  
    html = '''<!-- SW --><TABLE WIDTH=100%><TD CLASS=pt><A NAME="installed programs">Установленные программы</A><TR><TD><HR></TABLE><TABLE><TR><TD WIDTH=16>&nbsp;<TD WIDTH=16><TD><TD><TD><TD><TD><TD>
    <TR><TD><TD><TD><B>Программа</B>&nbsp;&nbsp;<TD CLASS=cr><B>Версия</B>&nbsp;&nbsp;<TD CLASS=cr><B>Размер</B>&nbsp;&nbsp;<TD><B>GUID</B>&nbsp;&nbsp;<TD><B>Издатель</B>&nbsp;&nbsp;<TD CLASS=cr><B>Дата</B>
    <TR><TD><TD><TD>64 Bit HP CIO Components Installer&nbsp;&nbsp;<TD CLASS=cr>16.2.1&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{F8F948EA-5AEA-4158-8821-A2F788ECE936}&nbsp;&nbsp;<TD>Hewlett-Packard&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
    <TR><TD><TD><TD>HP LaserJet Pro M201-M202&nbsp;&nbsp;<TD CLASS=cr>15.0.16064.399&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{e71f6d30-080d-43ef-87e0-1ac4d7f8adfa}&nbsp;&nbsp;<TD>Hewlett-Packard&nbsp;&nbsp;<TD CLASS=cr>
    <TR><TD><TD><TD>HP Unified IO&nbsp;&nbsp;<TD CLASS=cr>2.0.0.434&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{F1390872-2500-4408-A46C-CD16C960C661}&nbsp;&nbsp;<TD>HP&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
    <TR><TD><TD><TD>HP Update&nbsp;&nbsp;<TD CLASS=cr>5.005.002.002&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{912D30CF-F39E-4B31-AD9A-123C6B794EE2}&nbsp;&nbsp;<TD>Hewlett-Packard&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
    <TR><TD><TD><TD>Mesh Agent&nbsp;&nbsp;<TD CLASS=cr>2022-12-02 22:42:16.000+03:00&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>Mesh Agent&nbsp;&nbsp;<TD>&nbsp;&nbsp;<TD CLASS=cr>
    <TR><TD><TD><TD>Microsoft Edge&nbsp;&nbsp;<TD CLASS=cr>132.0.2957.115&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>Microsoft Edge&nbsp;&nbsp;<TD>Корпорация Майкрософт&nbsp;&nbsp;<TD CLASS=cr>2025-01-20
    <TR><TD><TD><TD>Microsoft Office LTSC профессиональный плюс 2021 - ru-ru&nbsp;&nbsp;<TD CLASS=cr>16.0.14332.20345&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>ProPlus2021Volume - ru-ru&nbsp;&nbsp;<TD>Microsoft Corporation&nbsp;&nbsp;<TD CLASS=cr>
    <TR><TD><TD><TD>Microsoft Update Health Tools&nbsp;&nbsp;<TD CLASS=cr>3.74.0.0&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{1FC1A6C2-576E-489A-9B4A-92D21F542136}&nbsp;&nbsp;<TD>Microsoft Corporation&nbsp;&nbsp;<TD CLASS=cr>2023-11-14
    <TR><TD><TD><TD>Mozilla Firefox (x64 ru)&nbsp;&nbsp;<TD CLASS=cr>134.0.1&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>Mozilla Firefox 134.0.1 (x64 ru)&nbsp;&nbsp;<TD>Mozilla&nbsp;&nbsp;<TD CLASS=cr>
    <TR><TD><TD><TD>Mozilla Maintenance Service&nbsp;&nbsp;<TD CLASS=cr>113.0.1&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>MozillaMaintenanceService&nbsp;&nbsp;<TD>Mozilla&nbsp;&nbsp;<TD CLASS=cr>
    <TR><TD><TD><TD>Office 16 Click-to-Run Extensibility Component&nbsp;&nbsp;<TD CLASS=cr>16.0.14332.20345&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{90160000-008C-0000-1000-0000000FF1CE}&nbsp;&nbsp;<TD>Microsoft Corporation&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
    <TR><TD><TD><TD>Office 16 Click-to-Run Licensing Component&nbsp;&nbsp;<TD CLASS=cr>16.0.14332.20345&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{90160000-007E-0000-1000-0000000FF1CE}&nbsp;&nbsp;<TD>Microsoft Corporation&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
    <TR><TD><TD><TD>Office 16 Click-to-Run Localization Component [Русский (Россия)]&nbsp;&nbsp;<TD CLASS=cr>16.0.14332.20281&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{90160000-008C-0419-1000-0000000FF1CE}&nbsp;&nbsp;<TD>Microsoft Corporation&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
    <TR><TD><TD><TD>STDU Viewer version 1.6.361.0&nbsp;&nbsp;<TD CLASS=cr>1.6.361.0&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>STDU Viewer_is1&nbsp;&nbsp;<TD>STDUtility&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
    <TR><TD><TD><TD>Update for x64-based Windows Systems (KB5001716)&nbsp;&nbsp;<TD CLASS=cr>8.94.0.0&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{DA80A019-4C3B-4DAA-ACA1-6937D7CAAF9E}&nbsp;&nbsp;<TD>Microsoft Corporation&nbsp;&nbsp;<TD CLASS=cr>2024-10-16
    <TR><TD><TD><TD>VixWin Platinum&nbsp;&nbsp;<TD CLASS=cr>3.50.000&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{81695582-88F8-47A6-8431-C10617AF058A}&nbsp;&nbsp;<TD>Gendex&nbsp;&nbsp;<TD CLASS=cr>2023-05-19
    <TR><TD><TD><TD>WinRAR 6.21 (64-разрядная)&nbsp;&nbsp;<TD CLASS=cr>6.21.0&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>WinRAR archiver&nbsp;&nbsp;<TD>win.rar GmbH&nbsp;&nbsp;<TD CLASS=cr>
    <TR><TD><TD><TD>КриптоПро CSP&nbsp;&nbsp;<TD CLASS=cr>5.0.12330&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{50F91F80-D397-437C-B0C8-62128DE3B55E}&nbsp;&nbsp;<TD>Компания КриптоПро&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
    <TR><TD><TD><TD>КриптоПро ЭЦП Browser plug-in [Русский (Россия)]&nbsp;&nbsp;<TD CLASS=cr>2.0.14816&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{E12CC7EE-36B7-4AAA-924E-2F5CD75BCECF}&nbsp;&nbsp;<TD>Компания КриптоПро&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
    <TR><TD><TD><TD>Платные услуги К1-1&nbsp;&nbsp;<TD CLASS=cr>0.1&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>{E59C5221-50B3-420C-84C0-DF40A1AC280E}&nbsp;&nbsp;<TD>Maximus&nbsp;&nbsp;<TD CLASS=cr>2023-05-18
    <TR><TD><TD><TD>Среда выполнения Microsoft Edge WebView2 Runtime&nbsp;&nbsp;<TD CLASS=cr>131.0.2903.146&nbsp;&nbsp;<TD CLASS=cr>Неизвестно&nbsp;&nbsp;<TD>Microsoft EdgeWebView&nbsp;&nbsp;<TD>Корпорация Майкрософт&nbsp;&nbsp;<TD CLASS=cr>2025-01-16
    </TABLE><BR><BR>
    '''
    table = pd.read_html(StringIO(html),header=[1])[0]
    print(table)


    Все задача решается в одну строчку кода table = pd.read_html(StringIO(html),header=[1])[0]затем выбираешь нужные тебе колонки, параметр header это с какой строки считать имя колонок, на другом примере его значение может, отличатся, по этому можешь его опустить, а выяснить нужные локации колонок, уже после.
    Ответ написан
    3 комментария
  • Какие ошибки в понимании объектов?

    Maksim_64
    @Maksim_64
    Data Analyst
    (3).__class__- здесь объект создался, затем ты обращаешься к его атрибуту.

    3.__class__ - здесь при его создании произошла ошибка (если быть точным даже на стадии парсинга ошибка), питон пытается спарсить, как float, и у него естественно не получается.
    Ответ написан
    Комментировать
  • Как устроиться на работу Data Engineer?

    Maksim_64
    @Maksim_64
    Data Analyst
    Откликайся на все что связанно с данными, не нужно пытаться зайти именно в data engineer. В большинстве компаний которые работают с данными нет такой позиции.
    Ответ написан
    2 комментария
  • Как сделать содержание в markdown с символом № в тексте?

    Maksim_64
    @Maksim_64
    Data Analyst
    Оно и не должно работать, то что в круглых скобках должно совпадать с именем хеадера, на который ты переходишь только вместо пробелов знак '-'. То есть вот так
    ### Содержание
    1. [Начальное состояние](#Начальное-состояние)
    2. [Шаг №1](#Шаг-№1)
    3. [Шаг №2](#Шаг-№2)
    4. [Шаг №3](#Шаг-№3)
    Ответ написан
  • Чем теперь пользоваться, когда Хабр Фриланс закрылся?

    Maksim_64
    @Maksim_64
    Data Analyst
    Делай хорошее, привлекательное резюме, и размещай его на сайтах поиска работы, пока и они еще не умерли.
    Ответ написан
    8 комментариев
  • Почему self интерпретируется как None в ходе инициализации __init__?

    Maksim_64
    @Maksim_64
    Data Analyst
    Не очень понятно, у тебя есть описание метода __str__, строковое представление объекта, в котором ты описал его логику (в зависимости от значения атрибутов объекта), затем, ты вызываешь print, который автоматически вызывает __str__ и там происходит ровно то что ты описал, то есть print(экземпляр класса) выведет ровно то, что возвращает __str__, если он был определен, если нет то стандартно ссылку в памяти на объект экземпляра.
    Ответ написан
    Комментировать
  • Нужно ли ехать в Москву из региона если устраиваешься удаленно программистом?

    Maksim_64
    @Maksim_64
    Data Analyst
    Я так работаю, живу в регионе, а работаю удаленно, мой текущий трудовой договор подписан электронной подписью. Если интересен процесс то вот несколько пунктов.

    1. Получение ЭЦП в удостоверяющем центре, стоит не дорого.

    2. Дают флешку нужно еще поставить софт на компьютер, софт ставишь либо сам, либо их специалист через какой-нибудь анидеск.

    3. У тебя появляется аккаунт в системе электронного документооборота например в СБИС.

    4. Заходишь в свой аккаунт, либо загружаешь туда электронную версию ТК либо тебе туда ее и присылают, внимательно читаешь, если что жмешь утвердить и отсылаешь обратно, работодателю.

    Все, ты официально трудоустроен, и ТК подписанный ЭЦП ни чем не отличается, от ТК подписанного в офисе.
    Ответ написан
    9 комментариев
  • Можно ли через numpy или pandas удалить строки в многомерном массиве, элементы которого содержат два и более разных значений?

    Maksim_64
    @Maksim_64
    Data Analyst
    Можно хоть в numpy, хоть в pandas. Учи что такое булевая маска. И как с ее помощью выбирать подсеты массива.
    array = np.array([
    ['петя', 'ваня', 'ира'],
    ["катя", 'саша', 'ира'],
    ['петя', 'миша', 'ира'],
    ['петя', 'миша','саша'],
    ])
    
    cond1 = np.any((array == 'петя'), axis=1)
    cond2 = np.any((array == 'ира'), axis=1)
    comb = cond1 & cond2
    array[~comb]


    Сейчас перечитал вопрос и смотрю, в оглавлении вопроса ты одно спрашиваешь а в самом вопросе другое.
    удалить строки в многомерном массиве, элементы которого содержат два и более разных значений
    это означит оставить строки только с одинаковыми значениями. изпользуй np.unique()

    unique_per_row = np.array([len(np.unique(row)) for row in array])
    array[unique_per_row == 1]
    Ответ написан
    3 комментария
  • Чем автоматизировать некоторые задачи обработки фото с распознаванием местоположение лица?

    Maksim_64
    @Maksim_64
    Data Analyst
    Если скорость не важна не надо миллионы в сутки обрабатывать то вот этот проект https://pypi.org/project/deepface/

    В несколько строчек кода сможешь выполнить задачу. Проблема данного проекта он не оптимизирован под GPU, что бы GPU имело смысл, ты должен давать нейронной сети сразу несколько фото, в терминологии нейронных сетей (batch). С данной библиотекой ты просто циклом будешь проходится по списку фотографий и давать нейронным сетям по одной, что на порядки медленнее.

    Если их надо миллионы в день процессировать то тогда надо напрямую с нейронкой работать и запускать на GPU RetinaFace будет хорошим выбором.

    В библиотеке которую предложил собраны много моделей для определения области где расположено лицо, а также создания эмбеддингов, для последующего распознавания.
    Ответ написан
    Комментировать
  • Выдаёт ошибку: cannot access local variable 'status1' where it is not associated with a value. Что делать?

    Maksim_64
    @Maksim_64
    Data Analyst
    твои if elif не покрывают всех условий. Либо добавь else и там чему равен status1, когда все вышеперечисленные условия False. Или проверяй status там не то что ожидаешь. Может например там строка, а ты проверяешь на соответствие числу, может еще что-то.
    Ответ написан
    1 комментарий