Python — один из самых распространенных языков программирования в Data Science (третье место в опросе разработчиков StackOverflow). Популярность языка обусловлена наличием множества пакетов, которые можно использовать для решения различных задач в области науки о данных, включая машинное обучение, предварительную обработку данных, анализ данных и их визуализацию.

Новичку в этой области может быть сложно понять, с чего начать, особенно при таком обилии ресурсов — в Python имеется более 100 000 встроенных библиотек, и выучить их все просто невозможно. Именно поэтому в этой статье мы рассмотрим 8 самых полезных библиотек Python для Data Science.

Сбор данных

Сбор данных (Data Collection) — это первый шаг в жизненном цикле науки о данных. Многие компании при принятии важных решений опираются на внешние данные, полученные из социальных сетей, таких как X и LinkedIn. Это помогает понять, где находится спрос на рынке, чтобы затем работать над позиционированием бренда.

Внешние данные обычно собираются двумя способами:

  1.  С помощью API.

  2. С помощью веб-скрейпинга.

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

Именно здесь на помощь приходит веб-скрейпинг — процесс получения данных с веб-страниц с помощью программного обеспечения или скриптов. Благодаря этому можно собрать сотни тысяч единиц данных одновременно.

В Python есть множество встроенных библиотек, которые можно использовать для сбора информации в интернете. Мы остановимся на двух наиболее популярных вариантах:  BeautifulSoup и Selenium.

BeautifulSoup

Если вы только начинаете программировать на Python, вы можете начать знакомство с веб-скрейпингом с помощью BeautifulSoup — простой библиотеки, которая может быстро извлекать данные и элементы из HTML-страниц. Если вы пытаетесь скрейпить не очень сложный сайт, на котором нет множества механизмов защиты от ботов, то этой библиотеки вам будет достаточно для выполнения работы.

import requests
from bs4 import BeautifulSoup

# URL of the webpage to be scraped
url = 'https://example-blog.com'

# Send a GET request to the webpage
response = requests.get(url)

# Parse the content of the response with BeautifulSoup
soup = BeautifulSoup(response.content, 'html.parser')

# Find all article titles on the webpage
titles = soup.find_all('h2', class_='post-title')

# Print each article title
for title in titles:
    print(title.get_text())

Пример кода BeautifulSoup для получения заголовков статей из блога

Selenium

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

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

# Setup the Chrome driver
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

# Open the webpage
driver.get('https://www.example.com')

# Find the search box element (assuming there's a search box with the name 'q')
search_box = driver.find_element(By.NAME, 'q')

# Enter search term and hit Enter
search_box.send_keys('Python Data Science')
search_box.send_keys(Keys.RETURN)

# Wait for the results to load (implicit wait)
driver.implicitly_wait(10)

# Find the titles of the search results (assuming they are within <h2> tags)
titles = driver.find_elements(By.TAG_NAME, 'h2')

# Print the titles of the search results
for title in titles:
    print(title.text)

# Close the browser
driver.quit()

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

Программисты часто комбинируют эти две библиотеки. Selenium помогает в быстрой навигации, а BeautifulSoup — в извлечении необходимых данных.

Таким образом, научившись скрейпить простые сайты с помощью BeautifulSoup, вы можете приступить к изучению Selenium для работы с более сложными приложениями.

Предварительная обработка и анализ данных

Работа с данными (Data Preprocessing и Data Analysis) — дело непростое, поскольку массивы данных могут полны ошибок и лишнего шума. К счастью, существуют способы очистки наборов данных — например, самая популярная библиотека Python для предварительной обработки и анализа данных, pandas.

Pandas

По ряду причин, этот пакет широко используется специалистами по анализу данных.

  1. Pandas поддерживает множество форматов файлов. Вы можете легко считать данные из текстового файла, электронной таблицы Excel или файла .csv и загрузить их во фрейм данных pandas всего за несколько секунд.

  2. Он позволяет выполнять SQL-подобные операции, такие как слияние и объединение фреймов данных друг с другом. Вы также можете легко группировать и сортировать данные, что очень полезно при проведении исследовательского анализа.

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

import pandas as pd

# Create a sample DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [24, 27, 22, 32],
    'Salary': [50000, 54000, 58000, 60000]
}
df = pd.DataFrame(data)

# Display the DataFrame
print("Original DataFrame:")
print(df)

# Calculate the mean age
mean_age = df['Age'].mean()
print("\nMean Age:", mean_age)

# Filter rows where Salary is greater than 55000
high_salary_df = df[df['Salary'] > 55000]
print("\nEmployees with Salary greater than 55000:")
print(high_salary_df)

# Add a new column 'Years of Experience'
df['Years of Experience'] = [2, 5, 1, 7]
print("\nDataFrame with 'Years of Experience' column added:")
print(df)

