Задать вопрос
  • Как сгруппировать строки в DF по условию?

    Maksim_64
    @Maksim_64
    Data Analyst
    Профессиональных способов несколько например использовать resample метод. Это специализированный groupby для временной последовательности, второй это использовать groupby вместе с pd.Grouper. Приведу простенький пример.
    index = pd.date_range('1/1/2000', periods=9, freq='min')
    df= pd.DataFrame(data=np.random.randint(1,10,(9,2)), index=index, columns=['A','B'])
    df.resample('3min').agg({'A':'sum','B':'mean'})
    Я создал фрейм с индексом временная последовательность (1 мин). сгруппировал по 3минуты и применил к каждой из колонок разные аггрегирующие функции.

    Выбирать можно по любым временным интервалам. Почитай доки.
    Ответ написан
    1 комментарий
  • Почему при замене значения в DataFrame на pandas происходит ошибка, но значение меняется?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Это не ошибка, а предупреждение которому сто лет в обед, более того в зависимости от твоей версии pandas, ты можешь видеть не одно а сразу два предупреждения. В pandas давно уже целый раздел документации посвящен этому copy_on_write

    2. Детали про copy_on_write прочтешь в документации, там все расписано не хочу повторяться. Собираешься работать с pandas, ты должен знать что это такое.

    3. Правильный способ безопасно осуществить операцию, которую ты хочешь (что бы не было предупреждений и работало, как ты ожидаешь.
    pd.options.mode.copy_on_write = True
    info = {'color': ['blue', 'green', 'yellow', 'red', 'white'],
    'object': ['ball', 'pen', 'pencil', 'paper', 'mug'],
    'price': [1.2, 1.0, 0.6, 0.9, 1.7]}
    frame = pd.DataFrame(info)
    frame.loc[2,'price'] = 100 
    print(frame)

    Ну и обнови на всякий случай pandas по скольку copy_on_write будет по умолчанию установлен в True в будущих версиях.
    Ответ написан
    Комментировать
  • Можно ли обмануть программиста с проектной работой?

    Maksim_64
    @Maksim_64
    Data Analyst
    Взаимная заинтересованность, лучшая гарантия исполнения всех обязательств.
    Ответ написан
    Комментировать
  • Возможна ли автоматизация проектирования с помощью ИИ?

    Maksim_64
    @Maksim_64
    Data Analyst
    Экономически вряд ли это целесообразно, слишком много средств потребует создание такой нейросети.
    Ответ написан
    Комментировать
  • Как получить данные колонки Pandas?

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

    Как пофиксить, ну я не знаю что у тебя там в файле, но предположу что у тебя в файле разделение на колонки происходит сивволом ';'. Как следствие тебе нужно указать параметром при чтении.
    df = df.read_csv(filename, sep=';') Ну и остальные параметры которые ты там указываешь. Решит ли это все проблемы неизвестны. Надо видеть в каком состоянии файл. Чтение файлов иногда может быть серьезной проблемой, которая потребует написания функций для проблемной части парсинга.
    Ответ написан
    1 комментарий
  • Как исправить ошибку invalid literal for int() with base 10: '0 из 90'?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ты пытаешься преобразовать строку в число. А именно где то ты вот эту строку пытаешься преобразовать в число '0 из 90', ожидая что там '90' ну или '0'. То есть в буквальном смысле у тебя где то в коде происходит. int('0 из 90') Что выдаст точно такую же ошибку. Отлаживай что бы там было строковое представление целого числа.
    Ответ написан
    Комментировать
  • Какой Roadmap для старта работы с AI?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Уверенный английский (качественные материалы и инструменты и т.д все на английском)

    2. Уверенная линейная алгебра, интегральное и дифференциальное (одномерное и многомерное) исчисление. При разработке ты будешь работать с тензорами (тензор первого порядка - вектор, тензор второго порядка матрица) и их операциями и в конечном счете оптимизацией результатов этих операций.

    3. Уверенный навык программирования. Реализации для взаимодействия с API нейронных сетей или классических алгоритмов машинного обучения существуют практически на любых языках, так что python не обязательно.

    4. Книга именно по ML, ты должен разобраться именно в ML техниках, терминах. Получить ответ на вопрос что значит тренировать модель, как ее оценивать, как находить оптимальные параметры, каких ошибок не допускать, стратегии деления датасета и многое многое другое.

    5. Много практики, и доводить все это дело до проекта. Освоить git например, освоить IDE, как следует, и т.д. Специалист растет от проекта к проекту. А не от книги или курса. Книга потенциально дает возможность вырасти, а там уже кто то ей воспользуется, а кто то нет.

    Пункт два Khan Academy Там со своего уроня начинаешь, конечные цели Calculus AB, Calculus BC, Multivariable Calculus.

    Относительно книг лучшее для вхождения из того что я когда то читал это deep learning with python от François Chollet. Она конечно на python, но это только код. А так она покрывает весь пайплайн создания модели и все написано очень простым языком.
    Ответ написан
    Комментировать
  • Как лучше построить архитектуру ML-сервиса?

    Maksim_64
    @Maksim_64
    Data Analyst
    Мало информации, конечно. Я обычно использую dash. Он позволяет создать полноценное веб приложение. Для взаимодействия с пользователем. Есть большое коммунити например я использую компоненты для создания красивого интерфейса и взаимодействия. Насчет одновременного доступа не проблема, каждая сессия пользователя изолирована. В доках есть раздел галерея там большие и крутые проекты выложены на github, то есть можно много чего подсмотреть. Есть и платные компоненты. Все что по ссылкам это бесплатно и для продакшен уровня достаточно.

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

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

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну на сам деле задачка на 5 минут, есть определенные методы заполнения пропущенных значений, 'ffill' forward fill и 'bfill' backward fill. Они и есть ключ к решению, далее группировка происходит без проблем, и дальнешее дело техники, при чем многими способами, например так.
    f = pd.DataFrame({
        'A':['a',np.NaN,np.NaN,'b',np.NaN,np.NaN,np.NaN,'v',np.NaN,np.NaN,'d',np.NaN,np.NaN],
        'B':['foo','foo','bar','bar','bar','foo','bar','foo','bar','foo','bar','foo','bar']
    })
    result = (
        df
        .groupby(df['A']
        .fillna(method='ffill'))['B']
        .apply(lambda x: ','.join(x))
        .reset_index()
    )
    result
    Ответ написан
  • AI программисты ученые или обычные разработчики?

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

    2. Про разработку:
    современный AI требует взаимодействия множества разных специалистов.

    3. Итог:
    да есть ученые работающие над созданием AI примеров много, из известных ну например, Yoshua Bengio. Это один из явных примеров именно ученого. Но есть и не ученые работающие именно над созданием новых систем AI, и работают эти люди, как в маленьких компаниях, так и в корпорациях.
    Ответ написан
    Комментировать
  • Как добавить данные в Series через ссылку на объект?

    Maksim_64
    @Maksim_64
    Data Analyst
    Вообще так с pandas не работают.
    1. pandas имеет мощный I/O как следствие эксель в том числе читают прямо в фрейм. Есть функции read_excel и другие, дополнительно перед этим установив различные reader's writer's например openpyxl и др.

    2. Если ты собираешься создать series из python объекта, с числовыми индексами то это list. Если с именованными индексами но это словарь. То есть собирай в словарь или лист. Seires это однородный массив и с именованными индексами, и for циклами их не процессируют.
    Ответ написан
    2 комментария
  • Как сделать таблицу с возможностью скачать выбранные строки html/js?

    Maksim_64
    @Maksim_64
    Data Analyst
    Тебе нужна библиотека dash+plotly Там и таблицы и графики и приблизительно все что угодно. В качестве хранилища данных может быть, как pandas датафрейм так и база данных. Таблицу как в примере сделать довольно просто. Документация очень большая и очень толковая, там элементарно найдешь полный пример запросов к фрейму и отображения в виде таблиц, график и т.д.
    Ответ написан
    1 комментарий
  • Как на pandas получить подобие оконной функции SQL?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну много способов есть, но самый верный смотреть в сторону groupby.
    (
        df.
        assign(latest=lambda x:x
        .groupby("some_name")["date_time"]
        .transform(pd.Series.nlargest, 1)
              )
        .loc[lambda x: x['date_time'] == x['latest'],:]
    )
    Ответ написан
  • Как скорректировать запрос для поиска подстроки?

    Maksim_64
    @Maksim_64
    Data Analyst
    Во первых ==True здесь совершенно лишнее, contains вернет массив длинной ff['B'], где True, будет означать берем данную строку, ок он не выдаст ошибку, но он тут абсолютно лишний и ничего не делает.

    Во вторых, обычно str.contains обычно используют вместе с регуляркой. Предоставляют выражения также используют flags для установки различных параметров, например осуществить поиск не чувствительным к регистру, для примера.
    import re
    searchstr=(
        ff.loc[ff['B']
        .str.contains(r'строка',regex=True,flags=re.IGNORECASE),['А','B']
        ]
    )
    Выберет подсет датафрейма ff (колонки 'A' и 'B'), где в 'В' содержится 'строка'.
    Ответ написан
    Комментировать
  • Что учить дальше?

    Maksim_64
    @Maksim_64
    Data Analyst
    Твоя задача получать опыт. Опыт приходит на проектах, соответственно, учи все что необходимо для проекта. И не расплескивайся особенно как начинающий специалист. Сильный чистый python + доменные знания в области применения, и то и то оттачивается на реализованных проектах.
    Ответ написан
    Комментировать
  • Автоматизация гостиницы — реальность или фантазия?

    Maksim_64
    @Maksim_64
    Data Analyst
    Безотносительно законодательных аспектов, экономически не рентабельно, только на продажу (возможно какая нибудь инновационная компания может его купить в целях саморекламы). Как бизнес такой проект будет работать в убыток.
    Ответ написан
  • Мне использовать те же параметры нормализации, что были на обучающем или нормализовать данные с нуля?

    Maksim_64
    @Maksim_64
    Data Analyst
    Хороший вопрос. Есть правило никогда не использовать метод fit на тестовом сете. Иными словами будьто нормализация, скалинг, стандартизация или другие трансформации, ты никогда не находишь никакие параметры в тестовом наборе - это грубая ошибка. А всегда используешь только тренировочный набор. По этому все свои mean, std и прочее ты берешь только из тренировочного набора.

    В scikit-learn есть трансформаторы, к примеру StandardScaler так вот у него есть методы fit, transform и fit_transform. Так вот для тестового дата сета ты используешь только transform и никогда fit или fit_transform. Что означает применить трансформацию к тестовому сету с параметрами посчитанными на тренировочном сете.

    С нейронными сетями абсолютно тоже самое без каких либо исключений.
    Ответ написан
  • Что не так с рекурсией?

    Maksim_64
    @Maksim_64
    Data Analyst
    если у рекурсивного кейса отсутствует return то , базовый кейс останавливает рекурсию, но не завершает функцию. То есть после return int(answer) выхода из функции не происходит (только рекурсивный вызов остановлен). python идет дальше, пропускает else, затем у функции отсутствует return и он возвращает None.

    Что бы пофиксить надо добавить return к рекурсивному кейсу то есть return gen_nums(stop_n, number)
    Ответ написан
    Комментировать
  • Почему python возвращает существующий объект, вместо создания нового?

    Maksim_64
    @Maksim_64
    Data Analyst
    Надо же, выглядит все это крайне сомнительно. Сеты мутабельные объекты и оптимизация, как c int или str тут не при чем. При том такое поведение только если я создаю объект налету. К примеру если я соберу их в список
    empty_sets = []
    for _ in range(3):
        empty_sets.append(set())
    
    for obj in empty_sets:
        print(id(obj))

    То работает как и ожидается.
    Или
    a = set()
    b = set()
    a is b
    Тоже как и ожидается.

    Пока экспериментировал вот что обнаружил
    for _ in range(3):
        print(id([]))

    Тоже самое при этом
    for _ in range(3):
        print(id(list()))

    Как и ожидается объекты разные.

    Мое мнение крайне сомнительное поведение.
    Ответ написан
    Комментировать
  • Как создать новый массив, объединив каждый элемент 1го с каждым 2 ого?

    Maksim_64
    @Maksim_64
    Data Analyst
    Выглядит как декартово произведение только где элементы это массивы с последующим распремлением.

    На питоне что то вроде этого
    import itertools
    [list(itertools.chain.from_iterable(x)) for x in (list(itertools.product(A,B)))]

    Прямой функции в numpy нету плюс у тебя данные не однородные то есть тебе при создании numpy массива придется указать параметр dtype='object', что означает python объект (до свидания скорость). Посмотри реализации в интернете, но массивы не однородные, так что толку по скорости не будет.
    Ответ написан
    Комментировать