Данные в pandas могут быть представлены в виде двух основных сущностей. Это два разных вида представления данных, но на самом деле один из этих типов - Датафрейм просто состоит из нескольких наборов данных другого вида - Серий.
Серия
Series (Серия) - это ряд данных - [1, 2, 3, 22, 24, 2,] или одномерный массив данных с привязанными метками. Наиболее близко по смыслу сравнение с данными отраженными в одном столбце Excel, но есть существенное различие, каждая единица данных имеет свою метку - индекс. При отображении Series индекс всегда будет находиться слева, а его значения справа.
На представленной иллюстрации вы видите индекс (a, b, c, d, e, f) и значения (10, 2, 32, 17, 16, 31). Значения индекса могут быть любыми: цифровыми, буквенными, смешанными, главное чтобы они были уникальными и неповторяющимися. Значения самой серии, тоже могут быть любыми и они могут повторяться, это же данные. Внизу, мы видим что серия состоит из числовых целочисленных значений (int64). Серия может состоять только из одного типа значений. Какие типы значений бывают, будет рассмотрено ниже.
Датафрейм
DataFrame (Датафрейм) - это таблица, такая же как таблица в эксель. Датафрейм является основной структурой данных в Pandas. По большей части вы будете работать с табличными данными, это и будут датафреймы. Каждый датафрейм состоит из Series (серий). То есть несколько серий (рядов) данных формируют таблицу - датафрейм. Как правило серии это столбцы данных в вашей таблице. Все серии в одном датафрейме имеют один общий индекс - индекс датафрейма.
Все строки датафрейма связаны в единый массив индексом датафрейма, это индексация по вертикали (по строкам). По горизонтали (по столбцам), тоже есть индекс и это индекс названия серий - столбцов датафрейма.
Также на иллюстрации вы видите общий индекс датафрейма (0, 1, 2, 3, 4). Обратите внимание, в Python все списки и индексы начинаются с ноля. Соответственно и в Pandas все индексы созданные автоматически будут начинаться с ноля. Учитывайте это когда будете обращаться к строке по ее индексу, первая строка всегда будет с индексом ноль.
Столбцы датафрейма (ser1, ser2 …), это упорядоченные по индексу столбцов серии. Наименования столбцов, также как и значения индекса не должны повторяться, поскольку это тоже индекс.
Если вы из датафрейма выделите отдельный столбец, то он будет у вас в виде объекта Series, а не объекта DataFrame. Необходимо четко разделять и различать эти два разных объекта представления данных в Pandas. Структурно они разные и соответственно у каждого из них есть свои методы обработки данных.
Понимая как устроена структура данных, вы всегда будете знать как обратиться и вытащить данные из нужной вам строки, столбца или ячейки и обработать их.
Типы данных
Понимание типов данных содержащихся в том или ином столбце необходимо для того, чтобы правильно производить операции над данными. Метод примененный к неверному типу данных вызовет ошибку, либо сработает неверно.
Посмотрим на описание типов данных нашего датафрейма. Для этого достаточно применить к датафрейму метод info()
df.info()
Метод описывает типы данных по каждому столбцу (объекту Series) датафрейма. Обратите внимание в каждом столбце - объекте Series может быть только один тип данных. Смешение в одном столбце разных типов данных, к примеру object и int64 не допускается, это вызовет ошибку.
- в первом столбце “ser1” тип данных - int64;
- во втором столбце “ser2” - тип float64;
- в третьем столбце “ser3” - тип object;
- в четвертом столбце “ser4” - тип bool;
Основные типы данных используемых в Pandas:
- object - Используется для хранения текстовых или строковых данных. Данные в этом типе невозможно вычислить и произвести над ними какие либо операции, кроме как операций с текстом.
- int64 - целочисленные данные (2, 4, 258, 5638). Вычисляемый тип данных, можно проводить любые числовые операции. Точность данных всегда будет округляться до целого числа, без запятой.
- float64 - числа с плавающей точкой. Любые данные с точкой (5.0, 2.256, 0.235 и т.д.) вычисляемый тип данных с большой точностью.
- bool - так называемый булевый тип данных. Принимает только два значения True/False, Истина или Ложь;
- datetime64 - тип для значений даты и времени. Вычисляемый тип данных позволяет проводить операции с данными в виде дат. формат отображается так - “2028-08-17 00:00:00”;
- timedelta[ns] - тип для временных промежутков, разницы между двумя данными с типом datetime64;
- category - категориальный тип данных. Категории могут задаваться в произвольном виде.
Теперь вы знаете из чего состоят и как выглядят данные, которые обрабатываются Pandas. Кажется что это глубоко техническая и не нужная информация, но когда у вас что то не получается и вы не понимаете почему, посмотрите какой тип данных стоит в столбце который вы хотите обработать. Зачастую такое понимание технических тонкостей экономит кучу времени при обработке и очистке данных.
Чтобы узнать еще больше об обработке данных подписывайся на канал.
Если вы не поняли чем таком интересном я пишу, читайте начальные статьи:
Не хватает возможностей Excel? Возьмите Pandas!
Установка Anaconda Navigator и Jupyter lab