# Group by 'Years of Experience' and calculate mean salary
mean_salary_by_experience = df.groupby('Years of Experience')['Salary'].mean()
print("\nMean Salary by Years of Experience:")
print(mean_salary_by_experience)

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

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

Визуализация данных

Визуализация данных (Data Visualization) играет важную роль в понимании данных, а также в том, чтобы рассказать с их помощью содержательную историю — жизненно важный навык в области Data Science. В Python существует множество библиотек, которые помогут вам создать красивые, интуитивно понятные визуальные эффекты. Мы выделим две из них благодаря стабильности и простоте использования: Matplotlib и Seaborn.

Matplotlib

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

Одно из преимуществ Matplotlib заключается в том, что графики очень хорошо настраиваются, поэтому визуализации будут соответствовать всем вашим потребностям.

import matplotlib.pyplot as plt

# Sample data
years = [2015, 2016, 2017, 2018, 2019, 2020]
values = [120, 150, 170, 160, 180, 200]

# Create a line plot
plt.plot(years, values, marker='o', linestyle='-', color='b', label='Value Growth')

# Add a title and labels
plt.title('Yearly Value Growth')
plt.xlabel('Year')
plt.ylabel('Value')

# Add a legend
plt.legend()

# Display the plot
plt.show()

Пример использования библиотеки Matplotlib для создания простого линейного графика

Seaborn

Seaborn — это высокоуровневый, простой в использовании пакет визуализации на языке Python, основанный на Matplotlib. Это отличный выбор для начинающих программистов. С помощью этой библиотеки вы можете создавать визуализации, используя всего одну строку кода.

Кроме того, Seaborn лучше интегрирован для работы с фреймами данных pandas, а создаваемые графики более привлекательны визуально.

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

# Sample data
data = {
    'total_bill': [16.99, 10.34, 21.01, 23.68, 24.59, 25.29, 8.77, 26.88, 15.04, 14.78],
    'tip': [1.01, 1.66, 3.50, 3.31, 3.61, 4.71, 2.00, 3.12, 3.48, 2.71],
    'sex': ['Female', 'Male', 'Male', 'Male', 'Female', 'Male', 'Male', 'Male', 'Male', 'Female']
}
df = pd.DataFrame(data)

# Create a scatter plot with regression line
sns.lmplot(x='total_bill', y='tip', hue='sex', data=df, aspect=1.5)

# Add title and labels
plt.title('Total Bill vs Tip by Sex')
plt.xlabel('Total Bill')
plt.ylabel('Tip')

# Display the plot
plt.show()

Пример использования библиотеки Seaborn для создания диаграммы рассеяния с линиями регрессии

Машинное обучение

Если вы хотите стать инженером в области машинного обучения (Machine Learning), то вам нужен Scikit-Learn. Он возглавляет список самых полезных библиотек Python с открытым исходным кодом.

Scikit-Learn

Scikit-Learn содержит более ста моделей, которые позволяют выполнять как контролируемое, так и неконтролируемое машинное обучение. В этой библиотеке также есть оценщики, позволяющие выполнять такие задачи, как кодирование данных и извлечение признаков, а также другие популярные функции.

  1. Алгоритмы машинного обучения. Scikit-Learn предлагает на выбор огромное количество алгоритмов, таких как линейная регрессия, деревья решений и SVM.

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

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

# Import necessary libraries
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt

# Create a sample dataset
data = {
    'Experience': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    'Salary': [15000, 18000, 20000, 24000, 30000, 35000, 40000, 46000, 50000, 60000]
}
df = pd.DataFrame(data)

# Split the dataset into features (X) and target (y)
X = df[['Experience']]
y = df['Salary']

# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Create and train the linear regression model
model = LinearRegression()
model.fit(X_train, y_train)

# Make predictions on the testing set
y_pred = model.predict(X_test)

# Evaluate the model
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print(f"Mean Squared Error: {mse}")
print(f"R^2 Score: {r2}")

# Plot the results
plt.scatter(X_test, y_test, color='black', label='Actual Data')
plt.plot(X_test, y_pred, color='blue', linewidth=3, label='Predicted Data')
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.title('Experience vs Salary')
plt.legend()
plt.show()

Пример использования библиотеки Scikit-Learn для создания и оценки простой линейной регрессионной модели

Глубокое обучение

Наконец, мы рассмотрим два пакета, которые помогут вам выполнять задачи глубокого обучения (Deep Learning) на Python:  TensorFlow и Keras.

