Как изменить тип данных столбцов в Pandas

  1. Метод to_numaric для сокрытия столбцов до числовых значений в Пандах
  2. Метод astype() для преобразования одного типа в любой другой
  3. Метод infer_objects() для приведения типа данных столбцов к более конкретному типу

Мы познакомим вас с методом изменения типа данных колонок в Pandas dataframe, а также с такими опциями как to_numaric, as_type и infer objects. Мы также обсудим, как использовать опцию downcasting с to_numaric.

Метод to_numaric для сокрытия столбцов до числовых значений в Пандах

Функция to_numeric() является лучшим способом преобразования одного или нескольких столбцов DataFrame в числовые значения. Он также попытается изменить нецифровые объекты (такие как строки) на целые числа или числа с плавающей точкой, как это уместно.to_numeric() вход может быть последовательностью или столбцом DataFrame. Если некоторые значения не могут быть приведены к числовому типу, то функция to_numaric() позволяет заставить не числовые значения быть NaN.

Код:

# python 3.x
import pandas as pd
s = pd.Series([
    '12', '12', '4.7', 'asad', '3.0'])
print(s)
print('------------------------------')
print(pd.to_numeric(s, errors='coerce'))

Вывод:

0      12
1      12
2     4.7
3    asad
4     3.0
dtype: object
------------------------------
0    12.0
1    12.0
2     4.7
3     NaN
4     3.0
dtype: float64

to_numeric() даст нам по умолчанию либо int64, либо float64 dtype. Мы можем использовать опцию понижения до integer, signed, unsigned, float:

# python 3.x
import pandas as pd
s = pd.Series([-3, 1, -5])
print(s)
print(pd.to_numeric(s, downcast='integer'))

Выход:

0   -3
1    1
2   -5
dtype: int64
0   -3
1    1
2   -5
dtype: int8

Метод astype() для преобразования одного типа в любой другой

Метод astype() позволяет нам четко указать тип, который мы хотим преобразовать. Мы можем перейти от одного типа данных к другому, передавая параметр внутри метода astype().

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

# python 3.x
import pandas as pd
c = [['x', '1.23', '14.2'], 
     ['y', '20', '0.11'],
     ['z', '3', '10']]
df = pd.DataFrame(
    c, 
    columns=['first', 'second', 'third'])
print(df)
df[['second', 'third']] = 
df[['second', 'third']].astype(float)
print('Converting..................')
print('............................')
print(df)

Вывод:

  first second third
0     x   1.23  14.2
1     y     20  0.11
2     z      3    10
Converting..................
............................
  first  second  third
0     x    1.23  14.20
1     y   20.00   0.11
2     z    3.00  10.00

Метод infer_objects() для приведения типа данных столбцов к более конкретному типу

infer_objects()method introduced from Version 0.21.0 of the panda for converting columns of a dataFrame to a more specific data type (soft conversions).

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

# python 3.x
import pandas as pd
df = pd.DataFrame({
    'a': [3, 12, 5], 
    'b': [3.0,2.6,1.1]}, 
     dtype='object')
print(df.dtypes)
df = df.infer_objects()
print('Infering..................')
print('............................')
print(df.dtypes)

Выход:

a    object
b    object
dtype: object
Infering..................
............................
a      int64
b    float64
dtype: object
comments powered by Disqus