¿Cómo convertir automáticamente a los mejores tipos de datos en Pandas?

Prerrequisito: Pandas

En pandas, los tipos de datos por defecto son int, float y objects. Cuando cargamos o creamos cualquier serie o marco de datos en pandas, pandas por defecto asigna el tipo de datos necesario a las columnas y series. 

Usaremos la función pandas convert_dtypes() para convertir automáticamente los tipos de datos asignados por defecto al mejor tipo de datos. Hay un gran beneficio de usar convert_dtypes(): admite un nuevo tipo para valores faltantes pd.NA junto con NaN. Es compatible con la versión pandas 1.1.4.

Sintaxis:

Para la serie:

series_name.convert_dtypes()

Para marco de datos:

dataframe_name.convert_dtypes().dtypes

La siguiente es la implementación tanto para la serie como para el marco de datos:

Convertir el tipo de datos de una serie:

  • Módulo de importación
  • crear una serie
  • Ahora use la función convert_dtypes() para convertir automáticamente el tipo de datos

Ejemplo:

Python3

# importing packages
import pandas as pd
  
# creating a series
s = pd.Series(['Geeks', 'for', 'Geeks'])
  
# printing the series
print("SERIES")
print(s)
  
print()
  
# using convert_dtypes() function
print("AFTER DATATYPE CONVERSION")
print(s.convert_dtypes())

Producción:

Convertir el tipo de datos de un marco de datos:

  • Módulo de importación
  • Crear marco de datos
  • Comprobar tipo de datos
  • Convierta el tipo de datos usando la función convert_dtypes().dtypes

El tipo de datos de las columnas se cambia en consecuencia. Pero el tipo de datos del marco de datos seguirá siendo un objeto porque contiene varias columnas y cada columna tiene un tipo de datos diferente.

Ejemplo:

Python3

import pandas as pd
import numpy as np
  
# creating a dataframe
df = pd.DataFrame({"Roll_No.": ([1, 2, 3]),
                   "Name": ["Raj", "Ritu", "Rohan"],
                   "Result": ["Pass", "Fail", np.nan],
                   "Promoted": [True, False, np.nan],
                   "Marks": [90.33, 30.6, np.nan]})
  
# printing the dataframe
print("PRINTING DATAFRAME")
display(df)
  
# checking datatype
print()
print("PRINTING DATATYPE")
print(df.dtypes)
  
# converting datatype
print()
print("AFTER CONVERTING DATATYPE")
print(df.convert_dtypes().dtypes)

Producción:

Crear el marco de datos a través de la serie y especificar el tipo de datos:

  • Módulo de importación
  • Cree un marco de datos a través de series y especifique el tipo de datos junto con él
  • Comprobar tipo de datos
  • Convertir usando la función convert_dtypes().dtypes

Ejemplo:

Python3

import pandas as pd
import numpy as np
  
# Creating the Data frame through series
# and specifying datatype along with it
df = pd.DataFrame({"Column_1": pd.Series([1, 2, 3], dtype=np.dtype("int32")),
                   # Column_1 datatype is int32
                     
                   "Column_2": pd.Series(["Apple", "Ball", "Cat"], 
                                         dtype=np.dtype("object")),
                   # Column_2 datatype is 0
                     
                   "Column_3": pd.Series([True, False, np.nan], 
                                         dtype=np.dtype("object")),
                   # Column_3 datatype is 0
                     
                   "Column_4": pd.Series([10, np.nan, 20], 
                                         dtype=np.dtype("float")),
                   # Column_4 datatype is float
                     
                   "Column_5": pd.Series([np.nan, 100.5, 200],
                                         dtype=np.dtype("float"))})
                   # Column_5 datatype is float
  
# printing dataframe
print("PRINTING DATAFRAME")
display(df)
  
# checking datatype
print()
print("CHECKING DATATYPE")
print(df.dtypes)
  
# convert datatype
print()
print("AFTER DATATYPE CONVERSION")
print(df.convert_dtypes().dtypes)

Producción:

Publicación traducida automáticamente

Artículo escrito por neelutiwari y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *