панды (программное обеспечение)
Оригинальный автор(ы) | Уэс МакКинни |
---|---|
Разработчик(и) | Сообщество |
Первоначальный выпуск | 11 января 2008 г нужна ссылка ] | [
Стабильная версия | 2.2.2 [1] / 10 апреля 2024 г |
Предварительный выпуск | 2.0rc1 / 15 марта 2023 г. |
Репозиторий | |
Написано в | Питон , Китон , Си |
Операционная система | Кросс-платформенный |
Тип | Технические вычисления |
Лицензия | Новая лицензия BSD |
Веб-сайт | панды |
Pandas (в стиле pandas ) — это программная библиотека , написанная для языка программирования Python для манипулирования и анализа данных . В частности, он предлагает структуры данных и операции для манипулирования числовыми таблицами и временными рядами . Это бесплатное программное обеспечение , распространяемое по трехпунктной лицензии BSD . [2] Название происходит от термина « pan el data наборы », эконометрического термина, обозначающего данных , которые включают наблюдения за несколькими периодами времени для одних и тех же людей. [3] а также игра на фразе «Анализ данных Python». [4] : 5 Уэс МакКинни начал создавать то, что впоследствии стало Pandas, в AQR Capital, когда он работал там исследователем с 2007 по 2010 год. [5]
Разработка Pandas привнесла в Python множество сопоставимых функций работы с DataFrames, которые были установлены в языке программирования R. Библиотека построена на основе другой библиотеки NumPy .
История [ править ]
Разработчик Уэс МакКинни начал работать над Pandas в 2008 году, когда работал в AQR Capital Management, из-за потребности в высокопроизводительном и гибком инструменте для количественного анализа финансовых данных. Прежде чем покинуть AQR, он смог убедить руководство разрешить ему открыть исходный код библиотеки.
Другой сотрудник AQR, Чан Ше, присоединился к усилиям в 2012 году в качестве второго крупного сотрудника библиотеки.
В 2015 году Pandas стал финансово спонсируемым проектом NumFOCUS , некоммерческой благотворительной организации 501(c)(3) в США. [6]
Модель данных [ править ]
Pandas построен на структурах данных, называемых Series и DataFrames . Данные для этих коллекций можно импортировать из различных форматов файлов, таких как значения, разделенные запятыми , JSON , Parquet , SQL базы данных таблицы или запросы , а также Microsoft Excel . [7]
Серия — это одномерная структура данных, построенная на основе . массива NumPy [8] : 97 В отличие от NumPy, каждая точка данных имеет связанную метку. Коллекция этих меток называется индексом. [4] : 112 Ряды можно использовать арифметически, как в утверждении series_3 = series_1 + series_2
: это позволит совместить точки данных с соответствующими значениями индекса в series_1
и series_2
, затем сложите их вместе, чтобы получить новые значения в series_3
. [4] : 114 DataFrame Python, сопоставляющему имена столбцов ( ключи — это двумерная структура данных, состоящая из строк и столбцов, похожая на электронную таблицу и аналогичная словарю ) с сериями (значениями), при этом каждая серия имеет общий индекс. [4] : 115 DataFrames можно объединять или «объединять» по столбцам или индексам аналогично соединениям в SQL . [4] : 177–182 Pandas реализует подмножество реляционной алгебры и поддерживает соединения «один к одному», «многие к одному» и «многие ко многим». [8] : 147–148 Pandas также поддерживает менее распространенные Panel и Panel4D , которые представляют собой трехмерные и четырехмерные структуры данных соответственно. [8] : 141
Пользователи могут преобразовывать или суммировать данные, применяя произвольные функции . [4] : 132 Поскольку Pandas построен на основе NumPy, все функции NumPy также работают с сериями и DataFrames. [8] : 115 Pandas также включает встроенные операции для арифметики, манипуляций со строками и сводной статистики, такой как среднее значение , медиана и стандартное отклонение . [4] : 139, 211 Эти встроенные функции предназначены для обработки недостающих данных, обычно представленных значением с запятой плавающей NaN . [4] : 142–143
Подмножества данных можно выбирать по имени столбца, индексу или логическим выражениям . Например, df[df['col1'] > 5]
вернет все строки в DataFrame df
для которого значение столбца col1
превышает 5. [4] : 126–128 Данные могут быть сгруппированы по значению столбца, как в df['col1'].groupby(df['col2'])
, или функцией, которая применяется к индексу. Например, df.groupby(lambda i: i % 2)
группирует данные по четности индекса. [4] : 253–259
Pandas включает поддержку временных рядов , например возможность интерполировать значения. [4] : 316–317 и фильтровать, используя диапазон временных меток (например, data['1/1/2023':'2/2/2023']
вернет все даты между 1 января и 2 февраля). [4] : 295 Pandas представляет отсутствующие данные временных рядов, используя специальный объект NaT (Not a Timestamp) вместо значения NaN, которое он использует в другом месте. [4] : 292
Индексы [ править ]
По умолчанию индекс Pandas представляет собой серию целых чисел, возрастающих от 0, аналогично индексам массивов Python . Однако индексы могут использовать любой тип данных NumPy, включая плавающую запятую, метки времени или строки. [4] : 112
Синтаксис Pandas для сопоставления значений индекса с соответствующими данными аналогичен синтаксису, который Python использует для сопоставления ключей словаря со значениями. Например, если s
это серия, s['a']
вернет точку данных по индексу a
. В отличие от ключей словаря, уникальность значений индекса не гарантируется. Если серия использует значение индекса a
для нескольких точек данных, тогда s['a']
вместо этого вернет новую серию, содержащую все совпадающие значения. [4] : 136 Имена столбцов DataFrame хранятся и реализуются идентично индексу. Таким образом, DataFrame можно рассматривать как имеющий два индекса: один на основе столбца и один на основе строки. Поскольку имена столбцов хранятся в виде индекса, они не обязательно должны быть уникальными. [8] : 103–105
Если data
является серией, то data['a']
возвращает все значения со значением индекса a
. Однако, если data
является DataFrame, тогда data['a']
возвращает все значения в столбцах с именем a
. Чтобы избежать этой двусмысленности, Pandas поддерживает синтаксис data.loc['a']
в качестве альтернативного способа фильтрации с использованием индекса. Pandas также поддерживает синтаксис data.iloc[n]
, который всегда принимает целое число n и возвращает n-е значение, считая с 0. Это позволяет пользователю действовать так, как будто индекс представляет собой последовательность целых чисел, подобную массиву, независимо от того, как он на самом деле определен. [8] : 110–113
Pandas поддерживает иерархические индексы с несколькими значениями для каждой точки данных. Индекс с такой структурой, называемый «MultiIndex», позволяет одному DataFrame представлять несколько измерений, подобно сводной таблице в Microsoft Excel . [4] : 147–148 Каждому уровню MultiIndex можно присвоить уникальное имя. [8] : 133 На практике данные с более чем двумя измерениями часто представляются с использованием DataFrames с иерархическими индексами вместо многомерных Panel и Panel4D. структур данных [8] : 128
Критика [ править ]
Pandas критиковали за неэффективность. Pandas может потребоваться в 5–10 раз больше памяти, чем размер базовых данных, и весь набор данных должен быть загружен в ОЗУ . Библиотека не оптимизирует планы запросов и не поддерживает параллельные вычисления на нескольких ядрах . Уэс МакКинни, создатель Pandas, рекомендовал Apache Arrow в качестве альтернативы для решения этих проблем с производительностью и других ограничений. [9]
См. также [ править ]
- matplotlib
- NumPy
- сумерки
- SciPy
- R (язык программирования)
- scikit-learn
- Список программного обеспечения для численного анализа
Ссылки [ править ]
- ^ «Панды 2.2.2» . 10 апреля 2024 г.
- ^ «Лицензия – Обзор пакета – Документация pandas 1.0.0» . панды . 28 января 2020 г. Проверено 30 января 2020 г.
- ^ Уэс МакКинни (2011). «Pandas: базовая библиотека Python для анализа данных и статистики» (PDF) . Проверено 2 августа 2018 г.
- ↑ Перейти обратно: Перейти обратно: а б с д и ж г час я дж к л м н тот п МакКинни, Уэс (2014). Python для анализа данных (первое изд.). О'Рейли. ISBN 978-1-449-31979-3 .
- ^ Копф, Дэн. «Познакомьтесь с человеком, создавшим самый важный инструмент в области науки о данных» . Кварц . Проверено 17 ноября 2020 г.
- ^ «NumFOCUS – панды: проект, финансируемый с финансовой точки зрения» . NumFOCUS . Проверено 3 апреля 2018 г.
- ^ «Инструменты ввода-вывода (Text, CSV, HDF5,…) — документация pandas 1.4.1» .
- ↑ Перейти обратно: Перейти обратно: а б с д и ж г час ВандерПлас, Джейк (2016). Справочник по Python Data Science: основные инструменты для работы с данными (первое издание). О'Рейли. ISBN 978-1-491-91205-8 .
- ^ МакКинни, Уэс (21 сентября 2017 г.). «Apache Arrow и «10 вещей, которые я ненавижу в пандах» » . wesmckinney.com . Проверено 21 декабря 2023 г.
Дальнейшее чтение [ править ]
- МакКинни, Уэс (2017). Python для анализа данных: обработка данных с помощью Pandas, NumPy и IPython (2-е изд.). Севастополь: О'Рейли. ISBN 978-1-4919-5766-0 .
- Молин, Стефани (2019). Практический анализ данных с помощью Pandas: эффективно выполняйте сбор, обработку, анализ и визуализацию данных с помощью Python . Пакет. ISBN 978-1-7896-1532-6 .
- Чен, Дэниел Ю. (2018). Панды для всех: анализ данных Python . Бостон: Аддисон-Уэсли. ISBN 978-0-13-454693-3 .
- ВандерПлас, Джейк (2016). «Манипулирование данными с помощью Pandas». Справочник по Python Data Science: основные инструменты для работы с данными . О'Рейли. стр. 97–216. ISBN 978-1-4919-1205-8 .
- Патхак, Чанки (2018). Поваренная книга панд . стр. 1–8.