Анализ данных (Data analysis)
Data science, наука о данных. @haarrp - админ РКН: clck.ru/3FmyAp
Show more📈 Analytical overview of Telegram channel Анализ данных (Data analysis)
Channel Анализ данных (Data analysis) (@data_analysis_ml) in the Russian language segment is an active participant. Currently, the community unites 50 208 subscribers, ranking 2 664 in the Technologies & Applications category and 12 543 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 50 208 subscribers.
According to the latest data from 16 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by 14 over the last 30 days and by 19 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 8.92%. Within the first 24 hours after publication, content typically collects 6.20% reactions from the total number of subscribers.
- Post reach: On average, each post receives 4 479 views. Within the first day, a publication typically gains 3 114 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 32.
- Thematic interests: Content is focused on key topics such as llm, контекст, openai, архитектура, deepseek.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Data science, наука о данных.
@haarrp - админ
РКН: clck.ru/3FmyAp”
Thanks to the high frequency of updates (latest data received on 17 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
df с данными о зарплатах сотрудников в компании:
import pandas as pd
data = {
'employee_id': range(1, 11),
'department': ['IT', 'IT', 'IT', 'HR', 'HR', 'Finance', 'Finance', 'Finance', 'Finance', 'Finance'],
'salary': [120000, 125000, None, 70000, None, 90000, None, 95000, None, 100000]
}
df = pd.DataFrame(data)
print(df)
Результат:
employee_id department salary
0 1 IT 120000.0
1 2 IT 125000.0
2 3 IT NaN
3 4 HR 70000.0
4 5 HR NaN
5 6 Finance 90000.0
6 7 Finance NaN
7 8 Finance 95000.0
8 9 Finance NaN
9 10 Finance 100000.0
👉 В задаче требуется:
> **Заполнить пропущенные зарплаты медианой по департаменту.
> Затем найти департамент с наибольшим средним уровнем зарплаты.**
Вы пишете такой код:
df['salary_filled'] = df.groupby('department')['salary'].transform(lambda x: x.fillna(x.median()))
top_department = df.groupby('department')['salary_filled'].mean().idxmax()
print(top_department)
❗️ Результат: "Finance"
Но через неделю выясняется, что HR утверждает:
> “Наш средний уровень зарплаты выше, чем в Finance!”
📝 Ваша задача:
1. Объяснить почему результат показывает Finance, хотя HR утверждает обратное?
2. Где ошибка в логике?
3. Как правильно посчитать среднюю зарплату, учитывая реальную ситуацию?
---
🎯 Подвох (ключевой момент):
Медиана по HR = 70000 (только одно известное значение).
Пропущенная зарплата в HR тоже заполняется 70000, т.е. обе записи будут 70000.
В Finance медиана = 95000 (из трёх известных: 90000, 95000, 100000).
Две пропущенные зарплаты в Finance тоже заполняются 95000.
✅ Но на самом деле в HR могли быть более высокие зарплаты, а мы по сути искусственно “усекли” распределение зарплат, заменив пропуски фиксированной медианой.
👉 Такая замена снижает дисперсию и искажает среднее, особенно если выборка мала.
---
💡 Правильный подход:
1. Вместо заполнения медианой, использовать **множественную имputation** (например, через `sklearn.impute.IterativeImputer`).
2. Либо **не заполнять NaN при вычислении среднего**, а использовать `mean(skipna=True)`, чтобы не “усекать” данные.
3. Либо **показать доверительный интервал** для среднего по каждой группе.
Пример альтернативного подхода:
```python
top_department = df.groupby('department')['salary'].mean().idxmax()
print(top_department)
```
✅ Таким образом NaN просто не участвуют в расчёте среднего, и мы не искажаем данные искусственным заполнением.
---
🔥 Усложнение (ещё один подвох):
А что если пропуски не случайны?
Например, все высокие зарплаты в HR отсутствуют, потому что сотрудники не раскрыли данные?
→ Тогда импутация медианой дополнительно “занижает” зарплаты HR, и классическая mean() даёт biased estimate.
В таком случае нужна модель пропусков (MAR, MCAR, MNAR) и специфические методы восстановления.
---
📝 Что проверяет задача:
✅ Понимание влияния методов заполнения пропусков
✅ Знание статистических эффектов усечения данных
✅ Умение интерпретировать результат с учётом bias
✅ Навык выбирать подходящий метод обработки пропусков в зависимости от их природы
pip install -U cocoindex
https://github.com/cocoindex-io/cocoindex
2. Настройте базу данных PostgreSQL с расширением pgvector.
3. Создайте файл quickstart.py и настройте пайплайн обработки данных.
4. Запустите пайплайн для обработки и индексации данных.
🟢 Github
@data_analysis_ml
git clone https://github.com/AsyncFuncAI/deepwiki-open.git
cd deepwiki-open
echo "GOOGLE_API_KEY=ваш_google_api_key" > .env
echo "OPENAI_API_KEY=ваш_openai_api_key" >> .env
docker-compose up
▪ GitHub
Available now! Telegram Research 2025 — the year's key insights 
