Está en la página 1de 34

Unidad 2: Manipulación de datos con Pandas​

Pandas es un paquete más reciente construido sobre NumPy y proporciona una


implementación eficiente de un DataFrame. Las estructuras de datos llamadas DataFrames
son similares a arreglos de varias dimensiones con filas y columnas. Estas suelen contener
diferentes tipos de datos y datos vacíos.
Además de ofrecer una interfaz de almacenamiento conveniente para los datos etiquetados,
Pandas implementa una serie de poderosas operaciones de datos conocidas por los usuarios
tanto para los marcos de datos como de los programas de hojas de cálculo. La estructura de
datos ndarray de NumPy proporciona características esenciales para el tipo de datos limpios
y bien organizados típicamente vistos en tareas de computación numérica.

Si bien cumple muy bien su propósito, sus limitaciones se hacen claras cuando necesitamos
más flexibilidad (adjuntar etiquetas a los datos, trabajar con datos perdidos, etc.) y cuando
intentamos operaciones que no se corresponden bien con la transmisión elemento a
elemento (agrupaciones, pivotes, etc.), cada uno de los cuales es una pieza importante para
analizar los datos menos estructurados disponibles en muchas formas en el mundo que nos
rodea.

Pandas, específicamente sus objetos Serie y DataFrame, están construidos sobre la


infraestructura de arreglos de NumPy y brindan una forma eficiente de realizar tareas
relacionadas con la "limpieza de datos", tarea que, por lo general, le quita mucho tiempo a un
científico de datos.

En este módulo, nos enfocaremos en cómo utilizar de manera efectiva las estructuras de
datos de Series, DataFrame y similares. Presentaremos ejemplos tomados de datasets
reales en la medida de lo posible.

Instalación y uso de Pandas

Objetos de Pandas

Python para ciencia de datos

Conclusiones

Referencias

Material descargable
Lección 1 de 6

Instalación y uso de Pandas

Empecemos por importar las bibliotecas que necesitaremos para nuestro programa.
La primera instrucción contiene el código para importar la librería Pandas como pd.
Esto es por comodidad. Cada vez que necesitemos utilizar alguna funcionalidad de
la librería Pandas, escribiremos pd en lugar de pandas. Una vez instalado Pandas, se
puede importar y verificar la versión:

De la misma manera que es común importar NumPy bajo la abreviatura np, también
es típico importar Pandas con la abreviatura pd:
Esta manera de importación se utilizará a lo largo del resto de este curso.

Mientras se ejecuta una instrucción, no se puede ejecutar ninguna otra. Si intentas


ejecutar otra instrucción, su ejecución no comenzará hasta que la instrucción previa
haya terminado su ejecución.
Lección 2 de 6

Objetos de Pandas

En un nivel básico, los objetos de Pandas pueden considerarse como versiones


mejoradas de las matrices estructuradas de NumPy, en las que las filas y las
columnas se identifican con etiquetas.

Como descubriremos a lo largo de este programa, Pandas ofrece una gran cantidad
de herramientas, métodos y características útiles en adición a las estructuras de
datos básicas, pero prácticamente todo lo demás requerirá un entendimiento previo
de qué son estas estructuras (McKinney, 2017).

Comenzaremos nuestras sesiones de código importado NumPy y Pandas:


Series

En Pandas, una Serie es un array unidimensional de datos indexados (McKinney,


2017).

Se puede crear a partir de una lista o array de la siguiente manera:

Como vemos en la salida anterior, la Serie envuelve tanto una secuencia de valores
como una secuencia de índices, que podemos acceder con los atributos values e
index. Los valores son simplemente un array de NumPy:

Al igual que con un array de NumPy, los datos se pueden acceder mediante el índice
asociado con la notación de corchetes de Python familiar:
Como veremos, aunque la Serie es mucho más general y flexible que el array

unidimensional de NumPy que emula, un objeto Series se parece a una

especialización de un diccionario de Python, con la diferencia de que tiene claves y

valores tipados, lo que lo hace más eficiente que los diccionarios de Python para
ciertas operaciones.
DataFrame

La estructura de datos clave en Pandas es el objeto DataFrame. Te invitamos a


revisar el siguiente video para conocer la información relacionada con el DataFrame
de Pandas.

DataFrame​.mp3
1.9 MB

