DataFrames.jl
Представляем вам документацию по DataFrames.jl.
Цель этого ресурса — научить вас всему, что нужно знать, чтобы приступить к работе с табличными данными с помощью пакета DataFrames.jl.
Чтобы получить другие примеры использования DataFrames.jl, в частности в сочетании с другими пакетами, ознакомьтесь со следующими ресурсами (они обновляются с выходом новых версий DataFrames.jl).
-
Статья Гибкие и быстрые табличные данные в Julia, опубликованная в издании Journal of Statistical Software
-
Памятка по первичной обработке данных с помощью DataFrames.jl
-
Руководство по работе с DataFrames с использованием записных книжек Jupyter
-
Руководства JuliaCon 2019, JuliaCon 2020, JuliaCon 2021, JuliaCon 2022, PyData Global 2020 и ODSC Europe 2021
Если вы хотите почитать книги о DataFrames.jl, то вот неплохие варианты:
Что такое DataFrames.jl
Пакет DataFrames.jl предоставляет инструментарий для работы с табличными данными в Julia. Его структура и возможности аналогичны таковым у пакетов pandas (в Python) и data.frame
, data.table
и dplyr (в R), что делает его отличным универсальным средством для анализа и обработки данных.
Пакет DataFrames.jl занимает центральное место в экосистеме Julia для работы с данными и тесно интегрирован с рядом других библиотек. Пакет DataFrames.jl — это не единственное средство для работы с табличными данными в Julia; как будет указано ниже, есть и другие отличные библиотеки для определенных ситуаций, однако он предоставляет широкие возможности для первичной обработки данных через привычный интерфейс.
Для более детального изучения набора инструментальных средств ознакомьтесь с учебными пособиями в составе данного руководства. Новички могут начать с раздела First Steps with DataFrames.jl.
При реализации более сложных преобразований данных могут оказаться полезными пакет DataFramesMeta.jl или один из других вспомогательных пакетов, рассматриваемых в разделе Data manipulation frameworks данного руководства, особенно если у вас нет большого опыта в программировании. Эти пакеты предлагают удобный синтаксис наподобие dplyr в языке R.
Если при работе с DataFrames.jl вы используете метаданные, полезным может оказаться пакет TableMetadataTools.jl. В нем определен ряд удобных функций для выполнения стандартных операций с метаданными.
DataFrames.jl и экосистема Julia для работы с данными
Новичкам может быть сложно разобраться в экосистеме Julia для работы с данными, отчасти потому, что ее возможности разнесены по большему числу библиотек, чем в некоторых других языках. Поскольку многие пользователи, приступающие к работе с DataFrames.jl, лишь начинают знакомиться с экосистемой Julia для работы с данными, ниже приведен список хорошо поддерживаемых библиотек, предоставляющих различные инструменты для анализа и обработки данных, с замечаниями об особенностях каждой библиотеки и степени ее интеграции с DataFrames.jl.
-
Статистика
-
StatsKit.jl: вспомогательный метапакет, который загружает набор полезных пакетов для статистической обработки, включая указанные ниже в этом разделе и сам пакет DataFrames.jl.
-
Statistics: в стандартную библиотеку Julia включен широкий набор статистических функций, но для доступа к ним необходимо вызвать
using Statistics
. -
LinearAlgebra: как и в случае с
Statistics
, многие функции линейной алгебры (разложения, обращения и т. д.) сведены в библиотеку, которую нужно загрузить перед использованием. -
SparseArrays также входит в стандартную библиотеку, но требует загрузки перед использованием.
-
FreqTables.jl: служит для построения таблиц распределения и комбинационных таблиц. Этот пакет тесно интегрирован с DataFrames.jl.
-
HypothesisTests.jl: ряд инструментов для проверки гипотез.
-
GLM.jl: инструменты для оценки линейных и обобщенных линейных моделей. Этот пакет тесно интегрирован с DataFrames.jl.
-
StatsModels.jl: предназначен для преобразования неоднородных объектов
DataFrame
в однородные матрицы для использования с библиотеками линейной алгебры или приложениями машинного обучения, которые не поддерживают объектыDataFrame
напрямую. Позволяет преобразовывать категориальные переменные в индикаторы и кодирования с одним активным состоянием, создавать члены, характеризующие взаимодействие, и т. д. -
MultivariateStats.jl: инструменты для линейной регрессии, гребневой регрессии, анализа по методу главных компонент (PCA), факторного анализа. Этот пакет не очень хорошо интегрирован с DataFrames.jl, но легко применяется в сочетании с
StatsModels
.
-
-
Машинное обучение
-
MLJ.jl: если вы занимаетесь больше прикладными задачами, есть пакет, который использует функции из различных библиотек и обеспечивает единый интерфейс API наподобие scikit-learn — MLJ.jl. MLJ.jl предоставляет общий интерфейс для широкого спектра алгоритмов машинного обучения.
-
ScikitLearn.jl: оболочка Julia вокруг полной библиотеки машинного обучения Python scikit-learn. Этот пакет не очень хорошо интегрирован с DataFrames.jl, но может использоваться в сочетании со StatsModels.jl.
-
AutoMLPipeline: пакет, позволяющий легко создавать сложные структуры конвейеров машинного обучения с применением простых выражений. Он использует встроенные функции макропрограммирования Julia для символьной обработки и операций с выражениями конвейеров, а также позволяет легко определять оптимальные структуры для алгоритмов регрессии и классификации машинного обучения.
-
-
Построение графиков
-
Plots.jl: современная библиотека с широкими возможностями построения графиков, синтаксис которой напоминает matplotlib (в Python) или
plot
(в R). StatsPlots.jl: предоставляет шаблоны множества стандартных статистических графиков для Plots.jl. -
Gadfly.jl: высокоуровневая библиотека построения графиков с синтаксисом «грамматики графики» наподобие ggplot (в R).
-
AlgebraOfGraphics.jl: библиотека «грамматики графики» на основе Makie.jl.
-
VegaLite.jl: высокоуровневая библиотека построения графиков с другим синтаксисом «грамматики графики» и упором на интерактивную графику.
-
-
Первичная обработка данных
-
Impute.jl: различные методы для обработки отсутствующих данных в векторах, матрицах и таблицах.
-
DataFramesMeta.jl: набор вспомогательных функций для DataFrames.jl, которые дополняют
select
иtransform
, обеспечивая возможности для пользователей, аналогичные dplyr в R. -
DataFrameMacros.jl: предоставляет версии функций DataFrames.jl в виде макросов наподобие DataFramesMeta.jl с удобным синтаксисом для операций сразу с несколькими столбцами.
-
Query.jl: предоставляет единый фреймворк для первичной обработки данных, который работает с рядом библиотек, включая DataFrames.jl и другие библиотеки, предназначенные для табличных данных (подробнее см. ниже) и даже нетабличных данных. Предлагает множество вспомогательных функций, подобных имеющимся в dplyr в R или LINQ.
-
Дополнительные сведения об этих пакетах см. в разделе Data manipulation frameworks данного руководства.
-
-
Другие возможности
-
Graphs.jl: высокопроизводительная библиотека для анализа сетей исключительно на Julia. Списки ребер в объектах
DataFrame
можно легко преобразовывать в графы с помощью пакета GraphDataFrameBridge.jl.
-
-
Ввод-вывод
-
DataFrames.jl хорошо работает с рядом форматов, включая следующие:
-
файлы CSV (посредством CSV.jl);
-
Apache Arrow (посредством Arrow.jl);
-
чтение файлов Stata, SAS и SPSS (посредством ReadStatTables.jl; пользователи Queryverse могут также выбрать StatFiles.jl);
-
файлы Parquet (посредством Parquet2.jl);
-
чтение файлов данных R (.rda, .RData) (посредством RData.jl).
-
-
Не все эти библиотеки тесно интегрированы с DataFrames.jl, но поскольку объекты DataFrame
по сути представляют собой коллекции выровненных векторов Julia, вы можете легко (a) извлечь вектор для использования с библиотекой, не интегрированной с DataFrames, или (b) преобразовать таблицу в однородную по типу матрицу с помощью конструктора Matrix
или пакета StatsModels.jl.
Другие библиотеки Julia для работы с табличными данными
Пакет DataFrames.jl — это отличное универсальное средство для манипуляций с данными и их первичной обработки, но не для каждого приложения он подходит одинаково хорошо. Для более узкоспециальных задач можно использовать следующие пакеты:
-
TypedTables.jl: стабильные по типу неоднородные таблицы. Позволяют повысить производительность, если структура таблицы относительно устойчива и не насчитывает тысячи столбцов.
-
JuliaDB.jl: для работы с очень большими данными, которые не помещаются в памяти, мы предлагаем пакет JuliaDB.jl. Он обеспечивает более высокую производительность в случае с большими наборами данных и позволяет производить операции с данными во внешней памяти (пользователи Python могут рассматривать JuliaDB.jl как аналог dask в Julia).
Обратите внимание, что большинство библиотек для работы с табличными данными в экосистеме Julia (включая DataFrames.jl) поддерживают общий интерфейс (определенный в пакете Tables.jl). Поэтому некоторые библиотеки могут работать с различными табличными структурами данных, что упрощает переход с одной библиотеки на другую в случае необходимости. Например, пользователь Query.jl может использовать один и тот же код для операций с данными в объекте DataFrame
, объекте Table
(определенном в TypedTables.jl) или таблице JuliaDB.
Обращение с вопросами
Если вы уверены, что в DataFrames реализована некоторая возможность, но не знаете, как ей воспользоваться, задайте вопрос в теме Domains (Предметные области) в разделе Data (Данные) в DataFrames%20Question:%20&body=%23%20Question:%0A%0A%23%20Dataset%20(if%20applicable):%0A%0A%23%20Minimal%20Working%20Example%20(if%20applicable):%0A&category=Domains/Data&tags=question[Discourse]. Кроме того, вы можете пройти вводный курс по DataFrames.jl в JuliaAcademy.
Чтобы сообщить об ошибке, откройте проблему.
При чтении документации вы можете перейти по ссылке исходный код, чтобы перейти к исходным файлам в GitHub и создать запрос на вытягивание с предложением улучшить документацию или добавить функцию.
Прежде чем отправлять свой первый запрос на вытягивание, ознакомьтесь с инструкциями по участию в работе над DataFrames.
Сведения об отдельных версиях можно найти на странице с историей выпусков.
Руководство по пакету
API
Только экспортируемые (то есть доступные для использования без квалификатора DataFrames.
после загрузки пакета DataFrames.jl с помощью инструкции using DataFrames
) типы и функции считаются входящими в состав общедоступного API пакета DataFrames.jl. Как правило, все такие объекты описываются в данном руководстве (если какая-то информация отсутствует, сообщите о проблеме здесь).
По возможности в общедоступный и задокументированный интерфейс API пакета DataFrames.jl критические изменения не вносятся. Следующие изменения не считаются критическими.
Все типы и функции, входящие в общедоступный API, обязательно проходят период вывода из использования перед внесением критического изменения либо удаляются. Обычно критические изменения вносятся с выходом новой основной версии DataFrames.jl (например, возможности, объявленные как выводимые из использования в версии 1.x, изменятся в версии 2.0). В редких случаях критические изменения могут вводиться в дополнительных версиях. В таком случае изменяемое поведение все равно объявляется как выводимое из использования в одной дополнительной версии. Внесение таких критических изменений, если избежать его никак не удается, допускается в следующих ситуациях.
|
Учтите, что хотя Julia допускает обращение к внутренним функциям и типам DataFrames.jl, они могут изменяться в новых версиях без уведомления. Например, небезопасно обращаться напрямую к полям типов, входящих в состав общедоступного API пакета DataFrames.jl, с помощью функции getfield
. Если какая-либо операция с полями определенных типов считается допустимой, вместо этого следует использовать соответствующую экспортируемую функцию.