Where is data, Lebowski
219 subscribers
83 photos
2 videos
83 links
Канал про разное в data-мире:
- от библиотек визуализации до data egineering
- от графиков до элементов разработки
- от .csv до API
Download Telegram
Header всему голова
.
Кому не знакомы странные наименования столбцов в таблицах, выгрузках или API, например, deviceId или dReleaseDate. И каждый раз приходится ручками переименовывать, когда их 2-3 еще терпимо, но когда полей 20+, уже к 10 появляется 🤮
.
ps: все же переименовывают при помощи df.rename(columns={old_column_name: new_column_name}) 😉
.
Попробуем автоматизировать этот процесс. На помощь нам придут замечательные регулярные выражения (тот самый модуль re который ты обходил стороной и боялся как серебряной пули)
.
Создаем функцию camel_to_snake, которая:
- разделяет имена по заглавной букве
- переводит написание через нижнее подчеркивание
- переводит слова в LOWER CASE

import re

def camel_to_snake(name):
name = re.sub('(.)([A-Z][a-z]+|[А-Я][а-я]+)', r'\1_\2', name)
return re.sub('([a-z]|[а-я])([A-Z]|[А-Я])', r'\1_\2', name).lower()
.
Пользуйстесь наздоровье🙌
.
А вообще регулярки - это очень мощно, рекомендую обязательно ознакомится с фукнционалом модуля re:
- классная статья
- моя настольная книга
#regex #cameltosnake #code
🔥5
Секреты 🐼as
.
А вы замечали, что пишите неэффективный\плохочитаемый (подставить любимое) код🤔
.
Нередко это связано с устоявшимися конструкциями, которые вы где-то увидели, набили на них руку или просто так было, когда вы изучали pandas==0.23😎
.
Одна из задач в ML создание новых признкаков, при изучении временных рядов часто используется такой признак как moving average. При добавлении его необходимо исключить лик целевой, тк текущее значение входит в окно.
.
Нередко встречается такой код:
df['ma'] = df['column'].shift().rolling().mean()

Здесь shift выполняет роль, исключающую текущее значение целевой (сдвигаем весь ряд на 1 позицию в будущее). В целом код понятен но перегружен дополнительным методом. Если заглянуть в доку к методу rolling то разработчики уже учли эту возможную проблему, а нам остается только воспользоваться:

df['ma'] = df['column'].rolling(closed='left').mean()
При такой опции closed='left' - последнее значение в окне исключается из расчета, тем самым не будет создан лик целевой.
.
Исключили лишний метод, использовали встроенные аргументы - good work🤝
#code #pandas #refactor
​​Идеальные данные для pandas
.
В этих данных не будет дубликатов, пропусков, некорректных значений и всех остальных наших проблем с данными🤩
.
Заинтригованы? Я нашел их - берите и пользуйтесь панда-данные
.
Попробуем решить одну из задачек - cloud of words для кого, конечно же, По😉
.
Здесь ссылка на google-colab. Осторожно основа кода сгенерирована ChatGPT😱
.
#data #code #practice