• Как скачать видео?

    Maksim_64
    @Maksim_64
    Data Analyst
    используй pytube, понятно нужно установить python изначально. Но программировать не обязательно, pytube имеет и просто cli интерфейс (то есть команды можно выполнять из командной строки). https://pytube.io/en/latest/ там после установки, раздел https://pytube.io/en/latest/user/cli.html
    Ответ написан
    Комментировать
  • Как устранить ошибку генератора?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну что-то совершенно, не читабельное ты написал. В python генераторами принято называть функции которые возвращают итераторы используя yield. То есть любая функция которая содержит yield называется генератором.

    Твой "генератор" пытается заполнить массив значениями и к генераторам не имеет отношения от слова совсем.

    from field import field это не хорошо. Если тебе нужна переменная из другого модуля то import field затем field.field в том модуле куда импортировал.

    Это я так глазами пробежался, если вникать много чего еще выйдет.

    что касается непосредственно ошибки. То где то в коде ты вместо создания экземпляра класса создал ссылку на объект класса и затем у этого объекта пытаешься найти атрибут. Что бы было понятнее приведу пример.

    class A:
    
        def __init__(self,x):
            self.x = x
    a = A
    print(a.x)
    Выдаст точно такую ошибку. Нужно вместо a=A, написать a=A() со всеми параметрами, или на прямую ты обращаешься к объекту класса а атрибут у тебя экземпляра класса, то есть вот так.
    class A:
        def __init__(self):
            self.x = 'Hello'
    print(A.x)

    Ищи где у тебя в коде такое, а лучше начни писать весь свой код заново.
    Ответ написан
  • Практика очного собеседования для иногородних кандидатов?

    Maksim_64
    @Maksim_64
    Data Analyst
    Хороший пример составить простенькую дискретную модель. Вы получаете работу с вероятностью p и вознаграждением M, ну и соответственно теряете деньги в количестве K с вероятностью 1 - p. Понятно что простое математическое ожидание p*M - K*(1-p), в таких случаях не применяют, а имеют функцию риска, в которой учитывается все прочие факторы например:
    1. Какова цена поездки для вас (на сколько для вас это значимая сумма)
    2. Какова цена опыта интервью (может оно будет первое, а может у вас уже были оффлайн интервью)
    3. Что для вас значит посетить Москву, будет ли это сопутствующим плюсом
    и т.д. то есть подумать и оценить все это дело.
    Ответ написан
    2 комментария
  • Почему DB browser for sqlite и питон выдают разные результаты запроса?

    Maksim_64
    @Maksim_64
    Data Analyst
    контекстный менеджер делает commit но не закрывает базу. То есть ты должен закрывать соединение самостоятельно close(). https://docs.python.org/3/library/sqlite3.html#sql...
    например
    import sqlite3
    con = sqlite3.connect("tutorial.db")
    cur = con.cursor()
    cur.execute("CREATE TABLE movie(title, year, score)")
    cur.execute("""
        INSERT INTO movie VALUES
            ('Monty Python and the Holy Grail', 1975, 8.2),
            ('And Now for Something Completely Different', 1971, 7.5)
    """)
    #con.commit()
    print(cur.execute("SELECT * FROM movie").fetchall())

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

    То есть у тебя только один commit (не явный посредством контекстного менеджера коммитит все что в теле контекстного менеджера) и два insert (второй то вне тела контекстного менеджера), соответственно последний insert не записывается в базу.

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

    Maksim_64
    @Maksim_64
    Data Analyst
    выполнять до те пор пока:
    l не равно k или l не равно km или lm не равно k или lm не равно km
    То есть если хотя бы одно из вышеперечисленных условий истинно выхода не произойдет.
    сделай print каждой переменной и посмотри, как минимум одно из твоих условий истинно, и выхода из цикла не происходит.

    если у тебя в твоих условиях или (or) и в списке хоть один True, то общее выражение будет True.
    Ответ написан
    1 комментарий
  • Как создать простую браузерную игру при помощи ChatGpt?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. GPT пишет код очень не стабильно, делом случая он может и не плохое решение выдать и действительно с экономить время, а иногда это даже не решение (которое не работает), а то что в среде ИИ называют "галлюцинациями" то есть написать полный бред.

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

    3. Качество решений в различных областях сильно варьируется, в каких то он более стабилен, а в каких то его вообще нет смысла использовать.

    По итогу на сегодняшний момент, без человеческого контроля вы не можете рассчитывать на стабильный результат.
    Ответ написан
    3 комментария
  • Как исправить ошибку recursionerror при создании игры?

    Maksim_64
    @Maksim_64
    Data Analyst
    while True: Всегда остается истинным, и получается бесконечный цикл, нужно предусмотреть условие остановки цикла.
    Ответ написан
    Комментировать
  • Как быстро распарсить много json файлов на python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну во первых, pandas read_json и json_normalize (для вложенных json). Затем этот фрейм или подсет фрейма отправляешь в базу, методом to_sql если все делаешь правильно с точки зрения pandas (весь код будет без единого цикла) то это ускорит очень серьезно. Еще больше можно ускорить библиотекой polars она имеет схожий синтакс с pandas у ней куда меньший функционал по манипуляции данных, но она фокусируется на скорости в том числе и чтения файлов.

    Думаю скорости pandas будет достаточно, если нет то polars. Начать лучше с pandas документация очень хорошая, да и кода всего ничего будет.
    Ответ написан
    1 комментарий
  • Как накинуть несколько эффектов MoviePy на видео?

    Maksim_64
    @Maksim_64
    Data Analyst
    Несколько странный кусок кода у вас, отступ за чем-то в принципе должен давать ошибку и не работать. С библиотекой я не работал не разу, но глянув документацию, вот что она говорит.
    класс CompositeVideoClip, это для создания из нескольких видео одного. Если же говорить о наложении эффектов на видео то.
    from moviepy.editor import *
    clip = (VideoFileClip("myvideo.avi")
            .fx( vfx.resize, width=460) 
            .fx( vfx.speedx, 2) 
            .fx( vfx.colorx, 0.5))
    то вот пример из документации для применения нескольких эффектов к видео. Вместо этих эффектов, поставьте ваши или добавьте по необходимости. Думаю код предельно понятный.

    Все эффекты и трансформации на видео доступны здесь https://zulko.github.io/moviepy/getting_started/ef...
    Ответ написан
    Комментировать
  • Список из кортежей в словаре - как это понимать?

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

    Сам код откуда ты его взял, взят для демонстрации создания словаря из популярной структуры данных список с кортежами. У тебя есть ассоциации например l1 = [1,2,3] создаст список, для создания не пустого словаря требуется и ключи и значения, по этому ты либо создаешь его явно d1 = {'A':1,'B':2} либо нужна структура из которой python сможет понять что будет ключами, а что значениями. И список с кортежами (где длинна каждого кортежа обязательно два) такая структура.
    Ответ написан
    Комментировать
  • Как спарсить/вытащить из txt или html файла кусок строки, зная ее специфическое содержание?

    Maksim_64
    @Maksim_64
    Data Analyst
    from bs4 import BeautifulSoup
    
    text = '''
        <tr align="center"><td><a href="#0">First</a></td></tr>,
        <tr align="center"><td><a href="#1">This is second</a></td></tr>,
        <tr align="center"><td><a href="#2">third</a></td></tr>
    '''
    
    soup = BeautifulSoup(text,'html.parser')
    result = [ row.a.text for row in soup.find_all('tr')]
    print(result)

    или result = [ row.text for row in soup.find_all('a')] как удобнее для настройки дополнительных условий парсинга.
    Ответ написан
    Комментировать
  • Как исправить ошибку в работе с turtle?

    Maksim_64
    @Maksim_64
    Data Analyst
    Код абсолютно рабочий. Проверяй, не знаю может, когда ты писал square(bob) ты каким то образом использовал русскую 'о' или когда объявлял. Или может файл, когда писал после какого то запуска, когда ты добавил эту переменную то забыл сохранить изменения.
    Ответ написан
    Комментировать
  • Каким способом посчитать частоту сигнала по нескольким сэмплам?

    Maksim_64
    @Maksim_64
    Data Analyst
    чтобы вычислить частоту

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

    Глянем примеры.
    f(x) = 2*x+3 - детерминистическая
    Normal(0,1) - стохастическая даст случайное значение из Гаусовго распределения с параметрами среднее 0 и стандартное отклонение 1.
    f(x) = 2*x+3 + Normal(0,1) - это третий кейс, когда мы накладываем шум на некую функцию.

    В машинном обучении мы делаем допущении что наша проблема имеет вид Y = F(X) + E.
    Где X - это наши данные на вход, Y - это результат и E это определенная случайная ошибка. Мы говорим существует некая функция F которая детерминистическая и она сопоставляет данные на вход и результат. Так вот задача определить функцию и подобрать параметры которые минимизирует ошибку E.

    То есть на выходе у нас не точная частота, а предсказание частоты (возможно довольно точная).
    В зависимости какие методики и какими свойствами должная обладать оценочная функция это либо scikit-learn либо statsmodels либо нейронки Tensorflow + Keras.

    Если идет поиск точной частоты (отсутствует вариативность в задаче) то это поиск обычных параметров функции. То есть все это должно быть представлено как система уравнений (при условии достаточности информации) и просто решено. это scipy, numpy, sympy.
    Ответ написан
  • Почему с помощью Pandas не меняются данные в строке CSV файла?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну смотри это происходит потому что мы ставим индексом ИМЯ и его же меняем, можно ли это обойти, конечно элементарно. Все оставляешь как есть вот здесь добавляем параметр
    df = pd.read_csv('directory2.csv').set_index('Имя', drop=False).rename_axis('_Имя', axis=0)
    что бы у нас колонка имя не пропадала, и меняем имя у индекса, что бы он отличался от имени колонки.
    ну и при записи в файл индекс не пишем что бы ничего не дублировалось.
    df.to_csv('directory2.csv', index=False)

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

    И будь внимателен при парсинге ввода, там где указываешь имена колонок, если ты введешь колонку которой нет он ее просто добавит новой и все. df.columns должен содержать fields_to_change, по этому может добавочный небольшой защитный код написать придется, что бы например регистры не перепутались, пробелы лишние не оказались, можешь даже проверку ввести на ввод что пользователь ввел существующие колонки. Имена колонок лежат в df.columns
    Ответ написан
    3 комментария
  • Как в Python можно изменить запись в CSV?

    Maksim_64
    @Maksim_64
    Data Analyst
    Нет ничего проще для такой задачи чем использовать pandas.
    Вот сделал игрушечный пример, сначала создаю csv в первой части для демонстрации, потом обновляю любые подсеты данных, при вводе пользователя.
    import pandas as pd
    # Первая часть создание файла
    df = pd.DataFrame({
        'Name':['Petr','Maks','Aleksandr'],
        'Age':[30,40,50],
        'Salary':[500,700,600]
    })
    df.to_csv('data.csv', index=False)
    
    # Вторая часть обновление
    name = input('Введите Имя, чьи данные хотите изменить?  ')
    fields_to_change = input('Какие данные Вы хотите изменить? например Age, Salary: ').split(',')
    data_to_update = {}
    for field in fields_to_change:
        data_to_update[field] = input(f'Введите {field}: ')
    
    df = pd.read_csv('data.csv').set_index('Name')
    df.loc[name, fields_to_change] = data_to_update
    df.to_csv('data.csv')
    print('Спасибо, данные обновлены')

    Вторая часть это непосредственно код который будет обновлять. То есть та часть которая тебя интересует.
    Ответ написан
    2 комментария
  • Как исправить код? Что я делаю не так?

    Maksim_64
    @Maksim_64
    Data Analyst
    Попробуй другой распознаватель речи не google.
    Вот глянь код https://github.com/Uberi/speech_recognition/blob/m... там используются разные распознаватели в том числе и google. Поработай с ним, если начало что то получаться, то тогда начинай настраивать уже под свои нужды.
    Ответ написан
  • Как произвольно трансформировать изображение в Python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Мало конкретики, а что собственно не получается. Если говорить в целом про геометрические трансформации. Сдвинуть ну просто вектор добавить, поворот матрицу с картинкой "умножить" (не по элементно конечно, математическое умножение (dot product) )" на матрицу с sin и cos, можешь загуглить какую именно, поменять размер опять таки математическое умножение на диагональную матрицу (все элементы 0 кроме тех что по диагонали) и т.д.
    opencv все это дело как и многое другое естественно поддерживает. https://docs.opencv.org/4.x/da/d6e/tutorial_py_geo... вот прямо из документации.

    За одно и с нейронными сетями "косвенно" познакомишься. Геометрические трансформации в многомерном пространстве это именно то что происходит в слое нейронной сети.
    Ответ написан
  • Поиск по большим файлам python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну если файл 2гб чем pandas то не устраивает, можно еще и pandas ускорить использовать polars, у него схожий синтакс c pandas но поддерживает параллельное выполнение. Что для pandas что для polars такие выборки это будет одна коротенькая строчка кода.

    2гб не проблема в память загрузить, но и если бы файл был на много больше и pandas и polars поддерживают чтение файлов по частям. Вообще если нужна серьезная скорость, polars ,будет номер один там не numpy массив, а Rust Arrow. Не факт что тут polars нужен, ну вот глянь https://www.makeuseof.com/pandas-vs-polars-which-i... на сколько pandas быстрый, но polars выборка рядов по условию в 5 раз быстрее, а например применение функции, к столбцу или фрейму в 30 раз быстрее.
    Ответ написан
    Комментировать
  • Как получить доступ к свойству объекта JSON не зная его название?

    Maksim_64
    @Maksim_64
    Data Analyst
    Можно использовать pandas. Нормализовать json, кода всего ничего будет.
    import requests
    import json
    import pandas as pd
    response = requests.get(url="https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=Apple")
    info = json.loads(response.text)
    df = pd.json_normalize(info)
    print(df.iloc[:,-1][0])


    Более правильный способ будет брать колонку не iloc а regex выраженим в pandas так можно, потому что, название колонки будет содержать весь путь до extract и заканчиваться на exctract. То есть возможна более сложная и стабильная выборка. То есть вот так
    print(df.filter(regex='extract$',axis=1).iloc[0,0])
    Результат идентичный, но так на много надежнее, мы не надеемся что нужная нам колонка последняя, а находим ее независимо от ее положения.
    Ответ написан
    Комментировать