5 декабря в 18:00 спикеры из Авито и Т-Банка расскажут про:
Подробности и регистрация
Добро пожаловать в канал "Мир аналитика данных"! Здесь мы подробно рассматриваем различные аспекты работы с данными, делимся интересными фактами и информацией о последних тенденциях в этой области. Если вы увлечены аналитикой данных или хотите узнать больше о этой профессии, то наш канал - именно то, что вам нужно!
Наш автор, @Valeria_Shuvaeva, рассказывает о своем опыте смены профессии и делится своими знаниями и историями из рабочей жизни. Она старается поддерживать в канале атмосферу творчества и взаимопомощи.
Если вам нравится контент, который мы создаем, вы всегда можете отблагодарить нас донатами на boosty.to/analysts_world. Ваши пожертвования помогут нам создавать еще более полезный и интересный контент для вас и других аналитиков данных.
Присоединяйтесь к нам в канале "Мир аналитика данных" и окунитесь в увлекательный мир цифровой аналитики! Будем рады видеть вас среди наших подписчиков!
02 Dec, 10:16
01 Dec, 16:09
29 Nov, 10:46
data = {
#дата покупки
'created_at': ['2024-10-25', '2024-10-30', '2024-10-30', '2024-11-03', '2024-11-04', '2024-11-05'],
#идентификатор пользователя
'user_id': [1, 1, 2, 2, 2, 1],
#номер сделки
'deal_id': [101, 102, 103, 104, 105, 106],
#сумма покупки
'amount': [200, 300, 150, 250, 100, 200]
}
df = pd.DataFrame(data)
df['created_at'] = pd.to_datetime(df['created_at'])
df['month'] = df['created_at'].dt.to_period('M')
df['rank'] = df.groupby('user_id').cumcount() + 1
# Сумма первых покупок
first_deals = df[df['rank'] == 1].groupby('month', as_index=False)['amount'].sum()
# Сумма вторых покупок
second_deals = df[df['rank'] == 2].groupby('month', as_index=False)['amount'].sum()
# Сумма третьих покупок
third_deals = df[df['rank'] == 3].groupby('month', as_index=False)['amount'].sum()
26 Nov, 10:00
15 Nov, 09:42
12 Nov, 13:24
12 Nov, 13:24
07 Nov, 08:58
if 'df1' not in locals():
df1 = pd.DataFrame() # Создаем df1, если он не существует
import pandas as pd
df2 = pd.DataFrame({
'status': [1, 2, 3],
'manager_name': ['Иванов', 'Петров', 'Сидоров'] })
# Проверка наличия df1
if 'df1' not in locals() or df1.empty:
df1 = df2.copy() # Если df1 пустой или не существует, присваиваем ему df2
else:
df1 = pd.concat([df1, df2], ignore_index=True) # Объединение строк
try:
if df1.empty:
# Если df1 пустой, присваиваем ему значения df2
df1 = df2.copy()
else:
# Если df1 не пустой, объединяем его с df2
df1 = pd.concat([df1, df2], ignore_index=True)
except NameError:
# Если df1 не был создан, создаем его как копию df2
df1 = df2.copy()
df1
23 Oct, 09:44
22 Oct, 09:24
19 Oct, 08:56
19 Oct, 08:56
14 Oct, 09:01
12 Oct, 17:58
11 Oct, 10:56
10 Oct, 11:50
from pandasql import sqldf
import pandas as pd
# Список user_id
users_lst = [987654321]
# Проверка длины списка
if len(users_lst) == 1:
# Добавляем фиктивное значение
users_lst.append(123456789)
# Преобразование списка в кортеж
users_lst = tuple(users_lst)
# Пример базы данных с двумя колонками: user_id и amount
data = {
'user_id': [987654321, 154589364, 234567890, 345678901, 456789012],
'amount': [100, 200, 300, 400, 500]
}
df = pd.DataFrame(data)
# SQL-запрос
query = f"""
SELECT user_id, amount
FROM df
WHERE user_id IN {users_lst}
"""
# Вывод результата
sqldf(query)
08 Oct, 09:01
07 Oct, 12:46
07 Oct, 07:29
03 Oct, 11:24
03 Oct, 11:16
30 Sep, 09:33
SELECT df_1.user_id, df_1.amount, df_2.type
FROM df_1
LEFT JOIN df_2 ON df_1.user_id = df_2.user_id AND df_2.type = 'admin'
SELECT df_1.user_id, df_1.amount, df_2.type
FROM df_1
LEFT JOIN df_2 ON df_1.user_id = df_2.user_id
WHERE df_2.type = 'admin'
25 Sep, 11:05
25 Sep, 11:05
20 Sep, 11:54
13 Sep, 11:23
03 Sep, 07:31
26 Aug, 10:10
import pandas as pd
# Создаем исходный DataFrame
data = {
'client_id': [101, 102, 103, 104, 105],
'client_name': ['Client A', 'Client B', 'Client C', 'Client D', 'Client E'],
'turnover': [1200000, 500000, 1500000, 2000000, 3000000]
}
df = pd.DataFrame(data)
filtered_df = df[df['turnover'] > 1000000].sort_values('turnover', ascending=False)
incorrect_top_3 = filtered_df.loc[:3]
correct_top_3 = filtered_df.iloc[:3]
13 Aug, 18:26
01 Aug, 09:20
import pandas as pd
data = [
{ 'client_id': 111,
'value': 'installment_0_0_3_7,59 Срок рассрочки 3 мес.'
'installment_0_0_4_8,42 Срок рассрочки 4 мес.'
'installment_0_0_6_10,84 Срок рассрочки 6 мес.'
},
{
'client_id': 222,
'value': 'installment_0_0_3_4,93 Срок рассрочки 3 мес.'
},
{
'client_id': 333,
'value': 'installment_0_0_4_5,64 Срок рассрочки 4 мес.'
'installment_0_0_6_6,05 Срок рассрочки 6 мес.'
},
{
'client_id': 444,
'value': 'installment_0_0_3_7,78 Срок рассрочки 3 мес.'
'installment_0_0_6_9,60 Срок рассрочки 6 мес.'
},
{
'client_id': 555,
'value': 'installment_0_0_4_8,57 Срок рассрочки 4 мес.'
'installment_0_0_6_8 Срок рассрочки 6 мес.'
}
]
df = pd.DataFrame(data)
extracted = df.set_index('client_id')['value'].str.extractall(r'installment_0_0_(\d+)_([\d,]+)')
extracted = extracted.reset_index(level=1, drop=True).reset_index()
extracted.columns = ['client_id', 'term', 'rate']
extracted['rate'] = extracted['rate'].str.replace(',', '.').astype(float)
extracted['term'] = 'Срок рассрочки ' + extracted['term'] + ' мес.'
conditions = {
"Срок рассрочки 3 мес.": 5.93,
"Срок рассрочки 4 мес.": 6.64,
"Срок рассрочки 6 мес.": 7.05
}
filtered_df = extracted[extracted.apply(
lambda row: row['term'] in conditions and row['rate'] <= conditions[row['term']], axis=1
)]
24 Jul, 15:04
23 Jul, 09:43
data = [
{
'client_id': 111,
'value': 'installment_0_0_3_7,59 Срок рассрочки 3 мес.'
'installment_0_0_4_8,42 Срок рассрочки 4 мес.'
'installment_0_0_6_10,84 Срок рассрочки 6 мес.'
},
{
'client_id': 222,
'value': 'installment_0_0_3_4,93 Срок рассрочки 3 мес.'
},
{
'client_id': 333,
'value': 'installment_0_0_4_5,64 Срок рассрочки 4 мес.'
'installment_0_0_6_6,05 Срок рассрочки 6 мес.'
},
{
'client_id': 444,
'value': 'installment_0_0_3_7,78 Срок рассрочки 3 мес.'
'installment_0_0_6_9,60 Срок рассрочки 6 мес.'
},
{
'client_id': 555,
'value': 'installment_0_0_4_8,57 Срок рассрочки 4 мес.'
'installment_0_0_6_8 Срок рассрочки 6 мес.'
}
]
# Создание DataFrame
df = pd.DataFrame(data)
processed_data = []
for index, row in df.iterrows():
client_id = row['client_id']
value = row['value']
# Извлечение сроков и ставок с помощью регулярного выражения
matches = re.findall(r'installment_0_0_(\d+)_([\d,\.]+)', value)
for match in matches:
term = f"Срок рассрочки {match[0]} мес."
rate_str = match[1].replace(',', '.')
rate_str = re.sub(r'\.$', '', rate_str)
rate = float(rate_str)
processed_data.append({
'client_id': client_id,
'rate': rate,
'term': term
})
# Создание нового DataFrame из обработанных данных
processed_df = pd.DataFrame(processed_data)
# Определение условий фильтрации
conditions = {
"Срок рассрочки 3 мес.": 5.93,
"Срок рассрочки 4 мес.": 6.64,
"Срок рассрочки 6 мес.": 7.05
}
filtered_df = processed_df[processed_df.apply(
lambda row: row['term'] in conditions and row['rate'] <= conditions[row['term']], axis=1)]
05 Jul, 09:50