Преобразование Dataframe в Series — методы и примеры

В программировании на языке Python очень часто возникает необходимость работать с данными в виде таблиц или фреймов данных. Одной из наиболее популярных библиотек для работы с табличными данными является pandas. Эта библиотека предоставляет удобные инструменты для чтения, обработки и анализа данных.

Одним из важных методов класса DataFrame в pandas является преобразование данных в объекты класса Series. Серия (Series) — это одномерная маркированная структура данных, которая принимает на вход список значений и подписывает каждое значение соответствующим индексом.

Процесс преобразования DataFrame в Series может быть полезен в различных случаях. Например, когда нужно применить операции только к одной колонке данных или когда требуется решить задачу, которая может быть решена с помощью функций, работающих только с Series.

В данной статье мы рассмотрим различные методы преобразования Dataframe в Series и их примеры использования. Мы узнаем, как преобразовать отдельную колонку данных в Series, как преобразовать всю таблицу в Series с помощью объединения, а также рассмотрим метод melt для преобразования широкого формата данных в длинный.

Методы преобразования Dataframe в Series

1. Метод stack()

Метод stack() позволяет преобразовать столбцы Dataframe в строки. В результате получается Series, в котором индексы являются иерархическими, состоящими из исходных индексов строк и столбцов. Ниже приведен пример кода:

import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
series = df.stack()
print(series)

Результат выполнения кода:

0  A    1
B    4
C    7
1  A    2
B    5
C    8
2  A    3
B    6
C    9
dtype: int64

2. Метод unstack()

Метод unstack() выполняет обратную операцию – преобразует строки Series в столбцы Dataframe. Данный метод доступен только для иерархических индексов. Пример кода:

import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
series = df.stack()
df = series.unstack()
print(df)

Результат выполнения кода:

   A  B  C
0  1  4  7
1  2  5  8
2  3  6  9

3. Метод to_series()

Метод to_series() преобразует Dataframe в один Series с использованием указанной оси и имен столбцов в качестве меток. Пример использования:

import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
series = df.to_series()
print(series)

Результат выполнения кода:

A  0    1
1    2
2    3
B  0    4
1    5
2    6
C  0    7
1    8
2    9
dtype: int64

4. Метод set_index()

Метод set_index() преобразует один или несколько столбцов в индекс Dataframe. В результате получается Series с указанным столбцом или столбцами в качестве индекса. Пример кода:

import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
series = df.set_index('A')
print(series)

Результат выполнения кода:

   B  C
A
1  4  7
2  5  8
3  6  9

Это лишь некоторые из методов преобразования Dataframe в Series в библиотеке Pandas. Выбор метода зависит от конкретных задач и требований к структуре данных. Используя сочетание этих методов, можно легко и гибко преобразовывать данные для дальнейшего анализа и обработки.

Метод 1: to_series()

Метод to_series() представляет один из способов преобразования объекта типа DataFrame в объект типа Series в библиотеке pandas. Этот метод позволяет нам получить отдельную колонку из DataFrame в виде Series, что может быть полезно при решении различных задач анализа данных.

Преобразование DataFrame в Series методом to_series() осуществляется путем выбора определенной колонки или столбца из DataFrame при помощи оператора указания имени этой колонки в качестве аргумента метода. Результатом выполнения метода является объект типа Series, содержащий значения выбранной колонки.

Пример использования метода to_series():


import pandas as pd
# Создание DataFrame
data = {'Страна': ['Россия', 'США', 'Китай', 'Индия'],
'Население': [146599183, 331002651, 1444216107, 1380004385]}
df = pd.DataFrame(data)
# Преобразование колонки 'Население' в Series
series = df['Население'].to_series()
print(series)

Результат выполнения данного кода будет:


0 146599183
1 331002651
2 1444216107
3 1380004385
Name: Население, dtype: int64

Как видно из примера, при преобразовании колонки ‘Население’ в Series методом to_series() получился объект типа Series, содержащий значения этой колонки, а также индексы-метки.

Метод 2: stack()

Метод stack() в pandas позволяет преобразовывать DataFrame в Series путем «схлопывания» колонок в индексы. Данный метод полезен, когда необходимо провести анализ и манипуляции с данными в более удобной форме.

После применения метода stack(), каждая колонка DataFrame будет преобразована в уровень индексов в новой Series. Исходные индексы станут мультииндексами, соответствующими колонкам исходного DataFrame.

Пример:

