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 здесь
Последнее обновление