DataFrame se puede construir desde: un solo objeto Series, una lista de diccionarios,
un diccionario de objetos Series, una matriz bidimensional de NumPy y una matriz
estructurada de NumPy. A continuación, algunos ejemplos de la construcción de
DataFrames:

Índice

Hemos visto que tanto los objetos Series como DataFrame contienen un índice
explícito que permite hacer referencia y modificar los datos. El objeto Índice es
digno de interés por sí mismo y puede ser percibido como un arreglo inmutable o
como un grupo organizado (técnicamente un multiconjunto, ya que puede incluir
valores repetidos).

Las operaciones que se pueden realizar en los objetos Índice se ven afectadas de
formas interesantes por estas vistas. Como un ejemplo simple, construyamos un
Índice a partir de una lista de enteros:
Esta inmutabilidad hace que sea más seguro compartir índices entre múltiples
marcos de datos y matrices, sin el potencial de efectos secundarios por la
modificación accidental del índice.
El acceso a estas operaciones también puede ser a través de métodos de objetos,
por ejemplo, indA.intersection(indB).Para complementar lo mencionado, revisa el
video que encontrarás a continuación.

Métodos de objetos_C2_U2
POSTGRADOS UNIVERSIDAD AUTÓNOMA

01:35
Métodos de objetos.mp3
1.9 MB

Vincula la descripción de los métodos con su nombre:

Calcula un array booleano


que indica si cada valor está
Isin
contenido en la colección
pasada

Calcula el array de valores


Unique
únicos en el índice

Calcula un nuevo índice


insertando el elemento en el Insert
índice i

SUBMIT
Lección 3 de 6

Python para ciencia de datos

Lectura de datos

Pandas tiene varias funciones para la lectura de datos tabulares como un objeto
DataFrame. La Tabla 1 resume algunas de ellas, aunque read_csv y read_table son las
que probablemente uses con más frecuencia.
Tabla 1: Funciones de análisis en Pandas. Fuente: Vidal (2023).

Comencemos a leer los datos que descargamos. Primero, debemos crear un nuevo
book y abrirlo. Luego, después de asegurarnos de que el archivo mod2_Data.csv esté
almacenado en el mismo directorio que el directorio de nuestro book, escribiremos
el siguiente código para leer y mostrar el contenido:
Haz clic en las flechas para moverte por el contenido

- La forma de leer archivos CSV (o cualquier otro valor separado,


proporcionando el carácter separador) en Pandas es llamando al
método "read_csv". Además del título del archivo, agregamos el
parámetro clave "na_values" a este método juntamente con el
carácter que indica "datos no disponibles" en el archivo. Por lo
general, los archivos CSV incluyen un encabezado con los nombres de
las columnas.

Si es así, podemos elegir qué columnas usaremos en el archivo


mediante el uso del parámetro "usecols". Si queremos ver cómo luce la
información, podemos echar un vistazo a un número limitado de filas
con el método "head()", que mostrará solo las primeras cinco filas por
defecto, pero podemos especificar un número diferente como
argumento si lo deseamos.
- Para averiguar los títulos de las columnas o los nombres de los índices
de un DataFrame, podemos hacer uso de los atributos "columna" e
"índice" respectivamente. Es posible modificar estos nombres
asignando una nueva lista del mismo tamaño a estos atributos. Los
valores de cualquier DataFrame pueden ser recuperados como un
array de Python llamando a su atributo values.

Si buscamos un resumen rápido de las estadísticas de todas las


columnas numéricas en un DataFrame, podemos emplear la función
"describe()". La salida incluye la cantidad de valores, la media, la
desviación estándar, el mínimo y el máximo, y los percentiles por
defecto del 25 %, 50 % y 75 % para cada columna o serie.

A continuación, tendremos un ejemplo sobre el uso de todo lo antes mencionado:


Selección de datos

Si deseamos elegir una parte específica de los datos dentro de un DataFrame,


debemos identificarlo usando corchetes ([ ]). Hay varias formas de hacer esto. Si lo
que queremos es solo seleccionar una sola columna, basta con colocar su nombre
dentro de los corchetes. El resultado será una estructura de datos de tipo Serie, en
lugar de un DataFrame, ya que solo se está recuperando una sola columna.

Para escoger un grupo reducido de registros en un DataFrame, podemos hacerlo


designando un intervalo de ellos usando dos puntos (:) dentro de corchetes. Este
proceso es conocido frecuentemente como una porción de filas.
Si queremos seleccionar un subconjunto de columnas y filas utilizando las etiquetas
como nuestras referencias en lugar de las posiciones, podemos utilizar la indexación
ix:

