• Как перебрать значения кортежа нужным мне образом?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну циклом делаете да и все,
    regions = ['Томская область', 'Московская область', 'Ленинградская область']
    cities = ['Томск', 'Москва', 'Санкт-Петербург']
    pop = [1051, 8594, 2027]
    for region, city, population in zip(regions, cities, pop):
        print(f'{region}: столица {city}, население {population} тыс. человек')
    Ответ написан
  • Почему не работает код?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну что бы ваш код заработал, (почти ничего не меняя) то вот так должно заработать (избавляемся от \ используя replace и берем первый с конца элемент, а не первый как у вас) по крайней мере на том кусочке файла что есть он работает.
    for vivod in city.split():
        if vivod.startswith('G') and int(city.strip().replace('\\','').split(" ")[-1])>500000:
            print(vivod)


    Ну а так по серьезней парсинг бы написать следовало бы.
    Ответ написан
    2 комментария
  • Почему не обновляет значение переменной при перезапуске скрипта BS4?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну если вы зайдете в инспектора щелкаете правой кнопкой мыши inspect затем settings (иконка в правом верхнем углу инспектора) затем поставите галочку Disable JavaScript и обновите страницу вы увидите что стоимость перестала обновляться (так как это осуществлялось javascript'ом). Вообще это надо делать всегда когда парсишь странички средствами bs4, потому что при отключенном javascript это то как будет видеть bs4 твою страничку так как он НЕ работает c javascript.

    Это ответ почему, как поправить средствами bs4 ответ никак.
    Ответ написан
  • Почему pandas выдает ошибку?

    Maksim_64
    @Maksim_64
    Data Analyst
    metrics_df[[
        "same_intervals_between_requests"

    пропущена запятая, посмотрите внимательнее. Если же причина не в этом (ошибка то очевидна), может ваше исключение до этого выскакивает, то опубликуйте задачу (что вы хотите сделать.). Возьмите маленький фрейм и во что он должен превратится. По тому что как можно поправлять код? Без задачи (что вы хотите что бы этот код делал).

    Потом вот здесь тоже ошибка
    df[["time_local", "id_session"]].groupby("id_session").apply(count_metric_using_shift)

    вы выбираете сабсет и потом группируете, откуда ему взять колонки на которых запускать вашу функцию (весьма сомнительную).

    Вот я на маленьком фрейме сконструировал такую же ошибку, как у вас
    вот так будет ошибка потому что колонок где запускать функцию нет
    df = pd.DataFrame({
        'Cat':['A','A','B','A','B'],
        'Num1':[1,2,3,4,5],
        'Num2':[6,7,8,9,10]
    })
    df[['A','B']] = df[['Cat']].groupby('Cat').apply('mean')

    да ее можно убрать просто оставив df[['A','B']] =df.groupby('Cat').apply('mean') Но естествеено смысла в этом нет. Оно nan вернет. Нужно все переписывать, по этому и спрашиваю, какая задача.
    Ответ написан
  • Как разбить временной столбец на интервалы?

    Maksim_64
    @Maksim_64
    Data Analyst
    Смотрите если уж хочется разбивать на интервалы и создавать столбец с категориями то есть несколько стратегий но в целом для этого используется функция pd.cut, вот для вашей задачи я написал код.
    df= pd.DataFrame({'time':pd.date_range('2023-03-22', periods=48, freq='H')})
    bins = [0,5,11,16,22,24]
    labels = ['Ночь', 'Утро','День','Вечер','Ночь']
    df['session'] = pd.cut(df['time'].dt.hour, bins=bins, labels=labels, include_lowest=True,ordered=False)
    df

    Как вы увидите он создает столбец с желаемыми интервалами, вы можете поработать с параметрами на случай если это не совсем желаемое поведение (так как вопрос не совсем ясно сформулирован), в целом это вот такой подход.

    Имейте ввиду да для определенных задач это имеет смысл, создавать категориальную переменную для интервала времени, но для многих случаев объекты работающие с временем и датой достаточны умны и вы можете осуществлять группы для временной последовательности это не обязательно GroupBy есть специальный метод resample. Для выборки вы можете установить вашу временную последовательность в индекс и затем использовать удобный метод between_time, и многие, многие другие. И в целом временная последовательность имеет dt атрибут и затем можно к ней обращаться day, hour, year и.т.д.
    Ответ написан
    1 комментарий
  • Как реализовать классификатор на датасете рукописных цифр?

    Maksim_64
    @Maksim_64
    Data Analyst
    По этой ссылке репозитарий с реализацией вашей задачи на чистом numpy (python библиотека), которая предоставляет векторизованный массив. (все функции написаны вручную) не каких ML алгоритмов из коробки не используется.

    Реализуйте на том языке на котором вам необходимо. Я думаю иметь готовый код без ML библиотек это хорошее начало для решения вашей проблемы.

    Так же автор репозитария написал статью на https://towardsdatascience.com/ вы можете зарегистрироваться там они дают по моему три бесплатные статьи в месяц и изучить его статью, как весь процесс организовать и т.д. Название статьи "MNIST Handwritten digits classification from scratch using Python Numpy".
    Ответ написан
    Комментировать
  • Как создать список на два элемента с заполнением None?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну если исходит из того что вы показываете как вам хотелось бы видеть ваш testList
    то вот так сработает
    from itertools import zip_longest
    print(list(zip(*zip_longest(*testList, fillvalue=None))))
    Ответ написан
    5 комментариев
  • Как в pandas искать по двум фразам и более?

    Maksim_64
    @Maksim_64
    Data Analyst
    И так вы создаете фрейм из csv файла, затем присваиваете имена колонкам. Это первое место распечатайте фрейм и посмотрите что выглядит так как вы ожидаете.

    Затем исходя из вашего кода вы хотите ВЫБРАТЬ подсет данных по критерию наличия в поле колонки name подстроки 'i3' или 'oem'. То есть если любая из этих подстрок находится в поле колонки name вы выбираете весь этот ряд.

    И так код ваш в принципе верный, если задача это та которую я указал. Вы конечно можете импортировать re, и добавить параметр, flags=re.IGNORECASE. Но в целом на сколько я помню нюансы разницы между case=False нет работать должно и так и так.

    https://pandas.pydata.org/docs/reference/api/panda... вот ссылка на документацию (возможно вы ее открывали), там есть пример на поиск одной или более подстрок, и он естественно работает (но вы все так и сделали).

    Подумайте эту ли задачу вы решаете, может другую, и приходит ли фрейм в том виде в котором вы ожидаете.

    df[df.name.str.contains('i3|oem', regex=True, case=False)])

    Вот это ваш код выберет все строки у которых в колонке name поле содержит подстроку 'i3' ИЛИ 'oem' и не важно в каком регистре (нижнем или верхнем).
    вот слепил игрушечный маленький фрейм
    df = pd.DataFrame({
        'name':['23i3f','dOemf','25','s2f5','df5'],
        'amount':[1,2,3,4,5]
    })
    
    print(df[df.name.str.contains('i3|oem',regex=True,flags=re.IGNORECASE)])

    И он работат, как и ожидается.
    Ответ написан
    1 комментарий
  • Как поменять пароль к pgadmin4?

    Maksim_64
    @Maksim_64
    Data Analyst
    когда вошли в pgadmin в правом верхнем углу щелкаете по панельке (авторизованный юзер), и там есть сменить пароль, добавить двухуровневую аутентификацию. Там же в меню есть Users (пользователи) заходите в него нажимаете крестик добавить и заполняете данные нового пользователя.
    Ответ написан
    Комментировать
  • Как записать Словарь в CSV по СТОЛБЦАМ в Python?

    Maksim_64
    @Maksim_64
    Data Analyst
    в модуле csv есть класс DictWriter.
    Ну я бы использовал pandas потому что проще. Из той структуры данных что у вас есть легко создать dataframe и писать куда захочется хоть в csv, хоть в базу, хоть в excel и т.д.
    предварительно установив pandas
    import pandas as pd
    df = pd.DataFrame(data)
    df.to_csv('file.csv')

    Плюс с этим фреймом можно работать какого только функционала для него нет. И писать куда угодно удобно. И там параметров записи сколько хочешь в методе (to_csv), отрегулировать легко.
    Ответ написан
  • Как перенести данные с Python в Excel?

    Maksim_64
    @Maksim_64
    Data Analyst
    Гуглил, находил информацию только уже через собранные данные в словаре/массиве, а не циклично дописывались постоянно
    Ну так правильно у данных должна быть структура соответствующая что бы в excel писалось по столбцам. еще удобнее это создавать новый pandas фрейм в цикле (для каждых новых данных) и добавлять через него в excel. У него есть метод to_excel у него есть параметр mode там можно поставить 'a' что бы файл не перезаписывался а строки добавлялись туда, а также параметр header его можно поставить в False что бы имена столбцов не писались и других куча что бы проблем не возникло. Примеров документация статьи в интернете.
    Ответ написан
  • Как повысить точность модели машинного обучения?

    Maksim_64
    @Maksim_64
    Data Analyst
    Features, предоставленные мне для этой задачи, как я уже написал, обезличенные, поэтому они все нужные

    Данные могут быть числовые или категориальные. В свою очередь категориальные делятся на nominal и ordinal из чего следует что во первых если они присутствуют их надо закодировать и второе закодировать правильно, в sklearn есть OrdinalEncoder и OneHotEncoder. О том сделали ли вы это (и правильно ли сделали) вы нам конечно же не сообщаете, это действие относится к этапу Preprocessing data, там же Standard Scaler и другие возможно очень полезные трансформаторы вплоть до создания своего кастомного трансформатора.
    Просто данные не в один алгоритм не запихивают. Их приводят к такому виду (трансформируют) на которых алгоритм хорошо работает, а потом уже имеет смысл тюнить. Вам нужен результат. пожалуйста https://scikit-learn.org/stable/data_transforms.html . Вот это та глава в документации (а документация у sklearn как учебник) которая поправит дело. Результат достигается посредством трансформаций данных и в этой области лежит решение. Глава 6 что я вам скинул большая и за несколько часов или даже дней ее не осилить (если конечно же учится а не кусочки кода запускать). Начните с того что бы научится пользоваться объектом Pipeline (он не так прост как кажется) И с применением хотя бы простого трансформера StandardScaler и что бы без ошибок. Чтобы метод fit_transform вызывался на тренировочном сете а на тестовом только transform и т.д. или с правильным использованием Pipeline он это сам сделает. И приходите с кодом где вы перед тренировкой трансформируете данные.

    На данный момент у вас нет ничего 0.6 - 0.65 точность, у вас 300 / 500 = 0.6 то есть абсолютно случайно без какого либо обучения в среднем на длинной дистанции в 60% случаях можно угадывать статус 1.

    Мне нужно построить модель, которая будет предсказывать будущий статус.
    Что значит будущий речь идет о временной последовательности, а не о классической классификации?. Тогда препроцессинг должен быть сделан совершенно другой начиная от сплитов и т.д. В таком случае все данные нужно агрегировать разными функциями в пределах окна и на них учить, обязательно это проясните.
    Ответ написан
  • Как настроить пакет psycopg2 в VsCode для jupyter notebook на macOS M1?

    Maksim_64
    @Maksim_64
    Data Analyst
    Нажимаем ctrl+shift+p далее Python: Select Interpreter. Выбираете из тех окружений которые есть (там версии Python и пути к нему в списке.) которое вы будете использовать. После того как вы это сделаете ОБЯЗАТЕЛЬНО закрываете свой терминал (открытый внутри vs code (если конечно же он был открыт)) и cоздаете новый ctrl+shift+` и затем в этом терминале устанавливаете все ваши пакеты и они будут устанавливаться именно в это окружение. Не забудьте ОБЯЗАТЕЛЬНО создать новый терминал, он автоматически не меняет окружение в терминале после выбора Interpreter.
    Ответ написан
    2 комментария
  • Как вывести в строке только числа?

    Maksim_64
    @Maksim_64
    Data Analyst
    import re
    text = '1456gtefd14696'
    for number in re.findall(re.compile(r'\d+'), text):
        print('Число',number, end=' ')
    Ответ написан
    Комментировать
  • Пытаюсь научиться работе с нейросетями, столкнулся с такой ошибкой, что делать?

    Maksim_64
    @Maksim_64
    Data Analyst
    Внимательно посмотрите на ваш кусочек, а это как должно быть.
    W1 = np.random.randn(IND, HD)
    b1 = np.random.randn(HD)
    W2 = np.random.randn(HD, OUTD)
    b2 = np.random.randn(OUTD)

    И код заработает, вы перезаписываете переменные, что в итоге делает невозможным операции из линейной алгебры в силу несоответствия размерности объектов.
    Ответ написан
    1 комментарий
  • Как правильно составить цикл в phyton?

    Maksim_64
    @Maksim_64
    Data Analyst
    Для начала оберните ваш код тегом python.

    ваш псевдо код для сбора данных будет иметь вид
    result = []
    for url in urls:
        r = requests.get(url)
        soup = BeautifulSoup(r.content, 'html.parser')
        status = soup.find('div', class_='closed')
        titles = soup.find('h1', class_='section_hero__title')
        id= soup.find('p', class_='numer_id')
        result.append((url, status, titles, id))


    где urls это ваши urls из файла. Ваш результат будет список кортежей, где каждый кортеж имеет вид (url, status,titles,id). Полученную структуру данных легко записать в csv файл.
    можно например так.
    import csv
    with open('file.csv', mode='w') as file:
        writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
        writer.writerow(['url','status','titles','id'])
        writer.writerows(result)

    Вот так запишет ваши данные первый ряд это названия колонок в вашем csv, а потом данные. Если названия колонок не нужны то уберите строку. writer.writerow(['url','status','titles','id']) из кода.

    Ну а так я бы рекомендовал установить pandas создаьть dataframe посмотреть на него может если надо что то подправить и из него писать csv например вот так
    import pandas as pd
    
    df = pd.DataFrame(data=result,columns = ['url','status','titles','id'])
    df.to_csv('file.csv')

    здесь мы создаем фрейм и пишем csv файл в функции to_csv можно задать параметер header=False тогда имена колонок не запишутся, плюс есть параметр mode, его можно поставить в 'a' (append) и если файл уже существует он будет добавлять туда новые строки.
    Ответ написан
    3 комментария
  • Как поменять цвет?

    Maksim_64
    @Maksim_64
    Data Analyst
    можно синхронизировать с использованной темой file->preferences->settings->Window затем находите Title Bar Style устанавливаете его в custom по умолчанию там (native). Далее он спросит о том что изменения требуют перезапуска, соглашаетесь и все. Далее ваше меню будет следовать установленной цветовой теме и при ее изменении цвет меню будет меняться вместе с ней.
    Ответ написан
    Комментировать
  • Какой тип нейроной сети выбрать для прогнозирования цен на жилье (академическая задача)?

    Maksim_64
    @Maksim_64
    Data Analyst
    Я бы точно не использовал нейронку для такой задачи . Классические алгоритмы ML предпочтительнее. Ну если хочется именно нейронку то эту проблему можно классифицировать как regression problem. Какой то разницы между нейронками подходящими для решения задач регрессии не будет. гуглишь neural network for regression problem. и выбираешь. Например вот. Пример В примере используется нейросеть которая будет прогнозировать стоимость дома (похожа на твой). Плюс там не только код и ссылка имеется на google colab notebook, со всем кодом (python) так что изучай.
    Ответ написан
  • Как достать ссылку?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну что бы ваш код заработал. В цикле вставьте.
    link.find('a')['href']
    Но в целом я бы изменил код и находил бы вот так а то если в span, class_='sub' более одной ссылки то не сработает.
    измененная версия
    for span in zap.find_all('span', class_="sub", limit = 3):
        for link in span.find_all('a',href=True):
            print(link['href'])
    Ответ написан
  • Как из pdf-файла спарсить таблицу, размещенную на двух страницах и сохранить в Excel?

    Maksim_64
    @Maksim_64
    Data Analyst
    Когда у вас есть два пандас фрейма конкатенируйте их с помощью pd.concat и записывайте объеденный фрейм напрямую в excel.
    псевдо код будет что то вроде этого.
    final_df = pd.concat([df1,df2], ignore_index=True)
    final_df.to_excel('имя файла')

    Все быстро и удобно без лишних записей в csv. Самое сложное это установка tabula бывает капризничает. Но в остальном все просто.
    Ответ написан