Независимо от того, используете ли вы данные для бизнес-анализа или для построения моделей машинного обучения, плохо структурированные данные могут мешать работе и отнимать много времени на обработку данных.
В этой статье я собрал полезные библиотеки Python с открытым исходным кодом, которые помогут вам улучшить качество обработки данных в вашей повседневной работе.
Я начну с библиотек обработки и оценки данных для исследовательской и предиктивной аналитики. Затем рассмотрю библиотеки для очистки и форматированию данных и закончу с инструментами визуализации данных.
Профилирование и оценка данных
1. Pandas Profiling [Github]
Ключевые особенность:
- возможность профилирование данных
- легкое распределение данных и простое построение гистограмм
- удобные встроенные функции статистики (среднее значение, стандартное отклонение, Q1, …)
- быстрый поиск и корреляции данных
- легкое создание отчета в HTML
2. Great Expectations [Github]
Great Expectations помогает специалистам по работе с данными устранить ошибку в работе с данными за счет тестирования данных, документирования и профилирования.
Ключевая функции библиотеки:
- expect_column_values_to_not_be_null
- expect_column_values_to_match_regex
- expect_column_values_to_be_unique
- expect_column_values_to_match_strftime_format
- expect_table_row_count_to_be_between
- expect_column_median_to_be_between
- Интеграция со многими инструментами и системами, такими как (Pandas, Jupyter Notebooks, Spark, mysql, databricks, …)
- и многие другие функции
Думаю , что из названия классов понятны возможности этой замечательной библиотеки.
3. SodaSQL [Github]
SodaSQL - инструмент командной строки с открытым исходным кодом, выполняющий SQL-запросы на основе входных данных для запуска тестов на разных наборах данных в разных источниках данных (таких как Snowflake, PostgreSQL, Athena, …). SodaSQL прекрасно подходит для поиска шумов в данных или заполнения отсутствующих данных.
Кроме того, SodaSQL позволяет легко работать со статистикой м выводить как min, max, avg, stddev и многие другие.
Ключевые особенности SodaSQL:
- Содержит набор встроенных SQL-тестов
- Быстрое развертывание тестов в формате yml для каждой таблицы данных
- Легко интегрируется с другими инструментами по работе с данными
- Легко и быстро импортируется , позволяет анализировать датасеты в несколько строк кода
- Содержит встроенные определители формата столбцов (например, адрес электронной почты, дата, номера телефонов и т. д.)
- Возвращает результаты тестов Json
4. Ydata [Github]
Библиотека для оценки качества данных,которая помогает получить целостное представление о данных, рассматривая их с разных сторон:
Ydata позволят:
- легко заполнять Отсутствующие значения
- быстро удалять дубликаты
- простое обнаружение выбросов в данных
- содержит встроенный поиск зависимости данных и их корреляции
- содержит легкое и удобное автоматизация создания отчетов.
5. DeepChecks [Github]
Пакет Python для проверки моделей и данных машинного обучения с минимальными усилиями.
DeepChecks позволяет проводить проверки, связанные с различными типами проблем, такими как производительность модели, целостность данных, несоответствие распределения и многие другое
DeepsChecks предоставляет возможность легко писать кастомные функции проверки работы мл моделей. Результаты работы DeepsChecks визуализируются встроенными функциями в виде таблиц или графиков.
6. Evidently AI [Github]
Инструмент для анализа и мониторинга моделей машинного обучения.
Ключевые особенности:
- построение распределение данных
- Удобное Обнаружение дрейфа данных, показывающие, что одна или несколько функций/признаков в вашей модели существенно изменились
- Создание пользовательской панели инструментов
- Риалтайм отображение состояния и производительность модели
- Интеграция с Grafana и Prometheus
7. Alibi Detect [Github]
Специализированная библиотека для машинного обучения, ориентированная на обнаружение выбросов и дрейфа в данных .
Ключевые особенности:
- Обнаружение дрейфа и выбросов для табличных данных, текста, изображений и временных рядов
- Работает какс онлайн, так и оффлайн детекторами
- Поддерживаются TensorFlow и PyTorch бэкенды для обнаружения дрейфа.
8. Scrabadub [Github]
Идентифицирует и удаляет PII (персональную информацию) из текста. как данных, номера телефонов, адреса, номера кредитных карт и многое другое.
text = "My cat can be contacted on example@example.com, or 1800 555-5555" scrubadub.clean(text)
>>'My cat can be contacted on {{EMAIL}}, or {{PHONE}}'
9. Arrow [Github]
Arrow обеспечивает удобный функционал к созданию, манипулированию, форматированию и преобразованию дат, времени и временных меток.
utc = arrow.utcnow()
time= utc.to('US/Pacific')
past = time.dehumanize("2 days ago")
print(past)
>> 2022-01-09T10:11:11.939887+00:00
print(past.humanize(locale="ar"))
10. Beautifier [Github]
Библиотека для очистки URL и электронных писем. Кроме того, она позволяет:
- Проверить валидность электронной почты
- Сортировать электронные письма по домену и имени пользователя
- Сортировать URL по домену и параметрам
- Удалять юникоды, специальные символы из строк
11. Ftfy [Github]
Ftfy = «Исправляет текст за вас», и это именно то, что делает эта библиотека:
- Исправляет строки с кривым юникодом
- Удаляет разрывы строк
- Преобразовывает html в обычный текст
- Предоставьте объяснение, чтобы показать нам, что произошло с текстом
ftfy.fix_text('The Mona Lisa doesn’t have eyebrows.')
>>"The Mona Lisa doesn't have eyebrows."
12. Dora [Github]
Инструмент исследовательского анализа данных для Python.
Библиотека содержит удобные функции для очистки и обработки данных , визуализации, анализа данных и проверки моделей мо.
Чтение данных :
# without initial config >>> dora = Dora()
>>> dora.configure(output = 'A', data = 'path/to/data.csv')
# is the same as >>> import pandas as pd >>> dataframe = pd.read_csv('path/to/data.csv')
>>> dora = Dora(output = 'A', data = dataframe)
>>> dora.data A B C D useless_feature 0 1 2 0 left 1 1 4 NaN 1 right 1 2 7 8 2 left 1
Очистка данных:
# read data with missing and poorly scaled values >>> import pandas as pd >>> df = pd.DataFrame([
... [1, 2, 100],
... [2, None, 200],
... [1, 6, None]
... ])
>>> dora = Dora(output = 0, data = df)
>>> dora.data 0 1 2 0 1 2 100 1 2 NaN 200 2 1 6 NaN
# impute the missing values (using the average of each column) >>> dora.impute_missing_values()
>>> dora.data 0 1 2 0 1 2 100 1 2 4 200 2 1 6 150
# scale the values of the input variables (center to mean and scale to unit variance) >>> dora.scale_input_values()
>>> dora.data 0 1 2 0 1 -1.224745 -1.224745 1 2 0.000000 1.224745 2 1 1.224745 0.000000
Проверка работы моделей:
# create random partition of training / validation data (~ 80/20 split) dora.set_training_and_validation()
# train a model on the data X = dora.training_data[dora.input_columns()]
y = dora.training_data[dora.output]
some_model.fit(X, y)
# validate the model X = dora.validation_data[dora.input_columns()]
y = dora.validation_data[dora.output]
some_model.score(X, y)
175 / 5 000
13. Tabulate [Github]
Tabulate позволяет печатать красивые таблицы всего одним вызовом функции.
Tabulate выводит таблицы в читабельными виде. С Tabulate содержит удобные функции форматирование таблицы в Html и другие форматы.
>>> from tabulate import tabulate
>>> table = [["Sun",696000,1989100000],["Earth",6371,5973.6],
... ["Moon",1737,73.5],["Mars",3390,641.85]]
>>> print(tabulate(table))
----- ------ -------------
Sun 696000 1.9891e+09
Earth 6371 5973.6
Moon 1737 73.5
Mars 3390 641.85
----- ------ -------------
14. PrettyPandas [Github]
PrettyPandas помогает создавать таблицы отчетов с помощью простого API. PrettyPandas делает таблицы более читабельными.
(
df .pipe(PrettyPandas)
.as_currency('GBP', subset='A')
.as_percent(subset='B')
.total()
.average()
)
15. Open Neural Network Exchange (ONNX)[Github]
Open Neural Network Exchange (ONNX) — это открытая экосистема, которая позволяет разработчикам ИИ выбирать правильные инструменты по мере развития своего проекта. ONNX предоставляет формат с открытым исходным кодом для моделей ИИ, как для глубокого обучения, так и для традиционного машинного обучения. Он предоставляет модель графов вычислений, а также набор встроенных операторов и стандартных типов данных.
https://t.me/ai_machinelearning_big_data - больше интересного из мира машинного обучения
https://t.me/pro_python_code 1 канал о Python вместо тысячи учебиков