Задать вопрос
  • Можно ли с ChatGPT создать отчеты и графики на основе GoogleSheets?

    Vitaly Karasik, Ну я по pandas/polars специалист. Там смысла в них нет, по скольку надежность очень слабая. То есть LLM может написать иногда очень крутой запрос, а может заблудится в трех соснах. По скольку при работе с таблицами вопрос не в том работает/не работает, а корректны ли циферки, то я LLM в принципе не использую. А так использую иногда правда не gemini и не chatgpt, а phind (мое мнение насчет кода она лучшая) у меня прям в vscode расширением она установлена и я ей в качестве контекста файл из рабочей папки указываю, иногда помогает, полюс я ее использую при работе с докер, там хорошо прям помогает.
    Написано
  • Memory Error при определении кодировки как чинить?

    zisho, Попробуй, две вещи первая вот такое напраление чтение по частям
    phone_numbers = pd.read_csv('test.csv',index_col='Номер Телефона',chunksize=1)
    dfs = []
    counts = 0
    numbers_of_interset = [777,333]
    for data in phone_numbers:
        index = data.index.intersection(numbers_of_interset)
        res = data.loc[index,:]
        dfs.append(res)
        counts+=res.shape[0]
    
    (
        pd.concat(dfs)
        .to_csv('result.csv')
    )
    print(f'found {counts} mutches')


    Второе encoding = chardet.detect(data)['encoding'] смотри тебе не обязательно определять у всего файла, там можно по не которому количеству символов. Естественно, chunksize=1, должно быть не 1 а ну согласно своей оперативке. Если файл весит 2.2 гб в озу он может и больше весить. при чем и в два раза больше может весит, то есть дели общее количество строк в файле на несколько частей. 1 это я для своего примера сделал, и он их прочитал по частям.

    Декомпозируй задачу больше. То есть на каком моменте виснет, на чтении, в фрейм, на chrdet. или на какой операции. вообще 2.2 это ерунда работать будет еще и быстро работать будет.
    Написано
  • Memory Error при определении кодировки как чинить?

    zisho, Ну будет работать, какой размер csv и код скинь как он у тебя там зависает.
    Написано
  • Стоит ли уходить в Data Science?

    math13, Для Российского рынка однозначно python, у нас по R вакансий очень мало.
    Как вы считаете, нужно пристально в Python уходить вначале, параллельно изучая всю подноготную DS?
    Просто в python без подноготной DS. Насчет математики 4 дисциплины.
    1. Линейная алгебра (операции с матрицами и векторами на языке DS тензорами определенных порядков и их геометрические свойства играют большую роль).
    2. Интегрирование дифференцирование функции с несколькими переменными (самое главное)
    3. Теория вероятности
    4. Статистика (что бы ее освоить на достойном уровне первые три должны на высоком уровне). По скольку это то с чем ты имеешь дело (У тебя есть наблюдения) а ты задаешься вопросом какой процесс сгенерировал эти данные.

    Но на старте чистый python. Ты же математик (1 + 0.01)^n сам знаешь как работает. Сильное программирование это основание твоего будущего экспонентного роста. А оно требует времени постоянной практики, что бы ты привык мыслить как программист. Потом на это дело DS подтянешь.
    Написано
  • Как убрать пробел между символами?

    Gojo_Satoru, Нет, sep это сокращенно separator (разделитель). Если ты сделаешь print(1,2,3) то он их напечатает через пробел, по скольку значение по умолчанию для параметра sep=' '. Открой доки по функции print. Если ты например туда запятую поставишь то через запятую и т.д.
    Написано
  • В чём ошибка данных поиска href TypeError: 'NoneType' object is not subscriptable?

    dieneri, find('a') Возвращает None у тебя.
    Ты можешь сделать print(type(item.find(class_="link").find('a'))) и увидишь NoneType.
    Написано
  • Как добавить данные в Series через ссылку на объект?

    Feor_slen, Конечно же есть. доки.pandas доки можно вполне читать как книгу. Куча хороших примеров.
    Написано
  • Как на pandas получить подобие оконной функции SQL?

    Сергей c0re, Неплохо, для того кто только учится с pandas работать. Дам тебе пару тройку советов, если предстоит писать pandas в проде. Сейчас может они тебе покажутся лишними но потенциально они могут с экономить недели времени.
    1. Когда решаешь pandas проблему то старайся решать класс проблем а не конкретную и оборачивать это дело в функцию (сам завпрос например), где параметры функции это частности (в том числе и твоя проблема)

    2. изучи из доков .pipe()

    3. налегай на chaining ты можешь комментировать раскомментировать строки внутри chain это экономит тьму времени, когда нужно смотреть двигаешься ты в нужном направлении или нет.

    Иотого твоя большая pandas проблема делится декомпозируется на подпроблемы, оборачивается в функции и затем ты это дело выстраиваешь в pipeline методом pipe. Псевдо код будет такой.

    original_frame = pd.DataFrame(data=some_data)
    def first_function(df:pd.DataFrame,*args,**kwargs)->pd.DataFrame:
        pass
    
    def second_function(df:pd.DataFrame,*args,**kwargs)->pd.DataFrame:
        pass
    
    def third_function(df:pd.DataFrame,*args,**kwargs)->pd.DataFrame:
        pass
    
    result = (
        original_frame
        .pipe(first_function,*args, **kwargs)
        .pipe(second_function,*args, **kwargs)
        .pipe(third_function,*args, **kwargs)
        ...
        ...
        .pipe(last_function,*args,**kwargs)
    )

    Вот таким образом твой pandas код не превратится во что то нельзя поддерживать улучшать и т.д. И ты будешь иметь доступ к каждому уровню своей декомпозированной большой проблемы.

    Удачного кодинга.
    Написано
  • Как на pandas получить подобие оконной функции SQL?

    Сергей c0re, Выглядит как два вопроса. Если нужна сортировка по префиксу то можно так. Хотя опций много
    df = pd.DataFrame({
        'A':['first_sometext','second_some_text','first_numbers','third_text','second_something'],
        'B':[100,4,2,45,23]
    })
    result = (
        df.assign(
            prefix = lambda x: pd.Categorical(x['A'].str.split('_').str[0],categories=['first','second','third'])
        )
        .sort_values(by='prefix')
        .drop(columns=['prefix'])
    )
    print(result)

    lambda не поддерживает конструкции по типу swith case. как в SQL case when then, на уровне lambda нету.
    Реализуется это приблизительно многими способами.
    result = (
        df.assign(
            prefix = lambda x: pd.Categorical(x['A'].str.split('_').str[0],categories=['first','second','third'])
        )
        .sort_values(by='prefix')
        .assign(conditions='default')
        .assign(conditions= lambda x:x['conditions'].where(~(x['prefix']=='first'),'Первый'))
        .assign(conditions= lambda x:x['conditions'].where(~(x['prefix']=='second'),'Второй'))
        .assign(conditions= lambda x:x['conditions'].where(~(x['prefix']=='third'),'Третий'))
        .drop(columns=['prefix'])
    )
    print(result)


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

    Формально туже самую замену что я сделал можно сделать проще. replace и там словарь ключ значение. Где ключ что меняем значение на что заменяем. Но мой вариант выше позволяет организовыть сколь угодно сложные замены.
    Написано
  • Как на pandas получить подобие оконной функции SQL?

    Сергей c0re,
    делает какую-то дичь и выводит что-то непонятно странное... !???

    .loc[lambda x: x['date_time'] == x['latest'],:] выбирает те строки где твоя дата равна последней дате, довольно понятно. Четко сформулируй что ты хочешь. 46 строк по количеству твоих групп. У тебя file_name содержит 46 групп. Я сейчас глянул на данные там у тебя более чем одна строка может быть (в последней дате). Если ты хочешь оставлять все значения опять таки опций много можно rank использовать например как то так
    result = (
        df.
        assign(
        latest=lambda x:x
        .groupby("file_name")["date_time"]
        .rank(method='dense')
              )
        .loc[lambda x: x['latest'] == 1,:]
    )
    
    result
    Возможно надо будет, поменять параметр, потому что точно что ты хочешь получить ты не говоришь. Все я тебе достаточно помог.
    Написано
  • Как на pandas получить подобие оконной функции SQL?

    Сергей c0re, Не понял, в чем проблема с прочтением. Я просто терпеть не могу плодить кучу переменных по этому пишу pandas используя chaining.

    result = (
        df.
        assign(latest=lambda x:x
        .groupby("some_name")["date_time"]
        .transform(pd.Series.nlargest, 1)
              )
        .loc[lambda x: x['date_time'] == x['latest'],:]
    )
    print(result)
    В чем проблема запустить этот код. На некой категориальной переменной он выберет подсет с самыми большими датами по каждой группе. Я создал временную колонку latest последняя дата, затем сгрупировал затем трансформировал ее методом series, nlargest и оставил самую последнюю дату например мог оставить 2-3 да сколько угодно. Затем выбрал этот подсет, если временная колонка latest не нужна то ее можно дропнуть в конце. Я в целом принцип показал. вместо pd.Series.nalrgest можешь использовать приблизительно тысячу других функций или написать свою.
    Написано
  • Автоматизация гостиницы — реальность или фантазия?

    OtelVetrov, Автоматизация всего, потенциальна рентабельна при большой текучке, например автономные супермаркеты существуют. В отели большой текучки не будет, то есть мощности будут простаивать, второй момент сбор данных, большинство собранных данных окажутся бесполезными, а например в автономном супермаркете, они активно используются. Ну и третий аспект, самый главный привычки люди хотят взаимодействовать с людьми а не с автоматами. А подобные инновации будут красоваться на выставках и о них расскажут на различных форумах, и что это дело завтрашнего дня.
    Написано
  • В США в объявлениях на job-бордаха чистая зарплата указывается или размер без вычета налога?

    Василиса Иванова, В большинстве случаев дело не дойдет до этапа заинтересовал (есть исключения). Первый рекрутер, а иногда и система отфильтрует. В качестве исключения люди ну например проявившие себя на платформах которые котируются. Например если человек kaggle grandmaster (это из data science) то там все организуют. Если же кандидат просто хороший специалист, то ему шансов не дадут.
    Написано
  • Мне использовать те же параметры нормализации, что были на обучающем или нормализовать данные с нуля?

    Jut_Rut, Так делать можно, если у тебя остается тестовый сет, который ты не трогал, то все ок.
    Написано
  • Мне использовать те же параметры нормализации, что были на обучающем или нормализовать данные с нуля?

    Jut_Rut, Нет не правильно. У тебя есть тренировочный набор и тестовый набор. Тренировка это получение "знаний твоей модели".

    Есть конечно кросс валидация. Но у ней не много другие цели подбор гипер параметров и не только.
    У ней есть параметр kfold (количество разбиений), например 5. Разбивают данные на 5 частей. Сначала 4/5 используют как тренировочный сет 1/5 как валидационный набор, потом другие 4/5 как тренировочный набор и другую 1/5 как тестовый и т.д. Вот картинка https://scikit-learn.org/stable/modules/cross_vali..., это без разницы какая библиотека, с нейронными сетями так же делают.

    Но в прод идет модель которую ты тренировал на тренировочном датасете а тестировал на тестовом. И никогда ты не тренируешь на данных из тестового сета. Модель ничего о нем знать не должна.
    Написано
  • Мне использовать те же параметры нормализации, что были на обучающем или нормализовать данные с нуля?

    Jut_Rut, На самом деле ничего тебе не мешает для препроцессинга использовать scikit-learn. Но и никто не запрещает просто сделать функцию, normalize. Где параметры будут из тренировочного сета. Как удобно. Главное не считать ничего на тестовом/ валидационном наборе. Это называется. data leakage.
    Написано
  • Как вытащить из текста эмоджи?

    Айзиля Каримова, И да если ты потом будешь прогнозировать тебе все равно придется кодировать эти emoji на уровне pandas то называется создание dummy переменных, на уровне ML хоть в scikit-learn хоть в других (даже не python библиотеках) это называется OneHotEncodeing. По смыслу это буде так. Предположим у тебя для простоты два смайла улыбка и досада. У тебя появляется две новые колонки улыбка и досада. например твоя первая строка содержит смайл улыбка. В колонке улыбка появляется запись 1 в колонке досада 0. Во второй строке у тебя смайл досада в колонке улыбка получается 0 в колонке дасада 1. Если есть строки где нет смайлов то у тебя все нули. Если в строке и досада и радость то и там и там единицы и по такому признаку хоть для 100 смайлов хоть для тысячи.
    Написано
  • Как вытащить из текста эмоджи?

    Айзиля Каримова, Ну так если ты вытащила все эмоджи в отдельную строку. 1. Ты можешь получить коллекцию юникодов каждого библиотека emoji (на всякий случай там внутри есть коллекция всех эмоджи). 2. Если ты смогла вытащить в отельную строку значит ты можешь знать содержит строка емоджи или нет то есть получать True или False. Значит ты можешь и выбрать необходимый подсет. df.loc[булевый массив, список колонок]. False строка не войдет в выборку. True войдет. булевый массив длинной равной длинне фрейма.

    Смотри если ориентироваться на твою картинку то у тебя там в качестве объектов python списки. Сам тип столбца object что означает (python обject). Ты можешь написать функцию которая на вход получает список если список пуст возвращает например NaN если список не пуст, ну берет например последний элемент (последний эмоджи). Затем применить создать новый столбец df['last_emoji'] = df['emoji'].apply(your_function), где your_function простенькая python функция как я выше описал. Что то типо такого можно, потом выбрать все строки которые не содержать пропущенных значений и все. Много способов.
    Написано