Найти в Дзене

Что нужно знать о Python для аналитики: минимум для старта

Всем привет! Я - практикующий исследователь данных, и на этом канале делюсь тем, что реально работает в IT. Никакой сухой теории, только личный опыт, рабочие инструменты и грабли, на которые я уже наступил за вас. Рад, что вы здесь!🧸 Многие думают что для аналитики нужно знать весь Python (тут конечно вопрос открытый, я работал и с дата аналитиками и продуктовыми, были те которые много лет в аналитике и не знают Python, компенсируя хорошим знанием DAX, Power Query и прочего, всё зависит от требований определенных позиций, так что это не панацея). Это не так. За почти 4 года работы я понял, что достаточно знать базовые вещи и несколько библиотек. Остальное учится по мере необходимости. **да, уже были комментарии зачем мне Python и так далее, я спорить не собираюсь, я просто 50% времени работаю именно с его инструментами, и это выбор каждого, но последние 10 собеседований не обходятся без требованием об уверенном знании Python и определенных библиотек. Вот минимум Python, который реаль
Оглавление

Всем привет! Я - практикующий исследователь данных, и на этом канале делюсь тем, что реально работает в 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 - индекс вне диапазона

Знаю основные ошибки. Помогает быстро находить проблемы.

Что не нужно знать (пока)

Это то что изучать не обязательно. Оставьте на потом.

  • Объектно-ориентированное программирование (классы) - для аналитики не нужно. Функции достаточно.
  • Декораторы - продвинутая тема. Не нужна для базовой аналитики.
  • Генераторы - оптимизация памяти. Для небольших данных не критично.
  • Асинхронное программирование - для веб-разработки. Аналитику не нужно.
  • Сложные структуры данных - для алгоритмов. Аналитику достаточно списков и словарей.

С чего начать

  1. Изучите базовый Python. Хватит первых 3-4 глав любого учебника. Не углубляйтесь, достаточно основ.
  2. Сразу переходите к Pandas. Это главный инструмент аналитика. Базовый Python это только основа для Pandas.
  3. Практикуйтесь на реальных данных. Найдите датасет на Kaggle и попробуйте его обработать. Теория без практики бесполезна.
  4. Учите по мере необходимости. Не пытайтесь выучить все сразу. Изучайте то что нужно для текущей задачи.

Типичные задачи аналитика

Чтение и очистка данных:

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()

Визуализация для понимания данных и презентации результатов.

Этого достаточно для начала. Остальное учите когда понадобится.

Практические советы

  1. Фокусируйтесь на Pandas. Это 70% работы аналитика на Python. Остальное второстепенно.
  2. Используйте Jupyter Notebook. Удобнее чем скрипты для анализа.
  3. Практикуйтесь постоянно. Теория без практики забывается.
  4. Изучайте по задачам. Не пытайтесь выучить все сразу.
  5. Используйте документацию. Официальная документация Pandas очень хорошая.

Что делать дальше

Если вы только начинаете, сфокусируйтесь на Pandas. Это главный инструмент аналитика в Python.

Для изучения рекомендую:

  • Официальную документацию Pandas - лучший источник информации
  • Практику на Kaggle - реальные данные, реальные задачи
  • Собственные проекты - применяйте знания на практике

Помните: Python это инструмент. Важнее понимать данные и задачи, чем знать все функции наизусть. Начинайте с простого, усложняйте постепенно.

Я не претендую на последнюю инстанцию, я пишу о своём пути и опыте. Спасибо что дочитали до конца. Подпишитесь👇👇👇, ставьте лайки 👍🏽👍🏽👍🏽 впереди много интересных статей про навыки, инструменты, обучение, лайфхаки и пути аналитика.