En este caso, ix hace referencia a las etiquetas de índice, lo que


significa que ix no devuelve las filas 90 a 94, sino que devuelve todas
las filas entre la fila etiquetada como 90 y la fila etiquetada como 94;
por lo tanto, si el índice 100 se coloca entre las filas etiquetadas como
90 y 94, también se devolverá esta fila.
Filtrar datos

Otra técnica para elegir un subconjunto de datos es usando la indexación booleana,


que comúnmente se conoce como "filtro". Por ejemplo, si se quiere seleccionar
aquellos valores que sean inferiores o iguales a 6.5, se debe realizar la siguiente
operación:

La indexación booleana utiliza el resultado de una operación booleana sobre los


datos, devolviendo una máscara con Verdadero o Falso para cada fila. Se elegirá
aquellas filas designadas como "True" en la máscara. La operación booleana
"edu['Valor'] > 6,5" crea una máscara booleana. Si un elemento en la columna
"Valor" es mayor a 6.5, su equivalente en la máscara se establecerá como "True". Si
no, será marcado como "False".

Por lo tanto, cuando se aplica esta máscara como un índice en "edu [edu['Valor'] >
6,5]", el resultado es un DataFrame filtrado que contiene solo filas con valores
superiores a 6,5. Por supuesto, se puede utilizar cualquiera de los operadores
booleanos habituales para filtrar: < (menor que),<= (menor o igual que), > (mayor
que), >= (mayor o igual que), = (igual que) y ! = (no igual que).

Acorde con lo revisado, seleccione la respuesta correcta

Para filtrar los datos, se deben agrupar y seleccionar los datos entre corchetes.

¿Esta frase es verdadera o falsa?

Falso

Verdadero

SUBMIT

Filtrado de valores perdidos

Pandas emplea NaN (Not a Number) como representación de valores ausentes. Este
valor especial en Python es un tipo de número con punto flotante generado por
operaciones que no tienen un resultado determinado.
Es importante tener en cuenta que dos NaN nunca son iguales, por lo que el método
más seguro para determinar si un dato no se encuentra en un DataFrame es a través
de la función "isnull()".

Manipulación de datos

Luego de haber aprendido a seleccionar los datos correctos, es necesario conocer


cómo modificarlos. Una tarea básica consiste en trabajar con las columnas o filas
aplicando funciones de agregación.

En la Tabla 2 se tiene una lista de las funciones de agregación más comunes. Si se


aplican todas estas funciones a una fila o columna, siempre dará como resultado un
número.
Tabla 2: Lista de las funciones de agregación más comunes. Fuente: Vidal (2023).

Sumado a lo anterior, al momento de aplicar una función a un DataFrame o a una


selección de filas y columnas, se puede determinar si se desea que la función se
ejecute sobre las filas de cada columna (usando la palabra clave "axis=0" en la
llamada de la función) o sobre las columnas de cada fila (usando la palabra clave
"axis=1" en la llamada de la función).

Haz clic en las flechas para moverte por el contenido


- Además de estas funciones de agregación, podemos aplicar
operaciones en todos los valores de filas, columnas o una selección de
ambos. La norma general es que si realizamos una operación con
columnas, se aplicará a cada fila correspondiente a dicha columna. De
igual manera, una operación con filas significa que se aplicará a cada
columna perteneciente a esa fila.

Puedes crear una función anónima o "lambda" para aplicarla a los


datos si es necesario. Estas funciones sin nombre solo requieren que
definas los parámetros de entrada después de la palabra clave
"lambda" y antes de dos puntos (:) (Seguí et al., 2017). En el próximo
ejemplo, solo se necesita un parámetro, que será el valor de cada
elemento en la columna Valor. El valor devuelto por la función será el
cuadrado de ese valor.

- Una técnica adicional para manipular los datos es la creación de


nuevos valores en el DataFrame. Esto se realiza mediante el uso del
operador de asignación (=). Por ejemplo, para añadir una columna, se
puede asignar una serie a una selección de una columna que aún no
existe. Esto generará una nueva columna después de todas las demás.
Cabe destacar que si ya existe una columna con el mismo nombre, los
valores originales serán reemplazados.
- En Pandas, las funciones que tienen como objetivo alterar un
DataFrame, por ejemplo, mediante el uso de la función "drop", suelen
generar una copia de los datos modificados en lugar de modificar
directamente el DataFrame. Por lo tanto, se mantiene el DataFrame
original (VanderPlas, 2016).

