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