data hate
103 subscribers
57 photos
1 video
14 links
Авторский канал про противоречия, заблуждения и интересные факты связанные с данными.
Download Telegram
Картинки о том как вам может пригодиться функиця pd.qcut при анализе данных
4
Чем плохи фильтры в пандасе?
Казалось бы - ничем. Нужно вот так фильтровать
df = df[df[col_name]==value]


Тут нет ничего плохого. Но начинаются мелкие неудобства, например когда нужно сделать group by, а потом что-то отфильтровать. Тут уже нужно две строки
gb = df.group_by(“key”, as_index=False)[“sales”].mean()
gb[gb[“sales”]>100.0]


Вторая бесячая вещь - это group by
Есть проблема с множественными агрегация
df.groupby("key").agg({"value":["min", "mean", "max", “size”]})


Так работает, но появляется мультииндекс. И хз что с ним делать. Нужно как-то избавляться от мультииндекса - переименовывать колонки.

Перед тем как писать пост я погуглил. Оказывается можно еще использовать pd.NamedAgg, но тогда нужно городить огород
И получиться что-то в духе
df.groupby("key").agg(
value_min=pd.NamedAgg(column="value", aggfunc="min"),
value_mean=pd.NamedAgg(column="value", aggfunc="mean"),
value_max=pd.NamedAgg(column="value", aggfunc="max"),
)


Выглядит уже громоздко. А что если нам нужно название новой колонки получить из переменной? Тогда все будем совсем страшно.

df.groupby("key").agg(**
{
value_min_name: pd.NamedAgg(column="value", aggfunc="min"),
value_mean_name: pd.NamedAgg(column="value", aggfunc="mean"),
value_max_name: pd.NamedAgg(column="value", aggfunc="max"),
size_name: pd.NamedAgg(column="value", aggfunc="size"),
}
)


Но выход есть - библиотека polars. Она создана для того чтобы заменить pandas. Главная фишка polars в том, что он работает сильно быстрее пандаса. Но мне больше всего нравиться его API, который сильно напоминает API pyspark.


В поларсе фильтр это метод. Это позволяет фильтровать сразу после group by в одну строку.
df.group_by(“key”).agg(pl.mean(“sales”)).filter(pl.col(“sales”)>100.0)



Если у нас много фильтром и в процессе исследования данных мы хотим их постоянно включать и выключать, то можно сделать так
(
df
.filter(pl.col(“value1”)==value1)
# .filter(pl.col(“value2”)==value2)
.filter(pl.col(“value3”)>value3)
.filter(pl.col(“value4”)<value4)
)

В пандасе так тоже можно. Но когда потребуется больше.

Посчитать несколько агрегация тоже можно с помощью меньшего количества кода
(
df.group_by(“key”)
.agg(
pl.min(“value”).alias(min_value_name),
pl.mean(“value”).alias(mean_value_name)
pl.max(“value”).alias(max_value_name)
pl.len().alias(size_name),
)
)


Бонус. В функцию len не нужно передавать имя поля. Для этой функции не важно какое поле передать, но меня всегда смущало когда я не могу просто посчитать число объектов. То есть в polars. Вместо {“value”:”size”} или
pd.NamedAgg(column="value", aggfunc="size") нужно писать просто pl.len()
👌1
Интересно мне одному не нравится слово айтишник? Это же не самоназвание. Ни один айтишник не представиться, айтишником. Он представиться тестировщиком, разработчиков, дата саентистом или кем-то ещё. Ни одна компания не размещает вакансию с названием айтишник.

Если мне нужно рассказать кто я человеку, который совсем не в теме. То я говорю примерно следующее.
"Слышали ли ты слова АI, искусственный интеллект, data science, машинное обучение, big data, большие данные? Вот этим всем я занимаюсь"
Меня удивляет, что есть люди которые отвечают нет. Тогда приходиться смириться с "айтишник"
2
Однажды Вастрик написал статью, где популярно объясняет что такое ML. там есть вот такая картинка. Но она же не правильная. Неправильная да и хрен бы с ним, но она уже начала гулять по интрнету. Я наткнулся на нее в каком-то тг канале. Пришлось красным исправить
🔥6
Я живу в Сочи. Меня часто спрашивают, куда тут можно сходить. А если не спрашивают, то мне обязательно хочется рассказать. Рассказать развернуто, а не просто перечислить список заведений. Чтобы не повторяться, я составил подборку баров. В каждом из них я был не один раз.
2👍1
Напомню почему коэффициент Стьюдента так называется. Выдержка из Википедии.

Данный критерий был разработан Уильямом Госсетом для оценки качества пива в компании Гиннесс. В связи с обязательствами перед компанией по неразглашению коммерческой тайны (руководство Гиннесса считало таковой использование статистического аппарата в своей работе), статья Госсета вышла в 1908 году в журнале «Биометрика» под псевдонимом «Student» (Студент).

Довольно известная и забавная история. Но если задуматься, то все выглядит безумно. Чувак работал на компанию. Придумал крутую штуку. Хотел про нее рассказать, но ему запрещало NDA. И тогда он опубликовал свою работу под псевдонимом!

Представьте если бы сейчас какой-нибудь сотрудник Open AI опубликовал, например, архитектуру GPT 4. А чтобы никто ничего не понял взял бы псевдоним Школьник. Вообще было бы не подозрительно.
3
когда рекомендации начали шуметь

В телеге можно посмотреть похожие телеграм каналы. Хз как они их считают. Скорее всего что-то на основе пересечений групп подписчиков. Я часто заглядывают в "похожие" каналы. Обычно там все понятно. Похожие каналы - это часто сайд проекты, либо друзья авторов, которые друг друга репостят и пиарят.

Но вот с похожими каналами ИТ-пикника получилось веселее. Тут на первом месте новости UFC. А на втором и третьем месте блоги про котов и собак.
1
Мне на литкоде попалась задача, которая формулируется примерно так. У вас есть несколько бутылок пива. Вы можете их:
- выпить
- пустые бутылки сдать в прием стеклотары
- на вырученные деньги купить еще пива

Сколько пива вы сможете выпить, если у вас N бутылок пива. А чтобы купить еще одну бутылку вам нужно сдать M пустых.

В задаче правда про речь про воду. Что-то мне в это не верится.
1
Треугольник дата саентиста - способ визуализировать разные специализации в области DS и около DS. Он достаточно известен, но, по-моему, он слишком сложен и не совсем точен. Поэтому я представляю разные специализации не в сложном пространстве, а на линии, где с одного края люди больше про бизнес, а с другого люди больше про технологии.

Сюда же вписывается концепция T-shape. T-shape существует в рамках одномерного распределения.
5