Задать вопрос
  • Как в Python получить список открытых позиций в Binance?

    Maksim_64
    @Maksim_64
    Data Analyst
    Обычно для работы с различными финансовыми данными используют такую структуру данных, как pandas датафрейм (некоторые api даже имеют параметр что то типа returned_type = 'dataframe' ). Там легко выбрать все что нужно, привести типы данных, ответить на любые вопросы например по какой монете самая большая открытая позиция и т.д, в общем все возможные манипуляции там есть + визуализации.

    Например представим нам прислали структуру как у тебя, я сократил (количество ключей для читабельности, а так не важно сколько их там)
    import pandas as pd
    import numpy as np
    data = [
        {'symbol': 'FTTBUSD', 'positionAmt': '0.001', 'entryPrice': '0.0', 'markPrice': '0.00000000'},
        {'symbol': 'ETHUSDT', 'positionAmt': '0.003', 'entryPrice': '1912.07', 'markPrice': '1911.37031373'},
        {'symbol': 'ALPHAUSDT', 'positionAmt': '0.002', 'entryPrice': '0.0', 'markPrice': '0.00000000'}
        ]
    df = pd.DataFrame(data=data, columns=['symbol','positionAmt'])
    df['positionAmt'] = df['positionAmt'].astype(float)
    print(df)

    Все мы выбрали только те ключи которые нам интересны параметр columns, если нужны все просто не указываем его. Теперь мы имеем таблицу с которой, мы можем делать все что угодно, начиная от любых расчетов, записей в различные форматы файлов или бд и даже визуализаций, например код df.plot(kind='bar', x='symbol', y='positionAmt'); Выведет вот такой график64b90126736ad454204003.png
    Это для демонстрации что всего в пару строк мы проходим путь от того что нам прислал binance до анализа.
    C датафреймом, будет легко и быстро задавать все интересующие вопросы.
    Ответ написан
    2 комментария
  • Как получить атрибут linestyle из объекта класса clicer()?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну что то ты совершенно не то пытаешься делать. Если же конечно твоя цель не покопаться в ооп. Стиль линий находится в классе LIne2D. Ты можешь вызвать print(klicker.__dict__) и там увидишь вот такую строчку '_lines': {'event': matplotlib.lines.Line2D at 0x7fe0e34a1a50}, далее если глянуть документацию класса Line2D то мы увидим что 'linestyle' это property.
    Итого что бы решить твой вопрос получаем
    klicker._lines['event']._linestyle Это даст тебе стиль линии. Изменить его можно (но это property) защищенный атрибут то есть можно но не нужно, так или иначе.
    klicker._lines['event']._linestyle = '-' его изменит.
    Ответ написан
    1 комментарий
  • Можно ли совместить Google Colab c Pycharm?

    Maksim_64
    @Maksim_64
    Data Analyst
    google colab нельзя. Jupyter Notebook , пожалуйста. Хоть с Pycharm хоть c VSCode. Google colab и Jupyter Notebook это совершенно разные вещи. Google не даст тебе использовать свои вычислительные мощности не в своем приложении.
    Ответ написан
    Комментировать
  • Как найти Backend-специалиста в стартап, если нет возможности платить ему з/п на данном этапе?

    Maksim_64
    @Maksim_64
    Data Analyst
    Все что нужно для запуска стартапа ищут на рынке венчурного капитала. Венчурный капитал это не только деньги, но и специалисты готовые войти в долю стартапа. У нас рынка венчурного капитала по большому счету нет. Утром деньги, вечером стулья, у нас пока так. Самый большой рынок венчурного капитала в долине, это там стартап = идея, к которой потенциально готовы присоединится люди с деньгами, навыками и т.д.
    У нас же стартап, это ты просто владелец бизнеса который за все платит. Так сказать разные ментальности.
    Ответ написан
    7 комментариев
  • Как заполнять csv файл в зависимости от количества данных?

    Maksim_64
    @Maksim_64
    Data Analyst
    А не нужно пытаться из csv файла делать электронную таблицу. У тебя должны быть известны все имена столбцов. И создан csv, со всеми столбцами, а затем ты в него добавляешь записи в которых определенные значения будут None, по скольку значение не спарсено для данного элемента записи.

    для записи в csv используй pandas. Создай датафрейм со всеми возможными столбцами. Затем у тебя есть коллекция с записями, ну например список с кортежами, где каждый кортеж это запись, содержащая None, где данные не спарсены.
    Псевдо код будет такой (индексы в кортеже должны совпадать с индексами в columns)
    data = [('Ivanov','Ivan',None), ('Petrov','Petr',30),...,('Sidorov',None,None)]
    columns = ['name','surname',...'age']
    df = pd.DataFrame(data, columns = columns)
    df.to_csv('result.csv',header=False, mode='a')
    Создаешь фрейм, и добавляешь его новыми строчками в существующий csv файл. А автоматически добавлять столбцы в csv файл не нужно. Если же знать наперед все потенциальные имена столбцов не возможно, что я себе слабо представляю (ты должен знать что ты хочешь спарсить), то используй json (мороки будет много).
    Ответ написан
    4 комментария
  • Как вызвать метод класса без вызова экземпляра?

    Maksim_64
    @Maksim_64
    Data Analyst
    Обычно методы класса используются для объявления альтернативных конструкторов класса, так называемые factory methods. То есть класс метод обычно возвращает cls(*args, **kwargs) Вызывается просто MyClass.classmeth(*args, **kwargs)
    Вот например в pandas (у тебя был вопрос, значит используешь библиотеку) есть класс DataFrame. Ты можешь создать экземпляр класса DataFrame(data) А можешь использовать методы класса для альтернативного метода создания экземпляра (из другой структруры) DataFrame.from_dict(some_dict) так вот from_dict это метод класса.
    Метод класса он оперирует на уровне класса и не имеет доступа к экземпляру класса. Есть еще статические методы, это по сути python функция которая "связана с классом" но не имеет доступа не экземпляру не к классу.

    В чем у тебя здесь смысл попытки использовать методы класса лично мне не понятно. Потому что обычно вызвав метод класса мы инициализируем экземпляр с динамически измененным (данным методом) состоянием класса. Например мы можем поменять значение атрибута класса. Вот тебе на скорую руку бесполезный пример.
    class MyClass:
        currency = 'Dollar'
        
        def __init__(self, amaunt):
            self.amaunt = amaunt
            
        def __str__(self):
            return f'MyClass({self.amaunt, self.currency})'
        
        @classmethod
        def euro(cls, amount):
            cls.currency = 'Euro'
            return  cls(amount)
    dollar = MyClass(100)
    print(dollar)
    euro = MyClass.euro(100)
    print(euro)

    Если снова вызовешь print(dollar), то он тебе выведет euro. Потому что атрибут класса общий для всех экземпляров оказался измененным.
    Ответ написан
  • Читать книги по программированию в оригинале или перевод?

    Maksim_64
    @Maksim_64
    Data Analyst
    Учи английский нормально, (в день по странице это никуда не годится). Книги лучше читать в оригинале, документации, статьи и т.д. Первый язык который нужно знать в IT это английский.
    Ответ написан
    5 комментариев
  • Какую библиотеку выбрать для отрисовки 3D графики в Python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Говорю сразу, я в программировании в целом почти что новичок, и опыт с питоном имею чуть больший, чем сдающие с ним ЕГЭ
    Ваша задача для опытных программистов с релевантным опытом.

    Библиотека matplotlib . Библиотека имеет несколько уровней, так вот верхнем уровнем довольно легко пользоваться, у них есть галерея в том числе и 3d графики с готовыми примерами. Но я не уверен что ваш кейс возможно решить на верхнем уровнем библиотеки, а вот использование более низких уровней в matplotlib штука не простая.
    Ответ написан
    2 комментария
  • Какими материалами повысить экспертизу в python?

    Maksim_64
    @Maksim_64
    Data Analyst
    как по мне то книга Fluent Python 2nd Edition. Она довольно продвинутого, а местами очень продвинутого уровня. Если брать статьи то https://realpython.com/ там бывают большие очень качественные статьи. Но как главный ресурс изучения python'a с этой книгой лично для меня ничего не сравнится.
    Ответ написан
    Комментировать
  • Как исправить ошибку в коде?

    Maksim_64
    @Maksim_64
    Data Analyst
    У тебя response.status_code равен 403. То есть html что бы парсить его супом сервер не прислал. Можно добавить ему headers.
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
    response = requests.get(url, headers=headers)
    Теперь сервер пришлет html status_code должен быть 200 (по крайней мере у меня работает). Который можно парсить средствами beatifulsoup. Правильно ли написан парсинг, нет не правильно. Такого класса как ты ищешь там нет. Ну это все самостоятельно, объект сервер пришлет валидный для парсинга.
    Ответ написан
    Комментировать
  • Почему возникает исключение AttributeError при запросе текущего состояния FSM?

    Maksim_64
    @Maksim_64
    Data Analyst
    добавь в конструктор класса super().__init__() Что бы инициализировать атрибуты родительского класса.
    def __init__(self):
        self.command = ""
        super().__init__()
    Ответ написан
    1 комментарий
  • Возникла ошибка Type Error в Python при изучении классов. Где и что в коде не правильно?

    Maksim_64
    @Maksim_64
    Data Analyst
    потерял скобки при создании экземпляра класса. deck = Deck(), Я скопировал, твой код и запустил у себя, там следом еще ошибка, вот в этой строе
    elf.cards[i], self.cards[j] = self.cards[j], self.cards[i]
    говорит list index out of range по всей видимости вот в этой строке j = random.randint(i, num_cards-1) Нужно, добавить -1, что я и сделал тогда все работает.
    Ответ написан
    1 комментарий
  • Как математически понять формулу из Excel?

    Maksim_64
    @Maksim_64
    Data Analyst
    Математически получить элементарно, 2.5% процента привести к подходящему виду для таких расчетов. 2.5% = 0.025. Получим 5000000-1250000-(500000)/(1+0.025) = 3262195,12195
    Ответ написан
    1 комментарий
  • Какие требование к данным для t теста?

    Maksim_64
    @Maksim_64
    Data Analyst
    т.е я правильно понимаю, что распределение исходных данных может быть каким угодно, главное чтобы при бустрапировании выборки средние этого распределения имели нормальное распределение?
    Нет, ты в корне не правильно понимаешь. Если ты осуществляешь случайную выборку из ЛЮБОГО распределенния, берешь СРЕДНЕЕ значение по выборке, так распределение ТАКИХ СРЕДНИХ ЗНАЧЕНИЙ будет всегда нормально, независимо от распределения популяции, при достаточно большем размере выборки. Это CLT (central limit theorem).

    t-test сравнивает средние по группам. Так вот основные ДОПУЩЕНИЯ это.
    1. Независимость
    2. Отсутствие экстремальных величин.
    3. И НОРМАЛЬНОЕ распределение групп по которым считались средние для сравнения.
    Это основные подробнее гугли.
    Ответ написан
    3 комментария
  • Рекуррентная нейросеть для прогнозирования на keras?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну в целом в плане решейпинга, все не правильно. Посмотри размерности своего labels. Это должен быть одномерный массив, длинной соответствующий количеству рядов в массиве features (ты его назвал training data). Потом а на чем ты тренируешься 15 рядов 11 колонок, я про training_data. Это абсурд. Этот код не поправить. Тебе нужен туториал и по нему адаптируюй под свои данные.

    Например вот там google colab c предсказаниями акций с использованием kears.Sequential, ну и комментарии кое какие имеются.

    Также на медиуме есть туториалы с объяснениями (на английском). В общем гугли keras sequential stock prices example и разбирайся по примерам. Это мертвый код, весь решейпинг переписывать надо. Плюс там надо будет тестовые данные хитро готовить, двигать и подавать в модель в цикле. В общем тебе нужен пример.
    Ответ написан
    7 комментариев
  • Как верифицировать российский номер телефона для доступа к GPU в Kaggle?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Формально, colab побыстрее, но при определенных действиях kaggle куда проще в использовании.
    2. Проблем с российскими номерами нет. (верифицируют без проблем)
    3. Подобные проблемы случаются иногда, он и просто google может не верифицировать только купленный номер.
    4. Поменять номер, писать в поддержку, будь уверен что ты пишешь в поддержку правильно, я не припомню, что бы их поддержка не отвечала, например в этом году у меня был верифицированный номер (но он стал не активным и я меня на новый, проблем не возникло.
    Ответ написан
    Комментировать
  • Как с помощью python загружать данные на страницу?

    Maksim_64
    @Maksim_64
    Data Analyst
    "нажимать" это нужен эмулятор браузера selenium.
    Ответ написан
    5 комментариев
  • Как добавить явное условие при обучении модели AI?

    Maksim_64
    @Maksim_64
    Data Analyst
    Явные условия (детерминистические) это не про машинное обучение. Сама суть машинного обучения это обучение без задания явных инструкций.

    Твоя проблема, большая называется "несбалансированные классы". 5 в одном 100 в другом это безнадега, модель по умолчанию имеет большую предрасположенность, что мешает обучению.

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

    Советую изучить вот эту статью на эту тему внимательно, и запастись терпением. Вот эта статья с медиума (открывается только через vpn) по крайней мере у меня, там тоже BERT и тоже решается проблема с не сбалансированным классами. Есть код. Но повторю проблема решается разными стратегиями препроцессинга (первая статья).
    Ответ написан
    1 комментарий
  • Как исправить ошибку при использовании pandas concat?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Почему не работает. Потому что concat принимает список с фреймами или series'ами. Твой объект это список с кортежами, а должен быть список с фреймами.
    Раньше, я так понимаю ты использовал пустой датафрейм и к нему в цикле конкатенировал словарь. Если раньше твой код работал то и сейчас ты можешь собрать список словарей и создать из них фрейм. Например
    d1 = {'A':1,'B':2}
    d2 = {'A':3,'B':4}
    df = pd.DataFrame.from_records([d1,d2])
    собирашь в список словари и по этом передаешь методу from_records. Это вместо concat. Если хочется работать с concat. То при каждой итерации ты создаешь отдельный фрейм с данными и одинаковыми колонками, собираешь эти фреймы в список и потом concat будет прекрасно работать например.
    dfs = []
    for i in range(3):
        df = pd.DataFrame({
            'A':np.random.randn(4),
            'B':np.random.choice(['green','blue','white'], 4)
        })
        dfs.append(df)
    final_df = pd.concat(dfs,ignore_index=True)

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

    Maksim_64
    @Maksim_64
    Data Analyst
    Если ПЕРВОЕ КОЛИЧЕСТВО = ВТОРОЕ КОЛИЧЕСТВО / 1.25, то второе количество больше в ТОЧНОСТИ на 25%.
    Если ПЕРВОЕ КОЛИЧЕСТВО <= ВТОРОЕ КОЛИЧЕСТВО / 1.25, то второе количество больше на 25% ИЛИ более.
    Это по поводу одной проверки в зависимости от условия (строго равно или (больше или равно)). Разберись какое из условий использовать.

    Инициализируешь переменную-счетчик которая будет считать количество условий отвечающих условию выше. (count = 0), если условие истинно count = count + 1. Затем после обхода всех условий (count / N) * 100. где N это общее количество проверок.

    Откуда взялось 1.25. Как нам увеличить число на определенный процент? ЧИСЛО * (1 + ПРОЦЕНТ / 100.) В нашем случае процент 25. Упрощая получим ЧИСЛО * 1.25 = ЧИСЛО УВЕЛИЧЕННОЕ на 25%. Но у нас по условие даны два количества и нужно проверить является ли второе больше первого на 25%. Соответственно получаем то что я написал в сам начале.
    Ответ написан
    Комментировать