Pandas: Преобразование значений столбца в строки

В этом руководстве вы узнаете, как использовать библиотеку Pandas в Python для преобразования значений столбца в строковой тип данных. Вы узнаете, как преобразовать целые числа и числа с плавающей запятой Pandas в строки. Также вы узнаете, как строки эволюционировали в Pandas и преимущества использования строкового типа данных Pandas. Вы освоите четыре разных способа преобразования столбца Pandas в строки и как преобразовать каждый столбец датафрейма Pandas в строку.

Быстрый ответ: используйте pd.astype('string')

import pandas as pd

df = pd.DataFrame({
    'Name': ['Nik', 'Jane', 'Matt', 'Kate', 'Clark'],
    'Age': [30, 31, 29, 33, 43],
    'Income': [70000, 72000, 83000, 90000, 87000]
})

df['Age'] = df['Age'].astype('string')
print(df.dtypes)

# Возвращает:
# Name      object
# Age       string
# Income     int64
# dtype: object

Оглавление

Загрузка образца фрейма данных

Чтобы следовать за учебником, вы можете загрузить ту же таблицу данных, указанную ниже. Мы загрузим таблицу данных, содержащую три разных столбца: один из которых загрузится как строка, а два других загрузятся как целые числа.

Сначала загрузим датафрейм, затем выведем его первые пять записей с помощью метода .head()

Давайте начнем:

import pandas as pd

df = pd.DataFrame({
    'Name':['Nik', 'Jane', 'Matt', 'Kate', 'Clark'],
    'Age': [30, 31, 29, 33, 43],
    'Income':[70000, 72000, 83000, 90000, 870000]
})

print('df head:')
print(df.head())

Давайте начнем учебник с изучения того, как Pandas работает со строковыми данными.

Что такое строковый тип данных в Pandas?

Чтобы изучить, как Pandas работает со строковыми данными, мы можем использовать метод .info(), который выведет информацию о датафрейме, включая типы данных для каждого столбца.

Давайте посмотрим, какие бывают типы данных:

print(df.info())

# Возвращает:
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 5 entries, 0 to 4
# Data columns (total 3 columns):
#  #   Column  Non-Null Count  Dtype
# ---  ------  --------------  -----
#  0   Name    5 non-null      object
#  1   Age     5 non-null      int64
#  2   Income  5 non-null      int64
# dtypes: int64(2), object(1)
# memory usage: 248.0+ bytes

По умолчанию, Pandas сохраняет строки, используя тип данных object. Тип данных object используется для строк и смешанных типов данных, но это не очень явно.

Начиная с версии 1.0, в Pandas появился специальный тип данных string. Хотя этот тип данных пока не предлагает явных улучшений в скорости или памяти, команда разработчиков Pandas указала, что это произойдет в будущем.

Из-за этого в данном руководстве будет использоваться тип данных string. Если вы используете версию ниже 1.0, пожалуйста, замените string на str во всех случаях.

Давайте начнем с использования предпочтительного метода для преобразования столбца в строку с помощью Pandas.

Преобразование значений столбцов Pandas Dataframe в строку с помощью astype

Pandas предоставляет метод для работы со столбцами (сериями) .astype(), который позволяет изменить тип данных.

Во многих руководствах вам предложат использовать 'str' в качестве аргумента. Это верно для версий Pandas ниже 1.0, но если вы используете версию 1.0 или выше, используйте 'string' .

Использование типа данных string вместо object обеспечит значительные улучшения в будущем.

Давайте рассмотрим, как мы можем преобразовать столбец Pandas в строки, используя метод .astype() .

df['Age'] = df['Age'].astype('string')
print(df.info())

Мы видим, что наш столбец Age, который ранее был сохранен как int64, теперь хранится в формате string .

В следующем разделе вы узнаете, как использовать метод .map(), чтобы преобразовать значения столбца Pandas.

Преобразование значений столбцов Pandas Dataframe в строку с помощью map

Аналогично методу серии Pandas .astype(), вы можете использовать метод .map(), чтобы преобразовать столбец Pandas в строки

Давайте посмотрим:

import pandas as pd

df = pd.DataFrame({
    'Name':['Nik', 'Jane', 'Matt', 'Kate', 'Clark'],
    'Age': [30, 31, 29, 33, 43],
    'Income':[70000, 72000, 83000, 90000, 870000]
})

df['Age'] = df['Age'].map(str)
print(df.info())

Здесь мы видим, что при использовании метода .map() мы не можем использовать тип данных string. Из-за этого данные сохраняются в типе object. Поэтому я не рекомендую этот подход, если вы используете версию выше 1.0.

В следующем разделе вы узнаете, как использовать метод .apply() для преобразования данных столбца Pandas в строки.

Преобразуйте значения столбцов Pandas Dataframe в строку с помощью apply

Аналогично вышеуказанному методу, мы можем использовать метод .apply() для преобразования значений столбца Pandas в строки. Это также имеет те же ограничения, так как мы не можем преобразовать их в тип данных string, а только в тип данных object .

Давайте посмотрим, как это выглядит:

import pandas as pd

df = pd.DataFrame({
    'Name':['Nik', 'Jane', 'Matt', 'Kate', 'Clark'],
    'Age': [30, 31, 29, 33, 43],
    'Income':[70000, 72000, 83000, 90000, 870000]
})

df['Age'] = df['Age'].apply(str)
print(df.info())

В следующем разделе вы узнаете, как использовать метод value.astype() для преобразования значений столбца датафрейма в строки.

Преобразование значений столбцов Pandas Dataframe в строку с помощью values.astype

Наконец, мы можем использовать метод .values.astype(), чтобы напрямую преобразовать значения столбца в строки с помощью Pandas.

Давайте посмотрим, как это выглядит:

import pandas as pd

df = pd.DataFrame({
    'Name':['Nik', 'Jane', 'Matt', 'Kate', 'Clark'],
    'Age': [30, 31, 29, 33, 43],
    'Income':[70000, 72000, 83000, 90000, 870000]
})

df['Age'] = df['Age'].values.astype(str)
print(df.info())

В следующем разделе вы узнаете, как использовать .applymap(), чтобы преобразовать все столбцы в Pandas DataFrame в строки.

Преобразуйте все столбцы Pandas Dataframe в строку с помощью Applymap

В этом последнем разделе вы узнаете, как использовать метод .applymap(), чтобы преобразовать все столбцы в Pandas DataFrame в строки.

Давайте посмотрим:

import pandas as pd

df = pd.DataFrame({
    'Name':['Nik', 'Jane', 'Matt', 'Kate', 'Clark'],
    'Age': [30, 31, 29, 33, 43],
    'Income':[70000, 72000, 83000, 90000, 870000]
})

df = df.applymap(str)
print(df.info())

Если, вместо этого, мы хотим преобразовать типы данных в новый тип данных string, то мы можем пройти по каждому столбцу в цикле. Это будет выглядеть так:

import pandas as pd

df = pd.DataFrame({
    'Name':['Nik', 'Jane', 'Matt', 'Kate', 'Clark'],
    'Age': [30, 31, 29, 33, 43],
    'Income':[70000, 72000, 83000, 90000, 870000]
})

for col in df.columns:
    df[col] = df[col].astype('string')

print(df.info())

Заключение

В этом уроке вы узнали, как использовать Python Pandas для преобразования значений столбца в строки. Вы узнали о различиях между различными способами хранения строк в Pandas. Вы также узнали четыре разных способа преобразования значений в строковые типы. Наконец, вы научились преобразовывать все столбцы dataframe в строковые типы за один раз.

Чтобы узнать больше о том, как Pandas обрабатывает строки, ознакомьтесь с документацией API здесь

Last updated