Задать вопрос
  • Не копятся ли строки в памяти при работе с python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Нет при такой конструкции, не копятся.

    У каждого объекта в памяти есть счетчик указателей, когда он равен нулю, объект уничтожается. По тому что нет возможности к нему обратится. Упрощенное правило, если ты не можешь обратится к объекту он будет уничтожен.

    html (упрощенно это именованный указатель на адресс в памяти) = myData.text (сам объект)
    html - это выполнится потом = myData.text - сначала выполнится эта часть кода. счетчик = 1
    html = html.replace('rub', 'руб') сначала выполнится эта часть кода. счетчик = 1 при этом myData.text - счетчик для этого объекта стал 0, он уже навсегда потерян.

    del html - сам по себе не удаляет объект, а понижает счетчик на один, что в свою очередь, если у объекта, только один именованный указатель приведет к удалению.

    Это упрощенно, у этого есть свои нюансы, связанные с оптимизацией. Плюс в первую очередь для понимания поведения объектов надо учитывать мутабельность/не мутабельность.
    Ответ написан
    Комментировать
  • Как получить детальные данные по лицу с фото?

    Maksim_64
    @Maksim_64
    Data Analyst
    То что ты описываешь называется эмбеддинг. Затем эти самые эмбеддинги используются для распознавания, нахождение ближайших эмбеддингов.

    https://pypi.org/project/deepface/
    Это набор моделей с простым интерфейсом не оптимизированным под GPU. Можно даже эмоции извлекать, можно координаты где лицо или лица на фото, пол, и т.д.
    Ответ написан
    Комментировать
  • Извлечение таблиц со спецификациями из PDF чертежей металлоконструкций - решаемо? Или я встрял?

    Maksim_64
    @Maksim_64
    Data Analyst
    Было дело работал с российскими нормативными документами гостами. По сталям и фиттингам для трубопроводов.

    1. Качество pdf очень важная история. Если совсем плохое парсер не возьмет (нужно искать в интеренте) есть открытые нормативные базы.
    2. парсеры (tabula, camelot) с множеством настроек, в зависимости от того, как настроишь зависит практически все.
    3. Ну и pandas обе библиотеки вернут список с дата фреймами, где фрейм это каждая таблица. Обычно требует много пост процессинга, например две таблицы на странице а их конкатенировать одна на одну, таблицы имеют "многоуровневую шапку" column multi index на языке пандаса и т.д.

    После пункта три, до желаемого результата одна строчка кода.
    Ответ написан
    Комментировать
  • Как указать модификатор S в re.sub python?

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

    Напрмер,
    re.findall(pattern, string, flags=0)

    re.sub(pattern, repl, string, count=0, flags=0)

    В первом случае ты указываешь именованный параметр flags, как позиционный, и он оказывается на правильной позиции, во втором случае его позиция на два больше. То есть при вызове метода sub нужно указывать flags как именованный парметр.
    Ответ написан
    1 комментарий
  • Как правильно вывести результат регулярного выражения в Python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Так если ищем паттерн в твоем случае (букву, для поиска буквы регулярка не нужна) в строке, почему match? Замени re.match на re.search, код отработает, но тут опять таки, если он ничего не найдет, то также будет none, добавь условие какое нибудь, например.

    import re
    a = 'samsung'
    b = re.search(r'u', a)
    if b:
        print(b)
        print(b.start())
        print(b.end())
    else:
        print('Паттерн не найден')
    Ответ написан
    7 комментариев
  • Как удалить строки в таблице с одинаковыми параметрами по столбцам?

    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 комментариев