Numpy для начинающих: как освоить основы анализа данных на Python?

Что такое NumPy и зачем он нужен для анализа данных?

NumPy (Numerical Python) — это фундаментальная библиотека для научных вычислений на Python. Она предоставляет мощные инструменты для работы с многомерными массивами и матрицами, а также оптимизированные математические функции. В контексте анализа данных, NumPy играет ключевую роль, поскольку обеспечивает эффективное хранение и обработку числовых данных, что критически важно для скорости и производительности алгоритмов.

В отличие от стандартных списков Python, массивы NumPy хранят данные одного типа, что позволяет значительно ускорить вычисления. Это особенно важно при работе с большими объемами данных, характерными для анализа данных, интернет-маркетинга и других областей.

Установка и настройка NumPy: пошаговая инструкция

Установить NumPy можно с помощью pip:

pip install numpy

Убедитесь, что у вас установлена последняя версия pip:

pip install --upgrade pip

После установки, можно проверить корректность установки, импортировав библиотеку в Python.

Импорт NumPy в ваши Python-скрипты: соглашения об именах

Стандартным соглашением является импорт NumPy с использованием псевдонима np:

import numpy as np

Это позволяет удобно обращаться к функциям NumPy через префикс np., например, np.array().

Основы работы с массивами NumPy

Создание массивов NumPy: от простых до сложных

Массивы NumPy можно создавать разными способами:

  • Из списков Python:

    import numpy as np
    
    list_data: list[int] = [1, 2, 3, 4, 5]
    numpy_array: np.ndarray = np.array(list_data)
    print(numpy_array)
    
  • С помощью функций zeros(), ones(), empty():

    import numpy as np
    
    zeros_array: np.ndarray = np.zeros((2, 3))
    ones_array: np.ndarray = np.ones((3, 2))
    empty_array: np.ndarray = np.empty((2, 2))
    print(zeros_array)
    print(ones_array)
    print(empty_array)
    
  • С помощью функции arange() и linspace():

    import numpy as np
    
    arange_array: np.ndarray = np.arange(0, 10, 2) # от 0 до 10 (не включая) с шагом 2
    linspace_array: np.ndarray = np.linspace(0, 1, 5) # 5 чисел между 0 и 1 (включительно)
    print(arange_array)
    print(linspace_array)
    

Типы данных в NumPy: int, float, object и другие

NumPy поддерживает различные типы данных, такие как int, float, complex, bool, object и другие. При создании массива, NumPy автоматически определяет наиболее подходящий тип данных, но его также можно указать явно:

import numpy as np

int_array: np.ndarray = np.array([1, 2, 3], dtype=np.int32)
float_array: np.ndarray = np.array([1, 2, 3], dtype=np.float64)
print(int_array.dtype)
print(float_array.dtype)

Индексация и срезы массивов: доступ к элементам и подмножествам

Доступ к элементам массива NumPy осуществляется с помощью индексации, аналогично спискам Python. Для многомерных массивов указываются индексы по каждой размерности:

import numpy as np

array: np.ndarray = np.array([[1, 2, 3], [4, 5, 6]])
print(array[0, 1]) # Элемент в первой строке и втором столбце (индексация с 0)
print(array[1, :]) # Вторая строка
print(array[:, 2]) # Третий столбец

Срезы позволяют извлекать подмножества массивов:

import numpy as np

array: np.ndarray = np.arange(10)
print(array[2:5]) # Элементы с индексами 2, 3, 4
print(array[:7:2]) # Элементы с начала до индекса 7 с шагом 2

Изменение формы массивов: reshape, flatten, transpose

Форму массива можно изменить с помощью метода reshape():

import numpy as np

array: np.ndarray = np.arange(12)
reshaped_array: np.ndarray = array.reshape(3, 4) # Преобразование в массив 3x4
print(reshaped_array)

Метод flatten() преобразует многомерный массив в одномерный:

import numpy as np

array: np.ndarray = np.array([[1, 2], [3, 4]])
flattened_array: np.ndarray = array.flatten()
print(flattened_array)

Метод transpose() транспонирует массив (меняет строки и столбцы местами):

import numpy as np

array: np.ndarray = np.array([[1, 2], [3, 4]])
transposed_array: np.ndarray = array.T
print(transposed_array)

Основные операции и функции NumPy для анализа данных

Векторные операции: сложение, вычитание, умножение и деление массивов

NumPy поддерживает поэлементные векторные операции:

import numpy as np

array1: np.ndarray = np.array([1, 2, 3])
array2: np.ndarray = np.array([4, 5, 6])

sum_array: np.ndarray = array1 + array2
diff_array: np.ndarray = array2 - array1
prod_array: np.ndarray = array1 * array2
div_array: np.ndarray = array2 / array1

print(sum_array)
print(diff_array)
print(prod_array)
print(div_array)

Математические функции: sin, cos, exp, log и другие

NumPy предоставляет широкий набор математических функций:

Реклама
import numpy as np

array: np.ndarray = np.array([0, np.pi/2, np.pi])
sin_array: np.ndarray = np.sin(array)
cos_array: np.ndarray = np.cos(array)
exp_array: np.ndarray = np.exp(array)
log_array: np.ndarray = np.log(np.array([1, np.e, np.e**2]))

print(sin_array)
print(cos_array)
print(exp_array)
print(log_array)

Агрегирующие функции: sum, mean, median, std, max, min

Агрегирующие функции позволяют вычислять статистические характеристики массивов:

import numpy as np

array: np.ndarray = np.array([1, 2, 3, 4, 5])

