Задать вопрос
  • Как распарсить файл в табличной верстке через 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 комментарий
  • Какая функция потерь наиболее подходит для колоризации изображения?

    Maksim_64
    @Maksim_64
    Data Analyst
    Собственно и сам вопрос, как быть?

    Например читать, научные статьи прям на эту тему.
    https://arxiv.org/abs/2204.02980v3
    справа в верхнем, доступные форматы документа. Если с английским тяжело, дай условному чату GPT подходящую часть. Пусть переведет.
    Ответ написан
    Комментировать
  • Как быть с тестовыми заданиями при трудоустройстве?

    Maksim_64
    @Maksim_64
    Data Analyst
    Был фидбек, не был фидбек, не нужно воспринимать все это на свой счет. Больше, активности. Представь себе, следующую ситуацию, баскетбол. Тебе нужно забить три трех очковых подряд, это не просто. Чем больше попыток, зайти на страйк, тем больше шансы. Рецепт один, больше откликаться, выполнять тестовые задания, пытаться удивить в тестовых заданиях и т.д.

    Твоя цель - оффер, и все посторонние мысли о справедливости, какая компания, какое тестовое и т.д. Они только отвлекают и мешают.
    Ответ написан
    Комментировать
  • Как можно разбить строку на слова по всем символам?

    Maksim_64
    @Maksim_64
    Data Analyst
    используй регулярные выражения.
    что-то вроде этого.
    re.findall(r"\b\w+\b", string)
    можно и re.split использовать, при желании.
    Ответ написан
    1 комментарий
  • Какое качество у репозиториев моих Python проектов на GitHub?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Код не смотрел, не потому что лень, а потому что его никто смотреть не будет. Если ты доберешься до технического собеседования, то там все и решится, если нет то нет. На этапе скрининга и общения с рекрутером, наличие github увеличит твои шансы в пределах статистической погрешности.

    2. Хороший или плохой код, это что то из академии, в бизнесе есть код, который отвечает требованиям бизнеса, помимо зарплаты, я еще и хорошие премии получал, за код низкого качества, написанный мной абсолютно осознанно.
    Ответ написан
    Комментировать
  • Какие актуальные требования для специалиста data science?

    Maksim_64
    @Maksim_64
    Data Analyst
    чтобы были шансы на рассмотрение резюме?

    Это не про знания и навыки, а про количество опыта в резюме, процентов на 95. Остальные 5, проект в резюме.

    По скилам:
    1. Английский

    2. Бесплатная книга от создателя pandas https://wesmckinney.com/book/ она познакомит с экосистемой для классического ML (если совсем новичок, лучшая точка для старта)

    3. для классического ML стека, книга (доступна бесплатно) от профессоров стенфорда + довольно сложные упражнения. https://www.statlearning.com/

    4. Для нейронных сетей, нет ничего лучше чем Deep Learning with Python, Second Edition by François Chollet уникальная книга, никогда и нигде не видел объяснения продвинутых концепций столь простым языком, даже за пределами нейронных сетей.

    5. Рекомендация от меня, освой dash + plotly возвращаясь к шансам на рассмотрение резюме, создай dash ML приложение, задеплой его и размести ссылку на него в резюме, это повысит шансы.
    Ответ написан
    Комментировать
  • Как нарисовать ёлку вложенным циклом?

    Maksim_64
    @Maksim_64
    Data Analyst
    height = int(input('Введите высоту '))
    for i in range(1,height+1):
        print(f'{"#"*(i*2-1):^{height * 2}}')
    Ответ написан
    Комментировать
  • Какой курс лучше для начала работы бизнес-аналитиком?

    Maksim_64
    @Maksim_64
    Data Analyst
    Вопросы: как мне уйти в бизнес-анализ?


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

    Анализ прошлого этим в теории и должны заниматься бизнес-аналитик, его задача на основе прошлых данных дать понимание, как все работает.

    Прогнозирование будущего этим занимаются другие специалисты в зависимости от используемых инструментов.

    Какие курсы помогут мне получить знания/навыки для первого оффера?


    Курсы не котируются в IT все виды аналитиков, крайне сложны для входа, обычно действующий специалист, меняет направление.

    Насколько важно для трудоустройства техническое образование?


    Важно умение мыслить, как программист | аналитик | и т.д. Подобное мышление может быть заложено техническим образованием, а может быть и нет. Что значит мышление? Умение сводить проблему к математическому виду (для аналитиков), сама корочка играет незначительную роль.
    Ответ написан
    4 комментария
  • Почему возникает ошибка "length mismatch: expected axis has 3 elements, new values have 4 elements"?

    Maksim_64
    @Maksim_64
    Data Analyst
    мне вот интересно, это задания с курсов каких то безумных? Никто в реале не будет писать функции rename_columns или fillna_values. Реально, если это с курсов это ну совсем не куда не годится.

    Что касается этого безумного кода.

    исходный фрейм у тебя имеет 5 на самом деле 3 колонки, о чем и сказано в ошибке колонок а ты пытаешься установить, 4 вот в этой строке
    test_df.columns = ['Shop_1', 'Shop_2', 'Shop_3', 'Shop_4']

    пример того безумия, что происходит
    df = pd.DataFrame({
        'A':[1,2,3],
        'B':[4,5,6],
        'C':[6,7,8]
    })
    df.columns = ['AA','BB']
    Ответ написан
  • Как правильно тренировать навык аудирования в английском?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну вот смотри, я свободно говорю (коммуникация в англоязычных командах не вызывает никакого стресса) и пониманию английский, учился сам.

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

    2. Начинать надо с историй есть простые истории типо English with stories, и добиваться полного их понимания, тренироваться пересказывать в слух на английском.

    3. Просто потреблять как можно английского контента, какие то блогеры говорят на английском, не обязательно обучающие английскому, просто по интересующей тебя тематике и т.д. Надо построить базу. Сейчас кстати c chatGPT можно пообщаться не много на английском.

    По итогу: Не надо пытаться like a native, это доступно тем кто проживает в англо-говорящей среде плюс старайся прокачивать навыки (а не навык), послушал поговорил сам с собой, важно повторять услышанное.
    Ответ написан
  • Существуют ли эталонно красиво написанные программы?

    Maksim_64
    @Maksim_64
    Data Analyst
    "Качественный код" - весьма размытое понятие. Есть код удовлетворяющий требованиям, где-то важна архитектура, где то алгоритмы, где то и то и другое, а где то надо быстрее выдать MVP, и качество кода не важно до поры до времени.
    Книги + личный опыт лучшее место.
    Ответ написан
    Комментировать