Всем привет! Я - практикующий исследователь данных, и на этом канале делюсь тем, что реально работает в IT. Никакой сухой теории, только личный опыт, рабочие инструменты и грабли, на которые я уже наступил за вас. Рад, что вы здесь!🧸
Многие думают что для аналитики нужно знать весь Python (тут конечно вопрос открытый, я работал и с дата аналитиками и продуктовыми, были те которые много лет в аналитике и не знают Python, компенсируя хорошим знанием DAX, Power Query и прочего, всё зависит от требований определенных позиций, так что это не панацея). Это не так. За почти 4 года работы я понял, что достаточно знать базовые вещи и несколько библиотек. Остальное учится по мере необходимости.
**да, уже были комментарии зачем мне Python и так далее, я спорить не собираюсь, я просто 50% времени работаю именно с его инструментами, и это выбор каждого, но последние 10 собеседований не обходятся без требованием об уверенном знании Python и определенных библиотек.
Вот минимум Python, который реально нужен аналитику данных. Разбил по важности и добавил примеры из работы.
**в коде пайтон обращайте (без этого код работать не будет) внимание на отступы, не знаю по какой причине, когда я в дзене пишу код с отступами, они отображаются нормально, но после публикации всё в один ряд. Но это самое главное запомнить а интерпретаторы обычно сами автоматом добавляют нужные отступы.
Базовый Python (обязательно)
Это основа. Без этого не обойтись. Но не нужно углубляться в продвинутые темы - для аналитики достаточно базового уровня.
Переменные и типы данных
Числа (int, float):
price = 1000 # целое число
discount = 0.15 # дробное число
total = price * (1 - discount) # вычисления
Использую для расчетов, метрик, агрегаций.
Строки (str):
product_name = "Ноутбук"
description = 'Мощный ноутбук для работы'
full_name = f"{product_name} - {description}" # f-строки удобны
Обрабатываю названия, описания, текстовые данные.
Списки (list):
categories = ['Electronics', 'Books', 'Clothing']
prices = [1000, 500, 200]
Храню коллекции данных. Использую постоянно.
Словари (dict):
product = {
'name': 'Ноутбук',
'price': 1000,
'category': 'Electronics'
}
Структурированные данные. Удобно для работы с JSON, конфигурациями.
Булевы значения (True, False):
is_active = True
has_discount = False
Для условий, флагов, проверок.
Операции
Арифметические операции:
sum = 100 + 200
difference = 500 - 100
product = 10 * 20
quotient = 100 / 5
remainder = 10 % 3 # остаток от деления
power = 2 ** 3 # степень
Базовые вычисления. Использую постоянно.
Сравнение:
price > 1000
quantity == 10
discount != 0
Для фильтрации, условий.
Логические операторы:
if price > 1000 and category == 'Electronics':
apply_discount()
if price < 100 or quantity > 100:
mark_as_special()
Комбинирую условия. AND, OR, NOT - основа логики.
Условия и циклы
if, elif, else:
if price > 1000:
category = 'Expensive'
elif price > 500:
category = 'Medium'
else:
category = 'Cheap'
Условная логика. Использую для классификации, обработки данных.
for:
for product in products:
print(product['name'])
for i in range(10):
print(i)
Итерация по данным. Обработка списков, словарей.
while:
count = 0
while count < 10:
print(count)
count += 1
Использую реже, в основном для циклов с условием.
break, continue:
for product in products:
if product['price'] < 0:
continue # пропускаем
if product['price'] > 10000:
break # останавливаем
process(product)
Управление циклом. Пропуск итераций, выход из цикла.
Функции
Определение функций (def):
def calculate_total(price, quantity):
return price * quantity
total = calculate_total(1000, 2)
Переиспользование кода. Делаю код чище и понятнее.
Параметры и аргументы:
def process_data(data, filter_active=True, limit=100):
if filter_active:
data = [d for d in data if d['active']]
return data[:limit]
Гибкие функции. Параметры по умолчанию упрощают использование.
return:
def get_average_price(products):
if not products:
return 0 # обработка пустого списка
total = sum(p['price'] for p in products)
return total / len(products)
Возврат результата. Всегда возвращаю что-то осмысленное.
Работа со списками и словарями
Индексация и срезы:
products = ['A', 'B', 'C', 'D']
first = products[0] # первый элемент
last = products[-1] # последний элемент
slice = products[1:3] # элементы с 1 по 2
Доступ к элементам. Срезы удобны для выборки данных.
Методы списков:
products.append('E') # добавить в конец
products.extend(['F', 'G']) # добавить несколько
products.remove('A') # удалить элемент
count = products.count('B') # подсчитать
Модификация списков. Использую постоянно.
Методы словарей:
product = {'name': 'Ноутбук', 'price': 1000}
name = product.get('name', 'Unknown') # безопасный доступ
keys = product.keys() # все ключи
values = product.values() # все значения
items = product.items() # пары ключ-значение
Работа со словарями. get() безопаснее чем прямое обращение.
Библиотеки для аналитики (обязательно)
Это главное. Без библиотек Python для аналитики бесполезен.
Pandas
Самая важная библиотека. 70% работы аналитика в Python это Pandas.
Чтение данных:
import pandas as pd
# CSV файлы
df = pd.read_csv('sales.csv')
# Excel файлы
df = pd.read_excel('sales.xlsx', sheet_name='Sheet1')
# Из базы данных
df = pd.read_sql('SELECT * FROM sales', connection)
Читаю данные из разных источников. Это первое что делаю в любом проекте.
Просмотр данных:
df.head() # первые 5 строк
df.tail() # последние 5 строк
df.info() # информация о данных
df.describe() # статистика
df.shape # размер (строки, колонки)
Изучаю данные перед анализом. Всегда начинаю с этого.
Фильтрация:
# По условию
expensive = df[df['price'] > 1000]
# Несколько условий
filtered = df[(df['price'] > 1000) & (df['category'] == 'Electronics')]
# По индексу
first_10 = df.iloc[0:10]
# По метке
specific = df.loc[df['id'] == 123]
Фильтрую данные постоянно. loc и iloc - основные инструменты.
Группировка:
# Простая группировка
by_category = df.groupby('category')['price'].sum()
# Несколько колонок
by_category_date = df.groupby(['category', 'date'])['price'].sum()
# Несколько функций
summary = df.groupby('category').agg({
'price': ['sum', 'mean', 'count'],
'quantity': 'sum'
})
Группировка это основа агрегации. Использую каждый день.
Агрегация:
df['price'].sum() # сумма
df['price'].mean() # среднее
df['price'].count() # количество
df['price'].min() # минимум
df['price'].max() # максимум
Базовые метрики. Всегда нужны.
Объединение таблиц:
# Merge (как JOIN в SQL)
merged = pd.merge(sales, products, on='product_id', how='left')
# Concat (объединение по вертикали или горизонтали)
combined = pd.concat([df1, df2], axis=0) # вертикально
combined = pd.concat([df1, df2], axis=1) # горизонтально
Объединяю данные из разных источников. merge это JOIN, concat это UNION.
Работа с датами:
df['date'] = pd.to_datetime(df['date'])
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['day'] = df['date'].dt.day
Преобразую даты, извлекаю части. Важно для временных рядов.
Обработка пропусков:
# Проверка
df.isna().sum() # количество пропусков по колонкам
# Заполнение
df['price'].fillna(0, inplace=True)
df['category'].fillna('Unknown', inplace=True)
# Удаление
df.dropna(inplace=True) # удалить строки с пропусками
df.dropna(subset=['price'], inplace=True) # удалить только где price пропущен
Пропуски это постоянная проблема. Всегда проверяю и обрабатываю.
NumPy
Для численных операций. Pandas использует NumPy внутри.
Создание массивов:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
zeros = np.zeros(10)
ones = np.ones(5)
range_arr = np.arange(0, 10, 2)
Базовые массивы. Использую реже чем Pandas, но иногда нужно.
Базовые операции:
arr.sum() # сумма
arr.mean() # среднее
arr.std() # стандартное отклонение
arr.max() # максимум
arr.min() # минимум
Статистика. Аналогично Pandas, но для массивов.
Математические функции:
np.sqrt(arr) # квадратный корень
np.log(arr) # логарифм
np.exp(arr) # экспонента
np.abs(arr) # модуль
Математические операции. Использую для преобразований данных.
Matplotlib / Seaborn
Для визуализации. Графики важны для презентации результатов.
Базовые графики:
import matplotlib.pyplot as plt
# Линейный график
df.plot(x='date', y='sales', kind='line')
plt.show()
# Столбчатый график
df.plot(x='category', y='sales', kind='bar')
plt.show()
# Гистограмма
df['price'].hist(bins=20)
plt.show()
Простые графики. Использую для быстрого анализа.
Настройка графиков:
plt.figure(figsize=(10, 6))
plt.plot(df['date'], df['sales'])
plt.title('Продажи по дням')
plt.xlabel('Дата')
plt.ylabel('Продажи')
plt.grid(True)
plt.show()
Настраиваю внешний вид. Важно для презентаций.
Seaborn для статистических графиков:
import seaborn as sns
sns.boxplot(data=df, x='category', y='price')
sns.scatterplot(data=df, x='price', y='quantity')
sns.heatmap(df.corr(), annot=True)
Более красивые графики. Использую для анализа и презентаций.
Что полезно знать (но не обязательно сразу)
Это то что пригодится, но можно изучить позже.
Jupyter Notebook
Интерактивная среда. Удобно для исследования данных.
Создание и запуск ячеек:
- Создаю ячейки с кодом
- Запускаю по одной или все сразу
- Вижу результат сразу
Markdown в ячейках:
- Документирую процесс
- Объясняю что делаю
- Создаю отчеты
Экспорт результатов:
- Сохраняю как HTML
- Экспортирую в PDF
- Делись с командой
Использую для всех аналитических проектов. Удобнее чем скрипты.
Работа с файлами
Открытие и чтение:
with open('data.txt', 'r', encoding='utf-8') as f:
content = f.read()
Чтение текстовых файлов. Использую для конфигов, логов.
Запись в файлы:
with open('result.txt', 'w', encoding='utf-8') as f:
f.write('Результат анализа')
Сохранение результатов. Логи, отчеты, данные.
Работа с путями:
import os
path = os.path.join('data', 'sales.csv')
exists = os.path.exists(path)
Кросс-платформенные пути. Важно для переносимости кода.
Обработка ошибок
try, except:
try:
result = df['price'].mean()
except KeyError:
print('Колонка price не найдена')
except Exception as e:
print(f'Ошибка: {e}')
Обработка ошибок. Делаю код устойчивее.
Понимание основных типов ошибок:
- KeyError - ключ не найден
- ValueError - неверное значение
- TypeError - неверный тип
- IndexError - индекс вне диапазона
Знаю основные ошибки. Помогает быстро находить проблемы.
Что не нужно знать (пока)
Это то что изучать не обязательно. Оставьте на потом.
- Объектно-ориентированное программирование (классы) - для аналитики не нужно. Функции достаточно.
- Декораторы - продвинутая тема. Не нужна для базовой аналитики.
- Генераторы - оптимизация памяти. Для небольших данных не критично.
- Асинхронное программирование - для веб-разработки. Аналитику не нужно.
- Сложные структуры данных - для алгоритмов. Аналитику достаточно списков и словарей.
С чего начать
- Изучите базовый Python. Хватит первых 3-4 глав любого учебника. Не углубляйтесь, достаточно основ.
- Сразу переходите к Pandas. Это главный инструмент аналитика. Базовый Python это только основа для Pandas.
- Практикуйтесь на реальных данных. Найдите датасет на Kaggle и попробуйте его обработать. Теория без практики бесполезна.
- Учите по мере необходимости. Не пытайтесь выучить все сразу. Изучайте то что нужно для текущей задачи.
Типичные задачи аналитика
Чтение и очистка данных:
import pandas as pd
# Чтение
df = pd.read_csv('data.csv')
# Просмотр
print(df.head())
print(df.info())
# Очистка
df = df.dropna() # удалить пропуски
df = df[df['price'] > 0] # фильтрация
df = df.drop_duplicates() # удалить дубликаты
Это базовая задача. Делаю в каждом проекте.
Агрегация:
# По категории
by_category = df.groupby('category')['sales'].sum()
# По дате
by_date = df.groupby('date')['revenue'].mean()
# Сложная агрегация
summary = df.groupby('category').agg({
'sales': 'sum',
'revenue': 'mean',
'quantity': 'count'
})
Агрегация это основа анализа. Использую постоянно.
Визуализация:
import matplotlib.pyplot as plt
# Простой график
df.plot(x='date', y='sales', kind='line')
plt.title('Продажи по дням')
plt.show()
# Несколько графиков
fig, axes = plt.subplots(2, 1, figsize=(10, 8))
df.plot(x='date', y='sales', ax=axes[0])
df.plot(x='date', y='revenue', ax=axes[1])
plt.show()
Визуализация для понимания данных и презентации результатов.
Этого достаточно для начала. Остальное учите когда понадобится.
Практические советы
- Фокусируйтесь на Pandas. Это 70% работы аналитика на Python. Остальное второстепенно.
- Используйте Jupyter Notebook. Удобнее чем скрипты для анализа.
- Практикуйтесь постоянно. Теория без практики забывается.
- Изучайте по задачам. Не пытайтесь выучить все сразу.
- Используйте документацию. Официальная документация Pandas очень хорошая.
Что делать дальше
Если вы только начинаете, сфокусируйтесь на Pandas. Это главный инструмент аналитика в Python.
Для изучения рекомендую:
- Официальную документацию Pandas - лучший источник информации
- Практику на Kaggle - реальные данные, реальные задачи
- Собственные проекты - применяйте знания на практике
Помните: Python это инструмент. Важнее понимать данные и задачи, чем знать все функции наизусть. Начинайте с простого, усложняйте постепенно.
Я не претендую на последнюю инстанцию, я пишу о своём пути и опыте. Спасибо что дочитали до конца. Подпишитесь👇👇👇, ставьте лайки 👍🏽👍🏽👍🏽 впереди много интересных статей про навыки, инструменты, обучение, лайфхаки и пути аналитика.