Обзор пакета#

pandas - это Python пакет, предоставляющий быстрые, гибкие и выразительные структуры данных, разработанные для удобной и интуитивно понятной работы с «реляционными» или «помеченными» данными. Он стремится быть фундаментальным высокоуровневым строительным блоком для практической реального мира анализ данных в Python. Кроме того, у него есть более широкая цель стать самый мощный и гибкий инструмент анализа/обработки данных с открытым исходным кодом, доступный на любом языке. Он уже хорошо продвинулся к этой цели.

pandas хорошо подходит для многих различных типов данных:

  • Табличные данные с разнотипными столбцами, как в таблице SQL или электронной таблице Excel

  • Упорядоченные и неупорядоченные (не обязательно с фиксированной частотой) данные временных рядов.

  • Произвольные матричные данные (однородно типизированные или разнородные) с метками строк и столбцов

  • Любые другие формы наблюдательных / статистических наборов данных. Данные не обязательно должны быть размечены для помещения в структуру данных pandas

Две основные структуры данных pandas, Series (одномерный) и DataFrame (двумерная), охватывает подавляющее большинство типичных случаев использования в финансах, статистике, социальных науках и многих областях инженерии. Для пользователей R, DataFrame предоставляет всё, что R’s data.frame предоставляет и многое другое. pandas построен на основе NumPy и предназначен для хорошей интеграции в научную вычислительную среду со многими сторонними библиотеками.

Вот лишь несколько вещей, которые pandas делает хорошо:

  • Простое управление пропущенные данные (представленные как NaN) в числах с плавающей точкой, а также в данных без плавающей точки

  • Изменяемость размера: столбцы могут быть вставлены и удалены из DataFrame и объектов более высокой размерности

  • Автоматическое и явное выравнивание данных: объекты могут быть явно выровнены по набору меток, или пользователь может просто игнорировать метки и позволить Series, DataFrame, и т.д. автоматически выравнивают данные для вас в вычислениях

  • Мощный, гибкий группировать по функциональность для выполнения операций split-apply-combine на наборах данных, как для агрегации, так и для преобразования данных

  • Сделать это легко преобразовать нерегулярные, различно индексированные данные из других структур данных Python и NumPy в объекты DataFrame

  • Интеллектуальная на основе меток slicing, расширенная индексация, и выбор подмножества больших наборов данных

  • Интуитивный объединение и объединение наборы данных

  • Гибкий преобразование структуры и сводные таблицы наборов данных

  • Иерархический маркировка осей (возможно наличие нескольких меток на деление)

  • Надёжные инструменты ввода-вывода для загрузки данных из плоские файлы (CSV и разделители), файлы Excel, базы данных и сохранение / загрузка данных из сверхбыстрого формат HDF5

  • Временные ряды-специфичная функциональность: генерация диапазонов дат и преобразование частоты, скользящая статистика, сдвиг дат и лагирование.

Многие из этих принципов здесь для устранения недостатков, часто встречающихся при использовании других языков / сред научных исследований. Для специалистов по данным, работа с данными обычно делится на несколько этапов: обработка и очистка данных, анализ / моделирование, затем организация результатов анализа в форму, подходящую для построения графиков или табличного отображения. pandas является идеальным инструментом для всех этих задач.

Некоторые другие примечания

  • pandas - это быстро. Многие низкоуровневые алгоритмические компоненты были тщательно оптимизированы в Cython код. Однако, как и во всем остальном, обобщение обычно жертвует производительностью. Поэтому если вы сосредоточитесь на одной функции для вашего приложения, вы сможете создать более быстрый специализированный инструмент.

  • pandas является зависимостью statsmodels, что делает его важной частью экосистемы статистических вычислений в Python.

  • pandas широко используется в производстве в финансовых приложениях.

Структуры данных#

Размерности

Name

Описание

1

Series

1D помеченный однородно типизированный массив

2

DataFrame

Общая двумерная размеченная, изменяемая по размеру табличная структура с потенциально разнотипными столбцами

Зачем более одной структуры данных?#

Лучший способ думать о структурах данных pandas — как о гибких контейнерах для данных меньшей размерности. Например, DataFrame — это контейнер для Series, а Series — контейнер для скаляров. Мы хотели бы иметь возможность вставлять и удалять объекты из этих контейнеров в словарно-подобном стиле.

Кроме того, мы хотели бы разумное поведение по умолчанию для общих функций API, которое учитывает типичную ориентацию временных рядов и наборов перекрестных данных. При использовании N-мерных массивов (ndarrays) для хранения 2- и 3-мерных данных на пользователя ложится бремя учитывать ориентацию набора данных при написании функций; оси считаются более или менее эквивалентными (за исключением случаев, когда C- или Fortran-непрерывность важна для производительности). В pandas оси предназначены для придания большего семантического значения данным; т.е. для конкретного набора данных, вероятно, существует «правильный» способ ориентации данных. Цель, следовательно, состоит в том, чтобы уменьшить умственные усилия, необходимые для кодирования преобразований данных в последующих функциях.

Например, с табличными данными (DataFrame) семантически полезнее думать о index (строки) и столбцы вместо оси 0 и оси 1. Итерация по столбцам DataFrame таким образом приводит к более читаемому коду:

for col in df.columns:
    series = df[col]
    # do something with series

Изменяемость и копирование данных#

Все структуры данных pandas являются изменяемыми по значению (содержащиеся в них значения могут быть изменены), но не всегда изменяемыми по размеру. Длина Series не может быть изменена, но, например, столбцы могут быть вставлены в DataFrame. Однако, подавляющее большинство методов создают новые объекты и оставляют входные данные неизменными. В целом мы предпочитаем предпочитать неизменяемость где это имеет смысл.

Получение поддержки#

Первым местом для решения проблем и идей по pandas является Трекер проблем GitHub. Если у вас есть общий вопрос, эксперты сообщества pandas могут ответить через Stack Overflow.

Сообщество#

pandas активно поддерживается сообществом единомышленников по всему миру, которые вносят свое ценное время и энергию, чтобы сделать open source pandas возможным. Благодаря все наши участники.

Если вы заинтересованы в участии, пожалуйста, посетите руководство по внесению вклада.

pandas - это NumFOCUS спонсируемый проект. Это поможет обеспечить успех разработки pandas как мирового открытого проекта и делает возможным пожертвовать в проект.

Управление проектом#

Процесс управления, который проект pandas неформально использовал с момента своего создания в 2008 году, формализован в Документы управления проектом. Документы разъясняют, как принимаются решения и как взаимодействуют различные элементы нашего сообщества, включая взаимосвязь между открытой совместной разработкой и работой, которая может финансироваться коммерческими или некоммерческими организациями.

Уэс МакКинни является Пожизненным Доброжелательным Диктатором (BDFL).

Команда разработчиков#

Список членов Основной команды и более подробную информацию можно найти на сайт pandas.

Институциональные партнеры#

Информацию о текущих институциональных партнерах можно найти на страница сайта pandas.

Лицензия#

BSD 3-Clause License

Copyright (c) 2008-2011, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
All rights reserved.

Copyright (c) 2011-2023, Open source contributors.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
  list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice,
  this list of conditions and the following disclaimer in the documentation
  and/or other materials provided with the distribution.

* Neither the name of the copyright holder nor the names of its
  contributors may be used to endorse or promote products derived from
  this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.