Введение в Data Science
Python — доминирующий язык в Data Science благодаря богатой экосистеме библиотек. Три основных инструмента:
NumPy: основы
▸Создание массивов
1import numpy as np23# Из списка4arr = np.array([1, 2, 3, 4, 5])56# Генерация7zeros = np.zeros((3, 4)) # 3x4 нулей8ones = np.ones((2, 3)) # 2x3 единиц9range_arr = np.arange(0, 10, 2) # [0, 2, 4, 6, 8]10linspace = np.linspace(0, 1, 5) # 5 равномерных значений1112# Случайные числа13random = np.random.rand(3, 3) # Uniform [0, 1)14normal = np.random.randn(1000) # Normal distribution
▸Операции с массивами
1a = np.array([1, 2, 3])2b = np.array([4, 5, 6])34# Поэлементные операции5c = a + b # [5, 7, 9]6c = a * b # [4, 10, 18]7c = a ** 2 # [1, 4, 9]89# Статистика10mean = np.mean(a) # Среднее11std = np.std(a) # Стандартное отклонение12median = np.median(a) # Медиана13min_val = np.min(a) # Минимум14max_val = np.max(a) # Максимум1516# Линейная алгебра17matrix = np.array([[1, 2], [3, 4]])18transpose = matrix.T19inverse = np.linalg.inv(matrix)20determinant = np.linalg.det(matrix)
▸Индексация и срезы
1arr = np.array([10, 20, 30, 40, 50])23# Базовая индексация4print(arr[0]) # 105print(arr[-1]) # 5067# Срезы8print(arr[1:4]) # [20, 30, 40]9print(arr[::2]) # [10, 30, 50]1011# Булевая индексация12mask = arr > 2513print(arr[mask]) # [30, 40, 50]1415# 2D индексация16matrix = np.array([[1, 2], [3, 4], [5, 6]])17print(matrix[0, 1]) # 218print(matrix[:, 0]) # [1, 3, 5]
pandas: работа с данными
▸DataFrame
1import pandas as pd23# Создание DataFrame4data = {5 'name': ['Alice', 'Bob', 'Charlie', 'Diana'],6 'age': [25, 30, 35, 28],7 'city': ['NYC', 'LA', 'NYC', 'Boston'],8 'salary': [50000, 60000, 70000, 55000]9}10df = pd.DataFrame(data)1112# Загрузка из файла13df = pd.read_csv('data.csv')14df = pd.read_excel('data.xlsx')15df = pd.read_json('data.json')
▸Основные операции
1# Информация о данных2print(df.head()) # Первые 5 строк3print(df.info()) # Типы данных4print(df.describe()) # Статистика56# Выбор данных7print(df['name']) # Один столбец8print(df[['name', 'age']]) # Несколько столбцов9print(df[df['age'] > 25]) # Фильтрация1011# Добавление столбца12df['salary_k'] = df['salary'] / 10001314# Группировка15grouped = df.groupby('city').agg({16 'salary': ['mean', 'max'],17 'age': 'mean'18})1920# Пропуски21df.isnull().sum() # Подсчёт пропусков22df.dropna() # Удаление строк с пропусками23df.fillna(0) # Заполнение пропусков
▸Объединение данных
1# merge (аналог SQL JOIN)2result = pd.merge(df1, df2, on='id', how='left')34# concat (склейка)5result = pd.concat([df1, df2], axis=0) # По строкам6result = pd.concat([df1, df2], axis=1) # По столбцам78# join (по индексам)9result = df1.join(df2, how='inner')
▸Временные ряды
1# Парсинг дат2df['date'] = pd.to_datetime(df['date'])34# Установка индекса5df.set_index('date', inplace=True)67# Ресемплирование8daily = df.resample('D').mean() # Среднее по дням9monthly = df.resample('M').sum() # Сумма по месяцам1011# Скользящее среднее12df['ma_7'] = df['value'].rolling(window=7).mean()
matplotlib: визуализация
▸Основные графики
1import matplotlib.pyplot as plt23# Линейный график4plt.figure(figsize=(10, 6))5plt.plot(x, y, label='Данные')6plt.xlabel('X')7plt.ylabel('Y')8plt.title('Линейный график')9plt.legend()10plt.savefig('plot.png')11plt.show()1213# Гистограмма14plt.hist(data, bins=30, alpha=0.7)15plt.xlabel('Значение')16plt.ylabel('Частота')17plt.title('Гистограмма')1819# Scatter plot20plt.scatter(x, y, c=colors, s=sizes, alpha=0.6)21plt.colorbar()
▸Subplots
1fig, axes = plt.subplots(2, 2, figsize=(12, 10))23axes[0, 0].plot(x, y1)4axes[0, 0].set_title('График 1')56axes[0, 1].scatter(x, y2)7axes[0, 1].set_title('График 2')89axes[1, 0].bar(categories, values)10axes[1, 0].set_title('График 3')1112axes[1, 1].pie(sizes, labels=labels)13axes[1, 1].set_title('График 4')1415plt.tight_layout()16plt.show()
▸Стилизация
1# Использование стилей2plt.style.use('seaborn-v0_8')34# Пользовательские цвета5colors = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4']67fig, ax = plt.subplots()8bars = ax.bar(categories, values, color=colors)9ax.bar_label(bars, fmt='%.1f')
Практический пример
1import pandas as pd2import matplotlib.pyplot as plt34# Загрузка данных5df = pd.read_csv('sales.csv')67# Анализ продаж по месяцам8monthly_sales = df.groupby('month')['revenue'].sum()910# Визуализация11fig, ax = plt.subplots(figsize=(12, 6))12monthly_sales.plot(kind='bar', ax=ax, color='steelblue')13ax.set_title('Продажи по месяцам')14ax.set_xlabel('Месяц')15ax.set_ylabel('Выручка')16plt.tight_layout()17plt.savefig('monthly_sales.png')
Заключение
pandas, numpy и matplotlib — основные инструменты Data Science в Python. Знание этих библиотек критически важно для работы с данными. На собеседовании спрашивают про типичные операции pandas, оптимизацию производительности numpy и выбор типа графика для визуализации.