sum_val: int = np.sum(array)
mean_val: float = np.mean(array)
median_val: float = np.median(array)
std_val: float = np.std(array)
max_val: int = np.max(array)
min_val: int = np.min(array)

print(sum_val)
print(mean_val)
print(median_val)
print(std_val)
print(max_val)
print(min_val)

Булевы массивы и условная фильтрация данных

Булевы массивы используются для фильтрации данных:

import numpy as np

array: np.ndarray = np.array([1, 2, 3, 4, 5])

bool_array: np.ndarray = array > 2
filtered_array: np.ndarray = array[bool_array]

print(bool_array)
print(filtered_array)

Практические примеры анализа данных с использованием NumPy

Статистический анализ данных: расчет основных статистик

Предположим, у вас есть данные о количестве кликов по рекламному баннеру за неделю:

import numpy as np

clicks: np.ndarray = np.array([150, 200, 180, 220, 250, 230, 210])

mean_clicks: float = np.mean(clicks)
median_clicks: float = np.median(clicks)
std_clicks: float = np.std(clicks)

print(f'Среднее количество кликов: {mean_clicks}')
print(f'Медианное количество кликов: {median_clicks}')
print(f'Стандартное отклонение: {std_clicks}')

Фильтрация и очистка данных с помощью NumPy

Предположим, у вас есть данные о CTR (click-through rate) рекламных кампаний, и вам нужно отфильтровать кампании с CTR выше среднего:

import numpy as np

ctr: np.ndarray = np.array([0.02, 0.01, 0.03, 0.015, 0.025, 0.04, 0.012])

mean_ctr: float = np.mean(ctr)

high_ctr_campaigns: np.ndarray = ctr[ctr > mean_ctr]

print(f'Средний CTR: {mean_ctr}')
print(f'CTR кампаний выше среднего: {high_ctr_campaigns}')

Работа с многомерными данными: примеры из реальных задач

Предположим, у вас есть данные о продажах товаров в разных регионах за разные месяцы (многомерный массив). Вы можете использовать NumPy для анализа динамики продаж.

import numpy as np

sales_data: np.ndarray = np.array([
    [100, 120, 130],  # Регион 1: Январь, Февраль, Март
    [150, 160, 170],  # Регион 2: Январь, Февраль, Март
    [200, 210, 220]   # Регион 3: Январь, Февраль, Март
])

total_sales_per_region: np.ndarray = np.sum(sales_data, axis=1) # Сумма продаж по регионам
mean_sales_per_month: np.ndarray = np.mean(sales_data, axis=0) # Средние продажи по месяцам

print(f'Суммарные продажи по регионам: {total_sales_per_region}')
print(f'Средние продажи по месяцам: {mean_sales_per_month}')

NumPy и другие библиотеки анализа данных: Pandas, Matplotlib, Seaborn

Интеграция NumPy с Pandas: преобразование данных и использование Series и DataFrame

Pandas использует NumPy в качестве основы для работы с данными. DataFrame и Series Pandas можно создавать из массивов NumPy и наоборот:

import numpy as np
import pandas as pd

np_array: np.ndarray = np.array([1, 2, 3, 4, 5])

pd_series: pd.Series = pd.Series(np_array)
pd_dataframe: pd.DataFrame = pd.DataFrame({'col1': np_array, 'col2': np_array * 2})

print(pd_series)
print(pd_dataframe)

Визуализация данных с помощью Matplotlib и Seaborn: графики на основе массивов NumPy

Matplotlib и Seaborn используют массивы NumPy для построения графиков. Например, можно построить график зависимости кликов от дня недели:

import numpy as np
import matplotlib.pyplot as plt

days: np.ndarray = np.arange(7)
clicks: np.ndarray = np.array([150, 200, 180, 220, 250, 230, 210])

plt.plot(days, clicks)
plt.xlabel('День недели')
plt.ylabel('Количество кликов')
plt.title('Динамика кликов по дням недели')
plt.show()

Примеры совместного использования NumPy, Pandas, Matplotlib и Seaborn в задачах анализа данных

Комплексный пример: анализ данных о рекламных кампаниях с использованием всех библиотек.

  1. Генерируем синтетические данные.
  2. Создаем DataFrame.
  3. Вычисляем статистики.
  4. Визуализируем результаты.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Генерация данных
num_campaigns: int = 100
campaign_names: list[str] = [f'Campaign_{i}' for i in range(num_campaigns)]
clicks: np.ndarray = np.random.randint(50, 500, num_campaigns)
impressions: np.ndarray = np.random.randint(1000, 10000, num_campaigns)
ctr: np.ndarray = clicks / impressions

# Создание DataFrame
data: dict[str, np.ndarray | list[str]] = {'Campaign': campaign_names, 'Clicks': clicks, 'Impressions': impressions, 'CTR': ctr}
df: pd.DataFrame = pd.DataFrame(data)

# Вычисление статистик
mean_ctr: float = df['CTR'].mean()
median_clicks: float = df['Clicks'].median()

print(f'Средний CTR: {mean_ctr}')
print(f'Медианное количество кликов: {median_clicks}')

# Визуализация
sns.histplot(df['CTR'], kde=True)
plt.xlabel('CTR')
plt.ylabel('Количество кампаний')
plt.title('Распределение CTR рекламных кампаний')
plt.show()

Этот пример демонстрирует, как NumPy, Pandas, Matplotlib и Seaborn могут быть использованы совместно для анализа данных в контексте интернет-маркетинга.


Добавить комментарий