En Python, ya sea para minería de datos o trabajo con grandes volúmenes de información estructurada, el procesamiento se realiza comúnmente utilizando funciones y estructuras de datos de la biblioteca pandas. En este post nos vamos a centrar en dos estructuras de datos clave de esta librería, las series y los dataframes.
Este es el tercer post de una serie donde hemos venido hablando de estructuras de datos aplicadas en Python. Si te has perdido el contenido anterior lo puedes ver aquí.
Series
En la biblioteca pandas, una Serie es un array unidimensional de valores para datos homogéneos. Podemos visualizar una Serie como una única columna en una hoja de cálculo, la cual contiene varios valores de una variable específica. En esencia, una Serie en pandas es utilizada para representar y manipular información unidimensional de manera eficiente.
import pandas as pd
personaje = pd.Series(['Jack',"Frost",16,True])
print(personaje)
# 0 Jack
# 1 Frost
# 2 16
# 3 True
En las estructuras de datos basadas en Series de pandas, es importante destacar el término “axis“(eje) que se utiliza para representar una secuencia de valores en una dimensión específica. La Serie tiene solo eje 0 debido a que es unidimensional. En la siguiente sección, exploraremos cómo se aplica este concepto de eje a un DataFrame.
Dataframe
Un DataFrame se construye sobre la estructura de datos de la Serie. Se almacena como datos tabulares bidimensionales y se utiliza para procesar datos estructurados de manera tradicional. Puedes pensar en un DataFrame como una tabla con filas y columnas, similar a una hoja de cálculo. La información se organiza en una cuadrícula donde cada fila representa una observación o registro, y cada columna representa una variable o característica específica.
En este contexto un DataFrame ofrece una manera eficiente y flexible de trabajar con conjuntos de datos complejos, ya que cada columna es esencialmente una Serie, permite aplicar operaciones y análisis de datos de manera coherente en toda la estructura.
pilares = pd.DataFrame([
['1', 'Kyojuru Rengoku', 'Llama'],
['2', 'Muichiro Tokito', 'Niebla'],
['3', 'Mitsuri Kanroji', 'Amor']])
pilares.columns = ['id', 'nombre', 'pilar']
print(pilares)
id | nombre | pilar | |
0 | 1 | Kyojuru Rengoku | Llama |
1 | 2 | Muichiro Tokito | Niebla |
2 | 3 | Mitsuri Kanroji | Amor |
En el código anterior, df.columns es una lista que especifica los nombres de las columnas. En un DataFrame, una sola columna o fila se denomina un eje.
Entender y manipular los ejes es fundamental al trabajar con DataFrames, ya que proporciona la capacidad de acceder, indexar y realizar operaciones a lo largo de filas o columnas de manera eficiente.
La selección de características es esencial para mejorar la eficiencia y evitar problemas como la redundancia y la dimensionalidad excesiva. En lugar de utilizar todas las características disponibles, es común seleccionar un subconjunto relevante que contribuya significativamente al rendimiento del modelo. Puedes recuperar una columna específica por su nombre, lo cual se ilustra en el siguiente fragmento de código. Este enfoque permite trabajar de manera más selectiva con las características necesarias para una etapa particular del algoritmo, mejorando así la eficacia y la interpretación.
pilares[['id','nombre']]
id | nombre | |
0 | 1 | Kyojuru Rengoku |
1 | 2 | Muichiro Tokito |
2 | 3 | Mitsuri Kanroji |
La disposición de una columna en un DataFrame es determinística, lo que significa que su posición está fijada de manera predecible. Puedes recuperar una columna específica no solo por su nombre, como se mencionó anteriormente, sino también por su posición dentro del DataFrame.
Para hacer esto, puedes utilizar la notación de corchetes y proporcionar el índice numérico de la columna que deseas recuperar. Es decir, la posición de la columna en el DataFrame. Por ejemplo:
pilares.iloc[:,2]
# 0 Llama
# 1 Niebla
# 2 Amor
En este caso, iloc
es un método que se utiliza para la indexación basada en ubicación en pandas. La expresión [:, 2]
significa que estás seleccionando todas las filas (:
) de la tercera columna (2
).
Este enfoque de recuperación por posición es útil en situaciones en las que conoces el orden específico de las columnas y prefieres referenciarlas por su posición numérica en lugar de su nombre. Sin embargo, es crucial tener en cuenta que esta metodología depende del orden en el que se han definido las columnas en el DataFrame, ya que esa secuencia determina las posiciones.
Cada fila en un DataFrame corresponde a un punto de datos en nuestro espacio de problemas. Si deseamos crear un subconjunto específico de los elementos de datos en nuestro espacio de problemas, es necesario realizar la selección de filas.
La selección de filas en un DataFrame es fundamental para trabajar con conjuntos de datos extensos y centrarse en segmentos particulares que son relevantes para nuestro análisis o aplicación de algoritmos de aprendizaje automático. Hay varias formas de llevar a cabo la selección de filas en pandas:
pilares.iloc[1:2,:]
id | nombre | pilar | |
1 | 2 | Muichiro Tokito | Niebla |
Una de las maneras más interesantes de selección es mediante el uso de condiciones booleanas.
Por ejemplo, si queremos seleccionar todas las filas que cumplen con ciertos criterios, podemos utilizar una expresión condicional. Supongamos que queremos seleccionar todas las filas donde el valor en la columna “pilar” sea igual a “Lama”:
pilares[pilares.pilar=='Llama']
Claro, podemos utilizar cualquier condición que se pueda comparar contra los datos.
Eso seria por ahora, dejamos este post aquí y te espero en el próximo donde hablaremos de matrices. No olvides dejar tus dudas y comentarios.
Comments
EXPLORANDO LAS ESTRUCTURAS DE DATOS EN PYTHON: matrices - jhontona.com