0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: python, numpy, pandas, matplotlib, сводные таблицы, группировки, dataframe, split-apply-combine, тип ndarray, block, blockmanager, dict, overhead, values фрейма</p>
1
<p>Теги: python, numpy, pandas, matplotlib, сводные таблицы, группировки, dataframe, split-apply-combine, тип ndarray, block, blockmanager, dict, overhead, values фрейма</p>
2
<p><strong>Pandas</strong>сегодня является чуть ли не<strong>go-to</strong>инструментом для решения аналитических задач. Он предоставляет удобный и понятный широкому кругу исследователей интерфейс манипуляции массивами данных. Давай те же посмотрим, что "под капотом" этой библиотеки и за счёт чего происходит такая эффективная работа с данными?</p>
2
<p><strong>Pandas</strong>сегодня является чуть ли не<strong>go-to</strong>инструментом для решения аналитических задач. Он предоставляет удобный и понятный широкому кругу исследователей интерфейс манипуляции массивами данных. Давай те же посмотрим, что "под капотом" этой библиотеки и за счёт чего происходит такая эффективная работа с данными?</p>
3
<p>Напомним, что<strong>Pandas</strong>- это библиотека Python, которая является мощным инструментом для анализа данных. Пакет даёт возможность строить сводные таблицы, выполнять группировки, предоставляет удобный доступ к табличным данным, а при наличии пакета<strong>matplotlib</strong>даёт возможность рисовать графики на полученных наборах данных.</p>
3
<p>Напомним, что<strong>Pandas</strong>- это библиотека Python, которая является мощным инструментом для анализа данных. Пакет даёт возможность строить сводные таблицы, выполнять группировки, предоставляет удобный доступ к табличным данным, а при наличии пакета<strong>matplotlib</strong>даёт возможность рисовать графики на полученных наборах данных.</p>
4
<h2>Основные возможности библиотеки:</h2>
4
<h2>Основные возможности библиотеки:</h2>
5
<p>- Объект<strong>DataFrame</strong>для манипулирования индексированными массивами двумерных данных; - Инструменты для обмена данными между структурами в памяти и файлами различных форматов; - Встроенные средства совмещения данных и способы обработки отсутствующей информации; - Переформатирование наборов данных, в том числе создание сводных таблиц; - Срез данных по значениям индекса, расширенные возможности индексирования, выборка из больших наборов данных; - Вставка и удаление столбцов данных; - Возможности группировки позволяют выполнять трёхэтапные операции типа "разделение, изменение, объединение" (англ.<strong>split-apply-combine</strong>); - Слияние и объединение наборов данных; - Иерархическое индексирование позволяет работать с данными высокой размерности в структурах меньшей размерности; - Работа с временными рядами: формирование временных периодов и изменение интервалов и т. д.; - Ссылка на<a>github</a>.</p>
5
<p>- Объект<strong>DataFrame</strong>для манипулирования индексированными массивами двумерных данных; - Инструменты для обмена данными между структурами в памяти и файлами различных форматов; - Встроенные средства совмещения данных и способы обработки отсутствующей информации; - Переформатирование наборов данных, в том числе создание сводных таблиц; - Срез данных по значениям индекса, расширенные возможности индексирования, выборка из больших наборов данных; - Вставка и удаление столбцов данных; - Возможности группировки позволяют выполнять трёхэтапные операции типа "разделение, изменение, объединение" (англ.<strong>split-apply-combine</strong>); - Слияние и объединение наборов данных; - Иерархическое индексирование позволяет работать с данными высокой размерности в структурах меньшей размерности; - Работа с временными рядами: формирование временных периодов и изменение интервалов и т. д.; - Ссылка на<a>github</a>.</p>
6
<h2>Что же внутри?</h2>
6
<h2>Что же внутри?</h2>
7
<p>На самом деле, основная структура данных в<strong>Pandas</strong>-<strong>DataFrame</strong>- тесно завязана на использовании функционала<strong>NumPy</strong>и, в частности, типа<strong>ndarray</strong>.</p>
7
<p>На самом деле, основная структура данных в<strong>Pandas</strong>-<strong>DataFrame</strong>- тесно завязана на использовании функционала<strong>NumPy</strong>и, в частности, типа<strong>ndarray</strong>.</p>
8
<p>Колонки из фрейма группируются по типу и хранятся вместе в виде<strong>ndarray</strong>’ев. Каждая такая группа называется<strong>Bloc</strong>k’ом. Само собой, в<strong>ndarray</strong>нет никаких именованных осей и индексов, поэтому, чтобы транслировать обращения к фрейму в действия с реальными данными, существует<strong>BlockManager</strong>, через который проходят все запросы.</p>
8
<p>Колонки из фрейма группируются по типу и хранятся вместе в виде<strong>ndarray</strong>’ев. Каждая такая группа называется<strong>Bloc</strong>k’ом. Само собой, в<strong>ndarray</strong>нет никаких именованных осей и индексов, поэтому, чтобы транслировать обращения к фрейму в действия с реальными данными, существует<strong>BlockManager</strong>, через который проходят все запросы.</p>
9
<p>Такая архитектура сложилась исторически. Изначально данные хранились в обычных<strong>dict</strong>’ах, но, как видно, многое с тех пор изменилось. У такого подхода есть плюсы и минусы.</p>
9
<p>Такая архитектура сложилась исторически. Изначально данные хранились в обычных<strong>dict</strong>’ах, но, как видно, многое с тех пор изменилось. У такого подхода есть плюсы и минусы.</p>
10
<p>В плюсы можно записать использование функционала<strong>NumPy</strong>, который себя прекрасно зарекомендовал, а<strong>ndarray</strong>’и, как известно, хорошо оптимизированы и отлично подходят для манипуляций с числами.</p>
10
<p>В плюсы можно записать использование функционала<strong>NumPy</strong>, который себя прекрасно зарекомендовал, а<strong>ndarray</strong>’и, как известно, хорошо оптимизированы и отлично подходят для манипуляций с числами.</p>
11
<p>С другой стороны,<strong>BlockManager</strong>создаёт<strong>overhead</strong>на любые операции доступа к данным, а из-за "кусочного" хранения любое добавление строк в<strong>DataFrame</strong>ведёт к копированию и расширению множества блоков.</p>
11
<p>С другой стороны,<strong>BlockManager</strong>создаёт<strong>overhead</strong>на любые операции доступа к данным, а из-за "кусочного" хранения любое добавление строк в<strong>DataFrame</strong>ведёт к копированию и расширению множества блоков.</p>
12
<p>Как следствие, в некоторых случаях для повышения производительности имеет смысл работать непосредственно с<strong>values</strong>фрейма и не добавлять строки во фрейм по одной, а сразу сливать большие фреймы.</p>
12
<p>Как следствие, в некоторых случаях для повышения производительности имеет смысл работать непосредственно с<strong>values</strong>фрейма и не добавлять строки во фрейм по одной, а сразу сливать большие фреймы.</p>
13
13