10 малоизвестных библиотек Python, которые стоит использовать дата-саентистам в 2023 году
Python долгое время был одним из самых популярных языков программирования. Он имеет широкий спектр хорошо известных и часто используемых библиотек, таких как NumPy, Pandas и Matplotlib. Однако, существует несколько малоизвестных библиотек Python, которые могут иметь большое значение в карьере дата-сайентиста. В этой статье я попытался рассказать о 10 таких библиотеках, ведь действительно стоит задуматься о том, чтобы начать использовать в своей работе что-то новое.
PyGWalker: PyGWalker упрощает рабочий процесс анализа и визуализации данных в Jupyter Notebook, превращая фрейм данных pandas (или фрейм данных polars) в пользовательский интерфейс в стиле Tableau для визуального исследования.
import pandas as pd
import pygwalker as pyg
#https://www.kaggle.com/code/asmdef/pygwalker-test/notebook
df = pd.read_csv("hour.csv", parse_dates=['dteday'])
df.head()
pyg.walk(df)
Приведённый выше график показывает интерфейс, похожий на таблицу, использующий файл excel hour.csv, в котором содержится сумма скорости ветра за каждый месяц. Конечно, всегда можно поэкспериментировать с разными параметрами по осям X и Y.
SciencePlots: Создаёт профессиональные графики matplotlib для презентаций, исследовательских работ и т.д.
import matplotlib.pyplot as plt
import scienceplots as sp
plt.style.use(['fivethirtyeight','dark_background'])
with plt.style.context('seaborn-paper'):
plt.figure()
plt.plot(x, y)
plt.show()
Приведённый выше код использует комбинацию стилей ‘fivethirtyeight’ и ’dark_background’. Хотя лучше ознакомиться со списком уже доступных стилей (используя приведённый ниже код), иначе в программе легко могут возникнуть ошибки из-за отсутствия какого-либо стиля.
import matplotlib.pyplot as plt
import numpy as np
#plt.style.use(['science', 'notebook'])
plt.style.available
Output:
['Solarize_Light2',
'_classic_test_patch',
'_mpl-gallery',
'_mpl-gallery-nogrid',
'bmh',
'classic',
'dark_background',
'fast',
'fivethirtyeight',
'ggplot',
'grayscale',
'seaborn']
CleverCSV: Устраняет ошибки синтаксического анализа при чтении CSV-файлов с помощью Pandas.
import clevercsv
# Open CSV file and parse its contents
with open('hour.csv', 'r') as file:
csv_reader = clevercsv.reader(file, delimiter=',', quotechar='"')
for row in csv_reader:
print(row)
В этом примере функция clevercsv.reader()
используется для чтения CSV-файла с именем ‘hour.csv‘ из предыдущей задачи. Функция принимает несколько параметров, включая объект file, символ-разделитель (в данном случае запятую) и символ кавычки (в данном случае двойную кавычку).
Объект csv_reader
, возвращаемый clevercsv.reader()
, может быть повторён для извлечения каждой строки CSV-файла в виде списка. В этом примере каждая строка выводится на консоль.
Обратите внимание, что CleverCSV автоматически устраняет распространённые проблемы с CSV-файлами, такие как несоответствующие разделители полей или символы кавычек. Это делает его полезным инструментом для работы с беспорядочными или плохо отформатированными CSV-файлами.
fastparquet: Ускоряет ввод-вывод pandas в 5 раз.
import pandas as pd
import fastparquet as fp
# Create a sample dataframe
data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]}
df = pd.DataFrame(data)
# Write the dataframe to a Parquet file
fp.write('example.parquet', df)
# Read the Parquet file into a new dataframe
new_df = fp.ParquetFile('example.parquet').to_pandas()
# Print the new dataframe
print(new_df)
Output:
name age
0 Alice 25
1 Bob 30
2 Charlie 35
В этом примере библиотека fastparquet
используется для записи фрейма данных pandas в файл Parquet, а затем считывания его обратно в новый фрейм данных. fastparquet
– это высокопроизводительная реализация формата Parquet на Python, предназначенная для бесперебойной работы с фреймами данных Pandas. Она обеспечивает быструю производительность чтения и записи, эффективное сжатие и поддержку широкого спектра типов данных.
nbcommands: Позволяет легко выполнять поиск кода в Jupyter notebooks, а не выполнять это вручную.
https://nbcommands.readthedocs.io/en/latest/
Bottleneck: ускоряет работу методов NumPy в 25 раз. Особенно, если массив имеет значения NaN.
import bottleneck as bn
import numpy as np
# Create a 2D array of random values
arr = np.random.rand(1000, 10)
# Calculate the moving average of each row using bottleneck
moving_avg = bn.move_mean(arr, window=3, axis=1)
print(moving_avg)
Output:
[[ nan nan 0.28970504 ... 0.36931535 0.42605879 0.59029909]
[ nan nan 0.49734916 ... 0.47646434 0.62247903 0.59207834]
[ nan nan 0.61133785 ... 0.68879594 0.68071521 0.54268834]
...
[ nan nan 0.40336392 ... 0.71474823 0.7382253 0.50349293]
[ nan nan 0.63514901 ... 0.42061741 0.39216543 0.44065902]
[ nan nan 0.17439254 ... 0.59518532 0.68540443 0.64765793]]
В этом коде библиотека bottleneck
импортируется как bn
. Затем создаётся 2D массив NumPy с 1000 строками и 10 столбцами со случайными значениями.
Далее функция move_mean
используется из Bottleneck для вычисления скользящего среднего для каждой строки в массиве. Параметр window
указывает количество значений, которые будут использоваться при вычислении каждого скользящего среднего, а параметр axis
указывает ось, вдоль которой будет вычисляться скользящее среднее (в данном случае мы вычисляем его для каждой строки, поэтому устанавливаем axis=1
).
Наконец, выводится результирующий массив скользящих средних. Это лишь один пример того, как Bottleneck может быть использовано в коде Python для повышения производительности вычислений.
multipledispatch: включает перегрузку функций в Python.
from multipledispatch import dispatch
@dispatch(int, int)
def add(x, y):
return x + y
@dispatch(float, float)
def add(x, y):
return x + y
@dispatch(str, str)
def add(x, y):
return x + y
print(add(1, 2)) # Output: 3
print(add(1.0, 2.0)) # Output: 3.0
print(add("Hello, ", "World!")) # Output: Hello, World!
Output:
3
3.0
Hello, World!
В этом примере функция add
определена и имеет три реализации, каждая из которых принимает разные типы входных данных. Декоратор @dispatch
используется для указания того, какую реализацию использовать на основе типов ввода. Когда функция add
вызывается с аргументами разных типов, multipledispatch автоматически выбирает правильную реализацию на основе сигнатуры типа аргументов. Это позволяет легко писать чистый и читаемый код, который может обрабатывать несколько типов входных данных.
Aquarel: дополнительные стили графиков matplotlib.
https://github.com/lgienapp/aquarel
Modelstore: библиотека моделей машинного обучения для лучшего отслеживания работы моделей.
https://github.com/operatorai/modelstore
Pigeon: помогает анотировать данные щелчками мышки в Jupyter notebook.
from pigeon import annotate
import pandas as pd
# Define the options for the labels
options = ['Positive', 'Negative']
# Load your data
df = pd.read_csv('healthcare-dataset-stroke-data.csv')
# Annotate the data using Pigeon
annotations = annotate(df['stroke'], options=options)
# Save the annotations to a CSV file
annotations_df = pd.DataFrame(annotations, columns=['annotations'])
annotations_df.to_csv('annotations.csv', index=False)
В этом примере функция annotate
импортируется из библиотеки Pigeon, параметры определены для меток, а данные загружены из файла .CSV. Функция annotate
используется для того, чтобы предложить аннотатору пометить каждую категорию (в данном случае “stroke“) набора данных одним из определённых параметров (Positive или Negative). Наконец, аннотации сохраняются в CSV-файл.
В заключение отметим, что Python – это мощный и универсальный язык программирования с огромным набором библиотек на выбор. Хотя существует множество популярных библиотек, важно не упускать из виду менее известные из них, которые могут предложить уникальную и ценную функциональность. 10 библиотек, упомянутых в этой статье, – это лишь небольшая выборка из множества скрытых жемчужин, ожидающих своего открытия в экосистеме Python. Исследуя и экспериментируя с этими библиотеками, разработчики могут расширить свои наборы инструментов и получить новые идеи и возможности, которые могут помочь им решать даже самые сложные проблемы.
На этом заканчивается статья о 10 малоизвестных библиотеках Python, которые программисты должны использовать в 2023 году. Следите за обновлениями и за другими статьями, связанными с python, EDA, машинным обучением, глубоким обучением, вариантами использования ChatGPT и NLP, а также различными проектами.
Github: https://github.com/abhigyan631