Глубокое обучение не всегда является частью рабочего процесса науки о данных. Во многих случаях алгоритмы неглубокого обучения (такие как линейная регрессия и кластеризация K-means) можно построить с помощью Scikit-Learn, и этого достаточно для выполнения работы. Однако если вам необходимо сделать прогнозы на основе изображений и текстовых данных, вам понадобятся рабочие знания алгоритмов глубокого обучения.

Иногда организациям требуются специалисты по изучению данных для создания чат-ботов или систем обнаружения угроз. В этих случаях навыки глубокого обучения придутся как нельзя кстати.

TensorFlow

TensorFlow — библиотека с открытым исходным кодом, выпущенная Google. Пожалуй, это лучший фреймворк для глубокого обучения на сегодняшний день.

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

Недостатком является то, что это низкоуровневая библиотека с высоким порогом вхождения. Чтобы правильно ее использовать, необходимо понимать некоторые математические основы моделей, которые вы строите. Кроме того, вам нужно будет знать, как выполнять такие задачи, как манипулирование матрицами и реализация операций с массивами в Python.

Однако, как только вы преодолеете первоначальные трудности, Tensorflow станет отличным дополнением к вашему портфолио в области науки о данных. Знание этой библиотеки очень востребовано: навыки работы с TensorFlow широко распространены в вакансиях.

import tensorflow as tf
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.utils import to_categorical

# Load and preprocess the MNIST dataset
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

# Convert labels to one-hot encoded vectors
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

# Build the neural network model
model = Sequential([
    Flatten(input_shape=(28, 28)),
    Dense(128, activation='relu'),
    Dense(64, activation='relu'),
    Dense(10, activation='softmax')
])

# Compile the model
model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

# Train the model
model.fit(x_train, y_train, epochs=5, batch_size=32, validation_split=0.2)

# Evaluate the model
test_loss, test_accuracy = model.evaluate(x_test, y_test)

print(f'Test accuracy: {test_accuracy}')

Пример использования библиотеки TensorFlow для создания и обучения простой нейронной сети для классификации набора данных MNIST

Keras

Keras — это высокоуровневый фреймворк глубокого обучения, построенный на базе Tensorflow, но по производительности он уступает своей материнской библиотеке. С другой стороны, он гораздо проще в освоении.

В Keras есть множество функций, которые позволяют легко строить и обучать модели глубокого обучения. Как только вы получите представление о различных слоях, вы сможете легко реализовать каждый из них с помощью всего одной строки кода.

import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Flatten
from keras.utils import to_categorical

# Load and preprocess the MNIST dataset
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

# Convert labels to one-hot encoded vectors
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

# Build the neural network model
model = Sequential([
    Flatten(input_shape=(28, 28)),
    Dense(128, activation='relu'),
    Dense(64, activation='relu'),
    Dense(10, activation='softmax')
])

# Compile the model
model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

# Train the model
model.fit(x_train, y_train, epochs=5, batch_size=32, validation_split=0.2)

# Evaluate the model
test_loss, test_accuracy = model.evaluate(x_test, y_test)

print(f'Test accuracy: {test_accuracy}')

Пример использования библиотеки Keras для создания и обучения простой нейронной сети для классификации набора данных MNIST (рукописные цифры)

Демонстрация навыков использования библиотек TensorFlow и Keras сделает ваше резюме более привлекательным для потенциальных работодателей, поскольку продемонстрирует вашу способность выполнять задачи, превосходящие ожидания.


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

Перевод и адаптация статьи выполнены редакцией ProductStar специально для Хабра.

ProductStar — онлайн-школа IT-профессий, часть холдинга РБК с 2023 года. Спасибо, что остаетесь с нами! Вы можете подписаться на нас в Telegram, посмотреть на все наши публикации на Хабре и познакомиться с нашими курсами по Data Science и Python.

Комментарии (5)


  1. Kwent
    14.06.2024 12:59
    +11

    Глубокое обучение

    Наконец, мы рассмотрим два пакета, которые помогут вам выполнять задачи глубокого обучения (Deep Learning) на Python:  TensorFlow и Keras.

    Pytorch: Я что для вас шутка какая-то? (Это еще вне контекста что Keras и TF сравнивать некорректно)

    А в целом очень посредственная статья


  1. therb1
    14.06.2024 12:59
    +6

    Даже для человека который мимокрокодил это совсем не новые библиотеки и при чем тут 2024 тоже не понятно


  1. andnotor
    14.06.2024 12:59
    +2

    Написать что ли статью о будущем ;) "Лучшие библиотеки 2025..."


  1. ybsnow
    14.06.2024 12:59

    Если честно, не очень полезная статья, ничего нового не узнал. Какая у неё целевая аудитория - разве что самоучки, которые не идут на платные курсы?


  1. DenviRed
    14.06.2024 12:59

    Два последних примера кода одинаковые, за исключением импорта.