🔥 Экономим память при работе с Pandas
Сегодня мы хотим поделиться с вами полезным советом в работе с
По умолчанию
🟢 Пример
Создадим DataFrame с помощью
Мы точно должны что-то с этим сделать! Вообще, для диапазона от 1 до 100, нам вполне будет достаточно типа
🔵 Видите, простое преобразование типов данных может значительно сократить использование памяти. Это особенно полезно, когда мы имеем дело с огромными объемами данных и хотим оптимизировать производительность.
#pandas
Сегодня мы хотим поделиться с вами полезным советом в работе с
Pandas. Обычно на обучении говорят, что важно следить за типами данных в столбцах, но для новичков это может быть непонятно. Особенно когда речь идет о борьбе за оптимизацию использования памяти. Поэтому, мы покажем вам, почему это важно и как справиться с этой задачей.По умолчанию
Pandas всегда назначает своим столбцам наивысший возможный тип данных, вне зависимости от диапазона значений в столбце. Но всегда нужно стремиться оптимизировать эти типы, приводить их к удобному виду для отображения и оптимальному по памяти.🟢 Пример
Создадим DataFrame с помощью
Pandas и NumPy, используя случайно сгенерированные целые значения от 1 до 100:import pandas as pdТеперь, чтобы узнать, сколько места занимает столбец 'A', мы можем использовать метод
import numpy as np
df = pd.DataFrame(
np.random.randint(1, 100,
size=(10**7, 2)),
columns=["A", "B"])
info() для этого столбца:df['A'].info()Как видим, тип данных этого столбца -
# dtypes: int64(1)
# memory usage: 76.3 MB
int64, и занимает он - 76.3 МБ памяти. Это очень прилично!Мы точно должны что-то с этим сделать! Вообще, для диапазона от 1 до 100, нам вполне будет достаточно типа
int8. Так и сделаем, преобразуем столбец:df['A'] = df['A'].astype(np.int8)После преобразования давайте снова проверим информацию о столбце 'A':
df['A'].info()Теперь тип данных столбца 'A' -
# dtypes: int8(1)
# memory usage: 9.5 MB
int8, и занимает он всего 9.5 МБ памяти. Это значительное сокращение используемой памяти по сравнению с исходным значением.🔵 Видите, простое преобразование типов данных может значительно сократить использование памяти. Это особенно полезно, когда мы имеем дело с огромными объемами данных и хотим оптимизировать производительность.
#pandas
🔥14👍5❤1
🔥 Когда пригодится SELF JOIN?
Как часто вы используете соединение таблицы с самой собой? Это не часто встречающаяся практика. Но на самом деле
1️⃣ Поиск пробелов
Имеется таблица
Иногда необходимо найти места, так называемых пробелов в значениях. В нашем случае - число, с которого этот разрыв начинается. Например, у нас есть строки:
2️⃣ Поиск дублирующихся строк
Допустим, таблица
Для поиска дублирующихся строк на основе конкретного столбца, например
3️⃣ Ранжирование
Имеем таблицу
Чтобы назначить определенное место каждому спортсмену мы снова соединим таблицу саму с собой.
💥 Есть еще множество необычных вещей, на которые способен
#sql
Как часто вы используете соединение таблицы с самой собой? Это не часто встречающаяся практика. Но на самом деле
self join помогает решить удивительно большой список задач. Давайте посмотрим!1️⃣ Поиск пробелов
Имеется таблица
foo (см. Карточку 1)Иногда необходимо найти места, так называемых пробелов в значениях. В нашем случае - число, с которого этот разрыв начинается. Например, у нас есть строки:
1, 4, 9 - разрывы здесь это 2-3, 5-8. И нам нужно получить первое число каждого разрыва, то есть 2 и 5. И для этого мы можем соединить таблицу саму с собой.2️⃣ Поиск дублирующихся строк
Допустим, таблица
foo теперь содержит имена, фамилии и почту клиентов. (см. Карточку 2)Для поиска дублирующихся строк на основе конкретного столбца, например
email, можно использовать тот же подход:3️⃣ Ранжирование
Имеем таблицу
player. (см. Карточку 3)Чтобы назначить определенное место каждому спортсмену мы снова соединим таблицу саму с собой.
💥 Есть еще множество необычных вещей, на которые способен
self join, о которых мы вам еще расскажем. Но сначала поделитесь, приходилось ли вам использовать подобные конструкции в своей работе? Может быть у вас есть свои лайфхаки? Пишите в комментариях!#sql
🔥10👍4❤1
🔍 Целостность данных при merge в Pandas
Когда мы объединяем две таблицы в Pandas, очень важно убедиться, что все пройдет без ошибок. Например, если один из двух датафреймов имеет повторяющиеся ключи, это приведет к дублированию строк, чего мы, скорее всего, не хотим.
Но есть решение! У метода
🔹 Объединение с Уникальными Ключами (One-to-One Merge)
При таком объединении ключи должны быть уникальными в обеих таблицах. Давайте посмотрим на пример:
Если в одной из таблиц есть повторяющиеся ключи,
-
-
-
-
И Pandas выдаст ошибку слияния, если
✅ Это поможет вам предотвратить ошибки, которые часто могут остаться незамеченными.
#python #pandas
Когда мы объединяем две таблицы в Pandas, очень важно убедиться, что все пройдет без ошибок. Например, если один из двух датафреймов имеет повторяющиеся ключи, это приведет к дублированию строк, чего мы, скорее всего, не хотим.
Но есть решение! У метода
merge() есть параметр validate, который проверяет, имеет ли merge определенный тип.🔹 Объединение с Уникальными Ключами (One-to-One Merge)
При таком объединении ключи должны быть уникальными в обеих таблицах. Давайте посмотрим на пример:
import pandas as pdВсе получилось и мы не получим никакой ошибки:
df1 = pd.DataFrame({
'colA': ['A', 'B', 'C'],
'colB': [1, 2, 3]})
df2 = pd.DataFrame({
'colA': ['A', 'B', 'C'],
'colC': [4, 5, 6]})
# ключи уникальны
result = pd.merge(df1, df2,
on='colA',
validate='one_to_one')
print(result)
colA colB colC🔹 Обработка Повторяющихся Ключей
0 A 1 4
1 B 2 5
2 C 3 6
Если в одной из таблиц есть повторяющиеся ключи,
merge выдаст ошибку:import pandas as pdРезультат:
df1 = pd.DataFrame({
'colA': ['A', 'B', 'C'],
'colB': [1, 2, 3]})
df2 = pd.DataFrame({
'colA': ['A', 'B', 'B'],
'colC': [4, 5, 6]})
# повторяющиеся ключи:
'colA': ['A', 'B', 'C'] и
'colA': ['A', 'B', 'B']
try:
result = pd.merge(df1, df2,
on = 'colA',
validate='one_to_one')
except pd.errors.MergeError as e:
print(f"Ошибка: {e}")
Ошибка объединения: Merge keys are not unique in right dataset; not a one-to-one merge🔹 Какие еще есть объединения?
-
one_to_one: Ключи должны быть уникальными в обоих датафреймах-
one_to_many: Ключи должны быть уникальными в левом датафрейме.-
many_to_one: Ключи должны быть уникальными в правом датафрейме.-
many_to_many: Ключи могут быть уникальными, а могут и не быть в обоих датафреймахИ Pandas выдаст ошибку слияния, если
merge не соответствует указанному типу.✅ Это поможет вам предотвратить ошибки, которые часто могут остаться незамеченными.
#python #pandas
👍20🔥8❤1
🔥 Знакомимся с новым помощником Pandas
Часто бывает, что мы используем неоптимизированные методы обработки, что снижает производительность кода и может привести к незамеченным ошибкам. Так что показываем вам в деле ассистента
Он работает как компаньон, давая предложения/предупреждения о ваших шагах по обработке данных. Давайте посмотрим!
📥 Как установить?
Просто выполните следующую команду:
🟣 Что может Dovpanda
Пример 1
🟢 Зная эти рекомендации, мы можем сделать код более оптимизированным и чистым. Успехов! 🎉
Pandas - самая популярная библиотека для анализа данных! Но не всем студентам (по опыту) эта библиотека дается легко. Поэтому хотим познакомить вас с новым помощником - Dovpanda!Часто бывает, что мы используем неоптимизированные методы обработки, что снижает производительность кода и может привести к незамеченным ошибкам. Так что показываем вам в деле ассистента
Dovpanda, который может давать подсказки и направления при работе с Pandas.Он работает как компаньон, давая предложения/предупреждения о ваших шагах по обработке данных. Давайте посмотрим!
📥 Как установить?
Просто выполните следующую команду:
pip install dovpanda> При импорте вы можете получить ошибку. Просто игнорируйте это и продолжайте работать с Pandas, как и работали бы. Предложения и подсказки будут работать.
import pandas as pd
import dovpanda
🟣 Что может Dovpanda
Пример 1
df = pd.DataFrame([[1,2],[3,4]], columns = ["A","B"])Пример 2
def apply_func(row):
pass
iter_df = df.iterrows()
# df.iterrows is not recommended.
# Essentially it is very similar to iterating the rows of the frames in a loop.
# In the majority of cases, there are better alternatives that utilize pandas' vector operation
merged_df = pd.concat((df, df))Пример 3
# All dataframes have the same columns and same number of rows.
# Pay attention, your axis is 0 which concatenates vertically
# After concatenation you have duplicated indices - pay attention
pd.read_csv("../some_dataset.csv")
# Dataframe has 1000 rows.
# Column Company_Name has only 15 values which suggests it's a categorical feature.
# After df is created, Consider converting it to categorical by using df['Company_Name'] = df['Company_Name'].astype('category')
Это лишь малая часть, еще больше подсказок можете посмотреть под постом.🟢 Зная эти рекомендации, мы можем сделать код более оптимизированным и чистым. Успехов! 🎉
🔥19👍6
💥 Решаем необычную задачку по SQL
На днях мы наткнулись на очень любопытную задачку и решили, что стоит решить её вместе с вами!
🟢 Условие
Нам дана таблица подписок, которая состоит из
Например, если период подписки
Пример входной таблицы и результата запроса смотрите на карточке 1 под постом
🔵 Решение
На первый взгляд понятно, что мы должны сравнить каждую подписку с каждой другой. Давайте рассмотрим даты начала и конца подписки
Тогда, если
- Начало = 2020-01-01
- Конец = 2020-01-31
- Начало = 2020-01-16
- Конец = 2020-01-26
Здесь мы видим, что
Алгоритм мы уже подобрали, но есть несколько нюансов:
- мы должны убедиться, что пользователь не сравнивается с его собственной подпиской;
- используем
Видим, что для каждого пользователя существует другой пользователь в случае, если даты совпадают. Для
Теперь, объединив все это вместе, мы можем сгруппировать по полю
📚 Интересная задача, согласитесь? Не часто встречаются соединения по неравенству. Вернее, use кейс встретить можно часто, но не всегда вспоминается, что так тоже можно! Если вдруг вы забыли о такой крутой опции - приглашаем в наш недавний пост про Non-Equi JOIN!
На днях мы наткнулись на очень любопытную задачку и решили, что стоит решить её вместе с вами!
🟢 Условие
Нам дана таблица подписок, которая состоит из
даты начала и окончания подписки для каждого пользователя. Нам нужно написать запрос, который возвращает true/false для каждого пользователя на основе совпадения дат с другими пользователями. Например, если период подписки
user1 совпадает с периодом подписки любого другого пользователя, запрос должен возвращать значение True для user1.Пример входной таблицы и результата запроса смотрите на карточке 1 под постом
🔵 Решение
На первый взгляд понятно, что мы должны сравнить каждую подписку с каждой другой. Давайте рассмотрим даты начала и конца подписки
UserA как startA и endA, и аналогично для UserB - startB и endB.Тогда, если
startA ≤ endB и endA ≥ startB, то мы можем сказать, что два диапазона дат перекрываются. Давайте возьмем два примера - сравним U1 и U2:- Начало = 2020-01-01
- Конец = 2020-01-31
- Начало = 2020-01-16
- Конец = 2020-01-26
Здесь мы видим, что
startA(2020-01-01) меньше, чем endB(2020-01-26), и аналогично, endA(2020-01-31) больше, чем startB(2020-01-16), и, следовательно, можно сделать вывод, что даты перекрывают друг друга. Аналогично, если сравнить U1 и U4 (из таблицы), условия не выполнятся и вернется значение false.Алгоритм мы уже подобрали, но есть несколько нюансов:
- мы должны убедиться, что пользователь не сравнивается с его собственной подпиской;
- используем
LEFT JOIN таблицы с самой собой, чтобы сопоставить пользователя с каждым другим пользователем, который удовлетворяет нашему условию.SELECT *Результат запроса смотрите на карточке 2 под постом 😉
FROM subnoscriptions AS s1
LEFT JOIN subnoscriptions AS s2
ON s1.user_id != s2.user_id
AND s1.start <= s2.end
AND s1.end >= s2.start
Видим, что для каждого пользователя существует другой пользователь в случае, если даты совпадают. Для
user1 есть 2 строки, указывающие на то, что он совпадает с 2 пользователями. А для user4 соответствующий id равен null, что указывает на то, что он не совпадает ни с каким другим пользователем.Теперь, объединив все это вместе, мы можем сгруппировать по полю
s1.user_id и просто проверить, существует ли какое-либо значение true для пользователя, где s2.user_id НЕ равен NULL.SELECT s1.user_id,Мы использовали
(CASE WHEN s2.user_id
IS NOT NULL THEN 1
ELSE 0 END) AS overlap
FROM subnoscriptions AS s1
LEFT JOIN subnoscriptions AS s2
ON s1.user_id != s2.user_id
AND s1.start <= s2.end
AND s1.end >= s2.start
GROUP BY s1.user_id
CASE чтобы присвоить 1 и 0 в зависимости от значения s2.user_id для данного пользователя. Конечный результат смотрите на карточке 3 под постом. 📚 Интересная задача, согласитесь? Не часто встречаются соединения по неравенству. Вернее, use кейс встретить можно часто, но не всегда вспоминается, что так тоже можно! Если вдруг вы забыли о такой крутой опции - приглашаем в наш недавний пост про Non-Equi JOIN!
🔥13❤4👍4
🔥 Супер-удобная функция Matplotlib
Это, должно быть, самая крутая вещь, которую мы когда-либо узнавали о
🤔 Обычно, для создания графиков мы используем метод
- это ограничивает нашу гибкость при создании макета;
- иногда получаются ошибки индексации и некоторые другие неловкости.
💡 Вместо этого мы можем использовать метод
Например, расположение строк:
- AB
- AC
Создаст три подграфика, в которых:
- подграфик
- подграфик
- подграфик
Затем создайте подграфик в определенной области, просто через доступ к словарю
#python #visualization
Это, должно быть, самая крутая вещь, которую мы когда-либо узнавали о
Matplotlib. 🤔 Обычно, для создания графиков мы используем метод
plt.subplots(). Но иногда это превращается в довольно громоздкие конструкции. А еще:- это ограничивает нашу гибкость при создании макета;
- иногда получаются ошибки индексации и некоторые другие неловкости.
💡 Вместо этого мы можем использовать метод
plt.subplot_mosaic(). Так, мы сможем создать график и расположить его как угодно, определив структуру графика простой строкой. Например, расположение строк:
- AB
- AC
Создаст три подграфика, в которых:
- подграфик
A будет занимать весь первый столбец- подграфик
B будет занимать верхнюю половину второго столбца- подграфик
C будет занимать нижнюю половину второго столбцаax = fig.subplot_mosaic("""AB
AC""")
ax['A'].plot(...) # область А
ax['B'].plot(...) # область B
ax['C'].plot(...) # область C
Результат смотрите под постомЗатем создайте подграфик в определенной области, просто через доступ к словарю
ax по ключу ('A', 'B' или 'C' ).type(ax)📌 Попробуйте вместе с нами!
dict
ax['A'].plot(...) # область А
ax['B'].plot(...) # область B
ax['C'].plot(...) # область C
import matplotlib.pyplot as pltСкажите, классная функция?! С помощью нее гораздо проще создавать дашборды 😉
import numpy as np
fig = plt.figure(
layout="constrained",
figsize = (8,6))
mosaic = """abc
add
eee"""
ax = fig.subplot_mosaic(mosaic)
x = np.linspace(0.1, 1, 10)
ax['a'].plot(x, np.sqrt(x))
ax['b'].scatter(x, x**2)
ax['c'].scatter(x, np.log(x))
ax['d'].bar([1,2,3,4,5],
[1,2,3,4,5])
ax['e'].hist(
np.random.normal(0,1, 100))
plt.show();
#python #visualization
🔥13😱7🤩5
Приглашаем к нам в команду - Технический автор / Методист 🔥
На связи Андрон, CEO IT Resume & Simulative. И сегодня я с хорошей новостью - мы расширяем команду и ищем крутого технического автора / методиста 🔥
Если коротко - ищем в команду человека, который будет заниматься созданием задач, уроков, статей, постов, автотестов по теме аналитики и программирования по всем нашим продуктам. Результаты вашей работы будут видеть тысячи человек каждый месяц - это очень вдохновляет 😍
🔗 Подробнее про вакансию и как откликнуться - по ссылке: https://merciful-cobra-6c3.notion.site/086bc4211c0f4fb38ea0cd2df6bd69bb?pvs=4
Желаю удачи и до скорой встречи у нас в команде 😉
На связи Андрон, CEO IT Resume & Simulative. И сегодня я с хорошей новостью - мы расширяем команду и ищем крутого технического автора / методиста 🔥
Если коротко - ищем в команду человека, который будет заниматься созданием задач, уроков, статей, постов, автотестов по теме аналитики и программирования по всем нашим продуктам. Результаты вашей работы будут видеть тысячи человек каждый месяц - это очень вдохновляет 😍
🔗 Подробнее про вакансию и как откликнуться - по ссылке: https://merciful-cobra-6c3.notion.site/086bc4211c0f4fb38ea0cd2df6bd69bb?pvs=4
Желаю удачи и до скорой встречи у нас в команде 😉
🔥5❤2🤩2
📚 Секреты с SQL собеседований: Изучаем констраинты в PostgreSQL!
Привет, друзья! Сегодня мы углубимся в мир
⭐️ Что такое констраинты в PostgreSQL?
Констраинты – это правила или ограничения, которые налагаются на данные в таблицах базы данных. Они гарантируют соблюдение определенных правил при вставке или изменении данных, помогая избежать ошибок и несогласованных значений.
🔍 Типы констраинтов
1. PRIMARY KEY (
2. FOREIGN KEY (
3. UNIQUE (
4. CHECK (проверка): Устанавливает условие, которое должно быть истинным для вставки или обновления данных в таблице.
Пример:
Вопросы о констраинтах часто задают на собеседованиях, чтобы убедиться, что вы хорошо разбираетесь в работе с БД и понимаете, как обеспечить целостность данных. И хотя аналитикам редко приходится формировать таблицы - это спрашивают практически на каждом собеседовании. А предупрежден - значит вооружен!
👉 Подготовиться к любому техническому собеседованию поможет Симулятор собеседования аналитика → задачи с собеседований в топовые компании, тестовые онлайн-собеседования, вопросы и кейсы и много другое!
#sql #interview_problems
Привет, друзья! Сегодня мы углубимся в мир
SQL и обсудим одну из важных тем – констраинты! Если вы готовитесь к собеседованию на должность, связанную с SQL, то обязательно стоит освоить эту тему. Констраинты в PostgreSQL помогают обеспечивать целостность данных и поддерживать ограничения, защищающие информацию.⭐️ Что такое констраинты в PostgreSQL?
Констраинты – это правила или ограничения, которые налагаются на данные в таблицах базы данных. Они гарантируют соблюдение определенных правил при вставке или изменении данных, помогая избежать ошибок и несогласованных значений.
🔍 Типы констраинтов
1. PRIMARY KEY (
первичный ключ): Обеспечивает уникальность значений в столбце и предотвращает ввод значения NULL.CREATE TABLE products (
product_no integer PRIMARY KEY,
name text,
price numeric
);
2. FOREIGN KEY (
внешний ключ): Связывает значения в столбце с значениями в другой таблице, обеспечивая ссылочную целостность данных.-- например создадим внешний ключ к прошлой таблице в таблице orders
CREATE TABLE orders (
order_id integer PRIMARY KEY,
product_no integer REFERENCES
products (product_no),
quantity integer
);
3. UNIQUE (
уникальный): Гарантирует уникальность значений в столбце. Причем, в отличие от PRIMARY KEY - не гарантирует отсутствие NULL-значений. Так как два NULL значения для PostgreSQL - различны 🙂CREATE TABLE products (
product_no integer UNIQUE,
name text,
price numeric
);
-- или для группы столбцов сразу
CREATE TABLE example (
a integer,
b integer,
c integer,
UNIQUE (a, c)
);
-- причем в таком формате,
уникальными должны быть только
сочетания этих столбцов, а
значения по отдельности
уникальными могут и не быть :)
4. CHECK (проверка): Устанавливает условие, которое должно быть истинным для вставки или обновления данных в таблице.
Пример:
CREATE TABLE products (🚀 Почему это важно для собеседований?
product_no integer,
name text,
price numeric CHECK (price > 0)
);
-- ограничили цену товара положительными значениями
Вопросы о констраинтах часто задают на собеседованиях, чтобы убедиться, что вы хорошо разбираетесь в работе с БД и понимаете, как обеспечить целостность данных. И хотя аналитикам редко приходится формировать таблицы - это спрашивают практически на каждом собеседовании. А предупрежден - значит вооружен!
👉 Подготовиться к любому техническому собеседованию поможет Симулятор собеседования аналитика → задачи с собеседований в топовые компании, тестовые онлайн-собеседования, вопросы и кейсы и много другое!
#sql #interview_problems
❤11👍7🔥7
🔥 7 полезных применений Underscore в Python
Сегодня давайте поговорим о таком незаметном, но очень полезном символе - нижнее подчеркивание или
1️⃣ Имя переменной в цикле
Это, наверное, знакомо всем. В ситуациях, когда вам не нужно далее использовать переменную цикла - можно не придумывать ей имя, а просто задать
Чтобы сделать большие числа более понятными, можно использовать подчеркивания для разделения разрядов. Ваш код будет намного чище и легче читаться! 👀
Двойные нижние подчеркивания позволяют нам написать магические методы:
Если вам нужно сделать атрибут приватным в классе, добавьте двойное подчеркивание в начале. Это защитит вашу переменную от случайного переопределения. 🔒
Если вы хотите обозначить переменную для внутреннего использования, добавьте одиночное подчеркивание в начале имени. Это поможет избежать конфликтов и понять, что эта переменная предназначена для внутренних целей. 💡
6️⃣ Конфликты с ключевыми словами
Если вам нужно использовать имя, которое совпадает с зарезервированным словом, добавьте одиночное подчеркивание в конец имени:
Когда вам нужно использовать результат предыдущего вычисления, просто введите
Сегодня давайте поговорим о таком незаметном, но очень полезном символе - нижнее подчеркивание или
underscore (_). Эти маленькие символы на самом деле ответственны за широкий функционал. Какой? Давайте посмотрим:1️⃣ Имя переменной в цикле
Это, наверное, знакомо всем. В ситуациях, когда вам не нужно далее использовать переменную цикла - можно не придумывать ей имя, а просто задать
underscore:for _ in range(10):2️⃣ Разделение цифр
pass
Чтобы сделать большие числа более понятными, можно использовать подчеркивания для разделения разрядов. Ваш код будет намного чище и легче читаться! 👀
100000000000003️⃣ Магические методы
# 10000000000000
10_000_000_000_000
# 10000000000000
Двойные нижние подчеркивания позволяют нам написать магические методы:
class MyClass:4️⃣ Приватность
def __init__(self) :
self.variable = 10
Если вам нужно сделать атрибут приватным в классе, добавьте двойное подчеркивание в начале. Это защитит вашу переменную от случайного переопределения. 🔒
self.__attr = 105️⃣ Одиночное подчеркивание для внутренних переменных
Если вы хотите обозначить переменную для внутреннего использования, добавьте одиночное подчеркивание в начале имени. Это поможет избежать конфликтов и понять, что эта переменная предназначена для внутренних целей. 💡
# file.pyИ десерт!
_internal = 10
from file import *
_variable
# NameError: name '_variable' is not defined
6️⃣ Конфликты с ключевыми словами
Если вам нужно использовать имя, которое совпадает с зарезервированным словом, добавьте одиночное подчеркивание в конец имени:
def foo(class = "object"):7️⃣ Последнее вычисленное значение
... # не сработает ❌
def foo(class_ = "object"):
... # сработает ✅
Когда вам нужно использовать результат предыдущего вычисления, просто введите
_, и Python даст вам последнее значение. Вот так легко и удобно! 😎5 + 10💫 Надеемся, что эти маленькие хитрости сделают ваш опыт еще более приятным. Поделитесь с нами, какие секреты Underscore в Python вы знаете и любите использовать!
# 15
_
# 15
👍20🔥10❤3
🔥 DAU/MAU - ключевые продуктовые метрики
Сегодня мы поговорим о ключевых метриках использования продукта, которые помогают оценить активность пользователей и вовлеченность. Эти метрики являются основой для понимания того, насколько успешно работает ваш продукт и насколько довольны им пользователи. Итак,
🔵 Как эти метрики стали использоваться?
DAU/MAU был популярным показателем из-за Facebook, который популяризировал метрику. В результате, когда они начали говорить об этом, другие приложения часто стали оцениваться по тем же ключевым показателям эффективности.
🟢 Что такое DAU?
🟣 Что такое MAU?
📈 Как увеличить?
Важно активно работать над улучшением пользовательского опыта, внедрять новые функции и привлекательный контенты.
Не все должно использоваться ежедневно, чтобы быть ценным. По другую сторону находятся продукты, использование которых - скорее эпизодическое, но каждое взаимодействие имеет большое значение. И здесь
> В Uber, например, самые выгодные поездки - это поездки в аэропорты, премиум поездки для важных выходов, деловых поездок и т. д. Это происходит не каждый день, и хотя есть люди, использующие Uber для поездок на работу, это не есть стандартный сценарий использования.
🟡 Что сделать?
Если ваш
Аналогично, возможно, частота использования увеличивается в корреляции с чем-то. Можно проследить за этим и предположить, что, увеличивая эту переменную,
Наконец, может быть,
Научитесь считать, анализировать и правильно интерпретировать продуктовые метрики в нашем 👉 Симуляторе «Аналитик данных» 👈!
#продуктовые_метрики
Сегодня мы поговорим о ключевых метриках использования продукта, которые помогают оценить активность пользователей и вовлеченность. Эти метрики являются основой для понимания того, насколько успешно работает ваш продукт и насколько довольны им пользователи. Итак,
DAU и MAU!🔵 Как эти метрики стали использоваться?
DAU/MAU был популярным показателем из-за Facebook, который популяризировал метрику. В результате, когда они начали говорить об этом, другие приложения часто стали оцениваться по тем же ключевым показателям эффективности.
🟢 Что такое DAU?
DAU (Daily Active Users) – это метрика, которая показывает количество уникальных пользователей, активно использующих ваш продукт или сервис в течение одного дня. 🟣 Что такое MAU?
MAU (Monthly Active Users) – это метрика, измеряющая количество уникальных пользователей, которые заходят на вашу платформу в течение месяца. MAU предоставляет гораздо более обширную картину о популярности продукта и его росте на более длительном временном отрезке.📈 Как увеличить?
Важно активно работать над улучшением пользовательского опыта, внедрять новые функции и привлекательный контенты.
Обратная связь от пользователей – ваш лучший друг!
‼️ НО!Не все должно использоваться ежедневно, чтобы быть ценным. По другую сторону находятся продукты, использование которых - скорее эпизодическое, но каждое взаимодействие имеет большое значение. И здесь
DAU/MAU - неподходящая метрика.> В Uber, например, самые выгодные поездки - это поездки в аэропорты, премиум поездки для важных выходов, деловых поездок и т. д. Это происходит не каждый день, и хотя есть люди, использующие Uber для поездок на работу, это не есть стандартный сценарий использования.
🟡 Что сделать?
Если ваш
DAU/MAU не очень высок, то посмотрите на свою основную пользовательскую базу. Какой % ваших пользователей был активным каждый день на прошлой неделе? Что они делали? Как вы собираетесь привлечь больше?Аналогично, возможно, частота использования увеличивается в корреляции с чем-то. Можно проследить за этим и предположить, что, увеличивая эту переменную,
DAU/MAU со временем будет расти.Наконец, может быть,
DAU/MAU просто не для вас. Иногда вам не нужно быть приложением каждого дня, чтобы быть успешными. Может быть клиенты используют ваш продукт 2 раза в год, но он приносит им большую ценность, а вам - крупную сумму денег!Научитесь считать, анализировать и правильно интерпретировать продуктовые метрики в нашем 👉 Симуляторе «Аналитик данных» 👈!
#продуктовые_метрики
🔥10❤6👍5
Кому в аналитике работать хорошо? 🏖
В наших проектах мы ежемесячно помогаем десяткам ребят с разным опытом найти свою работу мечты в аналитике. Кто-то устраивается BI-аналитиком, кто-то находит свое призвание в продуктовой аналитике, а кто-то тащится от маркетинга.
Но абсолютно каждый раз перед принятием оффера мы вместе с ребятами оцениваем - а насколько вообще в компании работать классно, интересно и перспективно? Ведь это супер важно для карьерного роста - попасть в проект, который позволяет тебе расти вместе с бизнесом, в котором ты работаешь, за счет супер-интересных задач и супер-амбициозной команды😎
И одна из таких компаний, которую мы всегда рекомендуем двумя руками - Яндекс, а в частности его подразделения Яндекс 360 и Yandex Cloud (наверняка вы пользуетесь их продуктами, признайтесь)🔥 Они наши давние партнеры - в разное время там работало, как минимум, несколько десятков наших ребят.
А сегодня они по старой дружбе попросили рассказать вам о двух классных вакансиях - а мы не могли отказать🕺 Так что налетайте, пока они еще актуальны)))
* Developer Advocate Data Platform
Если коротко: Нужно помогать Яндексу продвигать Yandex Cloud среди разработчиков. Условия - отличные. Задачи - супер интересные и нестандартные. А строчка в резюме с таким звучным названием вакансии - вообще кайф)))
Важная информация:Админ канала уже откликнулся на вакансию, так что не затягивайте - конкуренция плотна я))
🔗 Ссылка на вакансию: ссылка
* Аналитик-разработчик в области автоматизации процессов ИБ
Рекламу анализируют многие. Многие анализируют HR. Еще больше анализируют продукт. А кто анализирует безопасность? 😏
Правильный ответ: те, кто не растерялся и первым откликнулся на эту кайфовую вакансию 😁
🔗 Ссылка на вакансию: ссылка
В общем, если вы развиваетесь в аналитике и кайфуете от работы в крутых командах и проектах - вам в Яндекс. Больше и добавить нечего - просто залетайте по ссылкам и будет вам счастье)
В наших проектах мы ежемесячно помогаем десяткам ребят с разным опытом найти свою работу мечты в аналитике. Кто-то устраивается BI-аналитиком, кто-то находит свое призвание в продуктовой аналитике, а кто-то тащится от маркетинга.
Но абсолютно каждый раз перед принятием оффера мы вместе с ребятами оцениваем - а насколько вообще в компании работать классно, интересно и перспективно? Ведь это супер важно для карьерного роста - попасть в проект, который позволяет тебе расти вместе с бизнесом, в котором ты работаешь, за счет супер-интересных задач и супер-амбициозной команды
И одна из таких компаний, которую мы всегда рекомендуем двумя руками - Яндекс, а в частности его подразделения Яндекс 360 и Yandex Cloud (наверняка вы пользуетесь их продуктами, признайтесь)
А сегодня они по старой дружбе попросили рассказать вам о двух классных вакансиях - а мы не могли отказать
* Developer Advocate Data Platform
Если коротко: Нужно помогать Яндексу продвигать Yandex Cloud среди разработчиков. Условия - отличные. Задачи - супер интересные и нестандартные. А строчка в резюме с таким звучным названием вакансии - вообще кайф)))
Важная информация:
* Аналитик-разработчик в области автоматизации процессов ИБ
Рекламу анализируют многие. Многие анализируют HR. Еще больше анализируют продукт. А кто анализирует безопасность? 😏
Правильный ответ:
В общем, если вы развиваетесь в аналитике и кайфуете от работы в крутых командах и проектах - вам в Яндекс. Больше и добавить нечего - просто залетайте по ссылкам и будет вам счастье)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3❤2