import pandas as pd
data = {'Город': ['Москва', 'Санкт-Петербург', 'Новосибирск'],
'Температура': [16.4, 17.2, 15.8],
'Влажность': [48, 55, 63]}
df = pd.DataFrame(data)
df_stacked = df.stack()
print(df_stacked)
0  Город            Москва
Температура       16.4
Влажность           48
1  Город    Санкт-Петербург
Температура       17.2
Влажность           55
2  Город       Новосибирск
Температура       15.8
Влажность           63
dtype: object

Как видно из примера, после применения метода stack() получается новая Series с мультииндексами, где первый уровень индексов соответствует исходным индексам DataFrame, а второй уровень индексов отражает колонки исходного DataFrame.

Примеры преобразования Dataframe в Series

Пример 1: Преобразование одного столбца Dataframe в Series

Один из самых простых способов преобразования Dataframe в Series – это преобразование одного столбца Dataframe в Series. Для этого нужно указать имя столбца в квадратных скобках после Dataframe:

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3, 4, 5]})
series = df['A']
print(series)
0    1
1    2
2    3
3    4
4    5
Name: A, dtype: int64

Пример 2: Преобразование нескольких столбцов Dataframe в Series

Если нужно преобразовать несколько столбцов Dataframe в один объект Series, можно использовать метод stack(). Он преобразует столбцы Dataframe в индексированный Series с мультииндексом:

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3, 4, 5],
'B': [6, 7, 8, 9, 10]})
series = df.stack()
print(series)
0  A     1
B     6
1  A     2
B     7
2  A     3
B     8
3  A     4
B     9
4  A     5
B    10
dtype: int64

Пример 3: Преобразование Dataframe в одномерный Series

Если нужно преобразовать всю Dataframe в одномерный Series, можно использовать метод squeeze(). Он преобразует Dataframe в Series с индексом:

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3, 4, 5],
'B': [6, 7, 8, 9, 10]})
series = df.squeeze()
print(series)
0     1
1     2
2     3
3     4
4     5
5     6
6     7
7     8
8     9
9    10
dtype: int64

Это лишь некоторые из возможных примеров преобразования Dataframe в Series. В зависимости от конкретной ситуации можно выбрать наиболее подходящий метод преобразования.

Пример 1: Преобразование по одному столбцу

Рассмотрим следующий пример:

import pandas as pd

# Создание DataFrame
data = {'Страна': ['Россия', 'Германия', 'Франция', 'Италия'],
'Столица': ['Москва', 'Берлин', 'Париж', 'Рим'],
'Население': [144.5, 82.9, 66.9, 60.4]}
df = pd.DataFrame(data)

# Преобразование в Series
series = df['Страна'].get(0)

print(series)

Результат:

Россия

В данном примере мы создаем DataFrame, содержащий информацию о разных странах. Затем мы преобразуем столбец «Страна» в Series, выбрав первый элемент. На выходе получаем название первой страны — «Россия».

Таким образом, преобразование по одному столбцу позволяет удобно работать с отдельными значениями в DataFrame, обрабатывать и анализировать их по отдельности.

Пример 2: Преобразование по нескольким столбцам

Предположим, у нас есть DataFrame, содержащий информацию о студентах в разных группах и их оценках по различным предметам. Мы хотим создать Series, содержащий среднюю оценку каждой группы.

Для этого мы можем использовать метод groupby(), который позволяет сгруппировать данные по одному или нескольким столбцам и применить агрегатные функции к группам. Затем мы можем использовать агрегатную функцию mean(), чтобы получить среднюю оценку каждой группы.

Вот пример кода:

import pandas as pd
# Создание DataFrame
data = {'Группа': ['Группа A', 'Группа A', 'Группа B', 'Группа B'],
'Студент': ['Студент 1', 'Студент 2', 'Студент 3', 'Студент 4'],
'Предмет': ['Математика', 'Физика', 'Математика', 'Физика'],
'Оценка': [4, 5, 3, 4]}
df = pd.DataFrame(data)
# Группировка по столбцам 'Группа' и 'Предмет' и вычисление средней оценки
series = df.groupby(['Группа', 'Предмет'])['Оценка'].mean()
print(series)

Результат выполнения программы будет выглядеть следующим образом:

Группа     Предмет
Группа A   Математика    4.0
Физика        5.0
Группа B   Математика    3.0
Физика        4.0
Name: Оценка, dtype: float64

В итоге мы получили Series, содержащую средние оценки каждой группы по каждому предмету.

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

Оцените статью