El objeto DataFrame es uno de los elementos clave de la librería Pandas. En esta entrada vamos a ver las opciones que existen para crear un DataFrame vacío y agregar datos. Lo que nos enseñara además algunos de los métodos que existen para modificar el contenido de un DataFrame.
Creación de un DataFrame vacío
Un DataFrame vacío se puede crear utilizando el constructor DataFrame
de Pandas sin ningún parámetro. Algo que nos devuelve un objeto sin columnas ni índices.
import pandas as pd df = pd.DataFrame()
Empty DataFrame Columns: [] Index: []
Ahora para agregar datos, solamente se tiene que asignar a una nueva serie los datos que deseemos. Por ejemplo, se puede crear un DataFrame con nombre, apellidos y géneros de unos usuarios.
df['first_name'] = ['Josy', 'Vaughn', 'Neale', 'Teirtza'] df['last_name'] = ['Clarae', 'Halegarth', 'Georgievski', 'Teirtza'] df['gender'] = ['Female', 'Male', 'Male', 'Female']
first_name last_name gender 0 Josy Clarae Female 1 Vaughn Halegarth Male 2 Neale Georgievski Male 3 Teirtza Teirtza Female
Como se puede ver en el ejemplo, no es necesario definir columnas antes de usar estas, algo es muy útil cuando se desea agregar nuevas series a un DataFrame existente.
Creación de un DataFrame vacío con columnas
Quizás en la mayoría de los casos no vamos a querer partir de un DataFrame completamente vacío. Sino que ya conoceremos el nombre de las series que queremos usar en este. Así se puede crear un DataFrame vacío con columnas indicando mediante el parámetro columns
los nombres de estas. Por ejemplo, para el caso anterior se puede crear.
df = pd.DataFrame(columns=['first_name', 'last_name', 'gender'])
Empty DataFrame Columns: [first_name, last_name, gender] Index: []
Ahora, se puede agregar registro a registro al DataFrame utilizando para ellos el método append
. Un método al que es necesario pasarle un diccionario con los valores e indicar la opción ignore_index
a verdadero. Así se puede agregar registros al DataFrame de la siguiente manera.
df = df.append({'first_name': 'Josy', 'last_name':'Clarae', 'gender':'Female'}, ignore_index=True) df = df.append({'first_name': 'Vaughn', 'last_name':'Halegarth', 'gender':'Male'}, ignore_index=True)
first_name last_name gender 0 Josy Clarae Female 1 Vaughn Halegarth Male
Creación de un DataFrame vacío con columnas e índices
También es posible crear un DataFrame vacío en Pandas con las columnas e índices ya asignados. En este caso todos los registros del DataFrame serán NaN
, ya que no tendrán ningún valor asignado.
df = pd.DataFrame(columns=['first_name', 'last_name', 'gender'], index=range(3))
first_name last_name gender 0 NaN NaN NaN 1 NaN NaN NaN 2 NaN NaN NaN
En este caso la forma más fácil de asignar los registros es mediante la propiedad iloc
de los DataFrames. Una propiedad con la que se puede asignar fila a fila utilizando listas o tuplas. Así se puede rellenar los datos del objeto que acabamos de crear de la siguiente manera.
df.iloc[0] = ('Josy', 'Clarae', 'Female') df.iloc[1] = ['Vaughn', 'Halegarth', 'Male'] df.iloc[2] = ('Neale', 'Georgievski', 'Male')
first_name last_name gender 0 Josy Clarae Female 1 Vaughn Halegarth Male 2 Neale Georgievski Male
Donde se puede ver que asignar una lista o una tupla a las filas es algo indiferente a efectos prácticos.
Conclusiones
En la entrada de hoy hemos visto cómo crear un DataFrame vacío y agregar datos en Pandas de tres modos diferentes. Creando un DataFrame vacío, un DataFrame con columnas y un DataFrame con columnas e índices. Agregando además los datos de una forma diferente en cada caso. ¿Cuál de los tres métodos os parece más adecuado? Podéis dejar vuestras opiniones en los comentarios.