ГАЙД по python стеку для Data Science инженеров

a3c25fbe1bbe84d4bc28d61a170152c1.jpg

Data science — это область, которая занимается изучением и анализом больших объемов данных, чтобы находить в них полезные закономерности, делать прогнозы или принимать решения на основе фактов. В основе data science лежат методы и инструменты математики, статистики и программирования. Они позволяют извлекать ценную информацию из данных и применять её в различных областях — от бизнеса и медицины до наукоемких исследований.

Почему используют python?

1. Простота и удобство

2. Большое количество библиотек: В Python существует множество специализированных библиотек для работы с данными, таких как NumPy, Pandas, SciPy, Matplotlib, Seaborn, scikit-learn и др. Эти библиотеки предоставляют инструменты для анализа данных, визуализации и машинного обучения.

3. Широкие возможности: С помощью Python можно решить широкий спектр задач, начиная от обработки и очистки данных, статистического анализа и визуализации, заканчивая созданием сложных моделей машинного обучения и глубокого обучения.

4. Сообщество и экосистема: Python имеет огромное сообщество разработчиков, которые активно создают новые инструменты, библиотеки и пакеты для анализа данных. Это обеспечивает непрерывное развитие и поддержку соответствующих ресурсов для разработчиков и специалистов в области data science.

В данной статье рассмотрим python стек для работы в Data Science

NumPy

Одна из самых популярных библиотек для языка программирования Python, которая предоставляет мощные инструменты для работы с многомерными массивами и выполнения различных математических операций. Она является основной библиотекой для научных вычислений в Python и широко используется в областях, таких как анализ данных, машинное обучение, инженерные и научные расчёты.

Массивы в numpy можно хранить только в одном типе.

Это позволяет эффективно использовать память и выполнять операции с большой скоростью, так как для каждого элемента массива выделено фиксированное количество памяти.

Получение характеристик массива:

import numpy as np

row = np.array ([1, 2, 3])

matrix = np.array ([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])

print (f’Строка (1d) размерность: {row.ndim}')

print (f’Матрица (2d) размерность: {matrix.ndim}')

print (f’Строка (1d) форма: {row.shape}')

print (f’Матрица (2d) форма: {matrix.shape}')

В numpy можно проводить арифметические операции над массивами одинаковых размерностей:

def multi_numpy (array_1: np.ndarray, array_2: np.ndarray):

print (array_1 * array_2)

multi_numpy (np.array ([1, 2, 3]), np.array ([2, 2, 2]))

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

array_with_7 = np.full ((3, 3), 7)

print (f’Генерация массива со значением 7 (3×3):\n {array_with_7}')

array_like_matrix = np.full_like (matrix, 7)

print (f’енерация массива со значением 7 (генерируем на подобие другого массива (2×5)):\n {array_like_matrix}')

rand_array = np.random.randint (1, 25, (3,5))

print (f’Генерация массива с заполнением значением в диапазоне (1 — 25), длинна — 15 (3 row, 5 column):\n {rand_array}')

Возвращаемый тип после фильтрации или слайсинга — представление, а не копия.

Меняя значение в представлении массива, меняется значение и в исходнодном массиве, поэтому следует копировать массив через команду copy:

original = np.array ([0, 1, 2])

copy = original

copy[1] = -7

print (f’Исходный массив после изменения: {original} = копируемый массив = {copy}')

copy_right = np.copy (original)

copy_right[1] = -7

print (f’Исходный массив после изменения: {original} != копируемый массив = {copy_right}')

SciPy

Это библиотека для языка программирования Python, которая предоставляет удобные инструменты для выполнения научных и инженерных расчётов. Она содержит множество функций для работы с линейной алгеброй, оптимизацией, обработкой сигналов, обработкой изображений, статистикой и многим другим.

Популярные подмодули: special, stats

Special предоставляет функции для работы с специальными функциями, такими как функции Бесселя, функции Эйри, функции Эрмита и многие другие. Эти функции используются в различных областях науки и инженерии, включая физику, астрономию, статистику и теорию вероятностей:

from scipy import special

#Вычисление факториала 7

print (special.factorial (7))

#Вычисление сочетания

print (special.comb (10,2))

#Вычисление перестановок

print (special.perm (10,2))

Stats предоставляет широкий спектр статистических функций, распределений вероятностей, генераторов случайных чисел и статистических тестов.

Можно использовать биноминальное распределение, то есть некоторое кол-во проб, результат каждой успешен либо нет.

Пример: биноминальное распределение, которая состоит из 100 испытаний и успех 33%:

from scipy import stats

binom = stats.binom (100,0.33)

#Вероятность выборки что меньше 7

binom.cdf (7)

# Получение 17 случайных выборок

binom.rvr (17)

Можно использовать распределение Пауссона, то есть моделирование вероятности определенного числа отдельных событий за некоторый временной промежуток.

Пример: распределение Пауссона со средним значением 4, размерность 10000 элементов:

from scipy import stats

poisson = stats.poisson (mu = 4)

poisson = poisson.rvs (size = 10000)

Самый популярное подмодуле scipy.stats — непрерывное распределение. Параметры, которые могут использоваться — местоположение (loc) и масштаб (scale). По умолчанию, используется масштаб 1.0 и расположение 0.

К непрерывным распределениям относят нормальное распределение, экспоненциально изменяющееся непрерывное распределение, равномерное и другие.

Нормальное распределение:

from scipy import stats

normal = stats.norm ()

normal = normal.rvs (size = 20000)

Экспоненциально изменяющееся непрерывное распределение:

from scipy import stats

expon = stats.expon ()

expon = expon.rvs (size = 20000)

Равномерное распределение:

from scipy import stats

uniform = stats.uniform ()

uniform = uniform.rvs (size = 20000)

Pandas

Используется для обработки и анализа данных. Предоставляет удобные структуры данных и инструменты для работы с таблицами, временными рядами и другими типами данных.Основан pandas на NumPy и Matplotlib.

Структуры хранения данных в pandas делятся на два типа: Series (одномерный массив) и DataFrame (многомерный массив):

import pandas as pd

sql = pd.Series (['MS SQL', 'PostgreSQL', 'Oracle', 'MySQL'], name = 'sql vendor')

product = pd.DataFrame ({'PL':['C#', 'Java', 'Go'],'Popular Product':['Stack Overflow', 'Jira', 'Docker']})

Pandas позволяет импортировать данные из различных источников (json, csv, xml, sql, excel):

csv = pd.read_csv ('GOOG.csv', parse_dates=['Date'], index_col='Date', delimiter=',')

print (csv)

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

print (csv[['High','Low']])

Иногда случается, что данные сохраняются частично. Для такого случая в pandas есть функция fillna, которая позволяет заменять пустоту на конкретное значение. Можно использовать для нескольких полей:

test = pd.read_csv ('test.csv', delimiter=',')

test = test.fillna ({'quantity': 0})

print (test)

Pandas позволяет агрегировать данные. Неполный список агрегатных функций:

1. среднее значение.

2. сумму значений.

3. количество не пропущенных значений.

4. медиану значений.

5. экстремумы (мин/макс значения).

6. стандартное отклонение.

7. дисперсию

Объединение таблиц в pandas происходит по принципу SQL. Имеются виды объединения: inner, left, right, outer (full join). Для выбора объединения используется параметр how:

table1 = pd.DataFrame ({«PL»:[«C#», «Java», «Python»], «Year»:[2000, 1995, 1991]})

table2 = pd.DataFrame ({«PL»:[«C#», «Java», «Go»], «Company»:['Microsoft', 'Oracle', 'Google']})

inner = pd.merge (table1, table2, on=«PL»)

print (inner,»\n»)

left = pd.merge (table1, table2, on=«PL», how=«left»)

print (left,»\n»)

outer = pd.merge (table1, table2, on=«PL», how=«outer»)

print (outer,»\n»)

В pandas существует два метода сортировки данных:

  • sort_index

  • sort_values

Для использования сортировки по значению основной параметр — по каким полям сортируем (by). Дополнительно можно использовать параметр ascending, позволяющий как сортируем.

Для группировки значений используется метод groupby. Основной параметр — by. Означает, как и в фильтрации, по каким полям группируем.

Дополнительно для группировки можно использовать для агрегации:

  • resample — метод группировки временных рядов. Для того, чтобы использовать индекс должен быть — datetime. В скобках указывается интервал.

  • pivot_table — метод для создания свободных таблиц. Возможность применения нескольких агрегаций.

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

table[table[«column1»] > 10]

Для сложной фильтрации используется & — если И, | — если ИЛИ.Для каждого логического блока использовать надо скобки, чтобы pandas понимал, что сравниваются разные типы:

table[(table[«column1»] > 10) & (table[«column12] == «Text»)]

Для аналога в sql NULL используется у поля метод isna ().

Если необходимо вывести определенные колонки, то после квадратных скобок, где была фильтрация, идет перечисление колонок, которые нужно вывести.

Вывод определенного количества строк в pandas служит два метода.

Matplotlib

Библиотека для создания графиков и визуализации данных в языке программирования Python.Может быть использована для визуализации данных в научных и инженерных приложениях, в анализе данных, статистике, машинном обучении и визуализации результатов

Популярные методы:

  • plot — построение линейного графика

  • pie — построение круговой диаграммы

  • scatter — построение диаграммы рассеяния

  • bar — построение столбчатую диаграмму

  • title — добавление заголовка графику

  • xlabel/ylabel — добавление меток на ось x/y

  • axis — установление пределов осей и получение текущих пределов

  • show — демонстрирование графика

Построение простого графика:

import matplotlib.pyplot as plt

import numpy as np

x = np.linspace (0, 10, 100)

y = np.sin (x)

plt.plot (x, y)

plt.xlabel ('Время')

plt.ylabel ('Значение')

plt.title ('Пример графика синуса')

plt.show ()

Построение диаграммы:

import matplotlib.pyplot as plt

labels = ['Яблоки', 'Апельсины', 'Персики', 'Бананы']

sizes = [25, 30, 20, 25]

plt.pie (sizes, labels=labels, autopct='%1.1f%%')

plt.axis ('equal')

plt.title ('Процентное соотношение фруктов')

plt.show ()

Построение 3d фигуры:

import matplotlib.pyplot as plt

import numpy as np

from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure ()

ax = fig.add_subplot (111, projection='3d')

x = np.random.standard_normal (100)

y = np.random.standard_normal (100)

z = np.random.standard_normal (100)

ax.scatter (x, y, z)

plt.show ()

Вывод

Подводя итоги к данной статье, были выделены и рассмотрены незаменимые инструменты для data science инженера, которые могут помочь извлекать информацию из данных, чтобы принимать обоснованные решения, предсказывать тренды, оптимизировать процессы и достигать бизнес-целей. Эти инструменты:

  • Библиотеки NumPy и SciPy, которые позволяют решать сложные математические задачи.

  • Библиотека для визуализации данных — matplotlib

  • Многофункциональный инструмент для обработки и анализа данных — Pandas.

Для изучения данной темы рекомендуем прочитать книгу Кеннеди Бермана «Основы Python для data science».

© Habrahabr.ru