Si quiere sobrescribir los valores antiguos, es posible hacerlo


activando la opción "inplace" en verdadero. Por defecto, esta opción
está configurada en falso, lo que resulta en la generación de una copia
de los datos.

La función "drop()" también se utiliza para eliminar valores faltantes aplicándola


sobre el resultado de la función "isnull()". El resultado que se obtiene es equivalente
al proceso de eliminación de los valores NaN, tal como se mencionó previamente. Sin
embargo, aquí existe una diferencia clave, que consiste en que se retorna una copia
del DataFrame sin los valores NaN, en lugar de una vista.
Ordenar

Otra función esencial que debemos usar para examinar nuestros datos es la que nos
permite ordenarlos por columnas. Es precisamente la función "sort" la que nos
permitirá ordenar un DataFrame en base a cualquiera de sus columnas.

Si queremos ver las primeras cinco filas de datos ordenadas en orden descendente
(es decir, de los valores más grandes a los más pequeños) y utilizando la columna
"Value", solo necesitamos hacer esto:
Usando la función "sort_index" y "axis=0", podemos ordenar por índice para
restaurar el orden original:

Agrupar datos

Otra forma muy útil de inspeccionar los datos es agruparlos según algún criterio. Por
ejemplo, el agrupar los datos por país, sin importar el año, es posible con la función
"groupby" de Pandas. Esta función devuelve un DataFrame especial agrupado, para
el cual es necesario aplicar una función de agregación para obtener un DataFrame
propio. Dicha función afectará todos los valores que se encuentran en el grupo.

La función anterior se ejemplifica de la siguiente manera:

Reorganización de los datos

Hasta ahora, nuestros índices han sido solo una numeración de filas sin mucho
sentido. Podemos reorganizar los datos, cambiando los índices y las columnas con el
fin de manipularlos con eficacia. La función "pivot_table" nos permite hacer esto,
aquí especificamos qué columnas serán los nuevos índices, los nuevos valores y las
columnas recién creadas.

Ejemplificamos la reorganización de datos a continuación:


Clasificación de los datos

Otra función de visualización útil es la de clasificar los datos. Por ejemplo, si


quisiéramos saber cómo se clasifica cada país por año, tenemos que usar la función
"rank" de pandas. Pero primero, tenemos que limpiar un poco nuestra tabla pivotada
anterior para que solo tenga países reales con datos reales. Para ello, primero
eliminamos las entradas de la zona euro y acortamos la entrada del nombre de
Alemania, utilizando la función "rename" y luego eliminamos todas las filas que
contengan algún NaN, utilizando la función "dropna":
Lección 4 de 6

Conclusiones

Python es una herramienta poderosa para la manipulación y análisis de datos,


gracias a su vasta comunidad de desarrolladores y amplia gama de bibliotecas
específicas para la gestión de los datos. Dentro de estas bibliotecas, encontramos
Pandas, la cual es una herramienta poderosa para manipular y analizar datos en un
formato de tabla, que permite agregar, eliminar, renombrar y reordenar columnas y
filas, así como aplicar funciones a las columnas y filas seleccionadas.

La visualización de datos es una parte integral del análisis de datos, y Pandas


proporciona varias funciones para hacerlo, como la tabla pivote, el clasificar y el
rango de datos.

Revisa la siguiente infografía, que resume los contenidos más relevantes vistos
en esta unidad.
FUNCIONES DE PANDAS.pdf
725.7 KB
Lección 5 de 6

Referencias

McKinney, W. (2017). Python for Data Analysis: Data Wrangling with Pandas,
NumPy, and IPython. O'Reilly Media, Incorporated.

Seguí, S., Vitrià, J., Puertas, E., Pujol, O., Escalera, S., Garrido, L., Dantí, F., &
Igual, L. (2017). Introduction to Data Science: A Python Approach to Concepts,
Techniques and Applications. Springer International Publishing.

VanderPlas, J. (2016). Python Data Science Handbook: Essential Tools for


Working with Data. O'Reilly Media, Incorporated.
Lección 6 de 6

Material descargable

Unidad 2 Manipulación de datos con Pandas​.pdf


4.1 MB

También podría gustarte