title

Contributors:

</div>

¿Qué es pandas?

pandas es un libreria de Python destinada al análisis de datos, que proporciona unas estructuras de datos flexibles y que permiten trabajar con ellos de forma muy eficiente. Pandas depende de Numpy, la librería que añade un potente tipo matricial a Python. Los principales tipos de datos que pueden representarse con pandas son:

Pandas proporciona herramientas que permiten:

En pandas existen tres tipos básicos de objetos todos ellos basados a su vez en Numpy:

Estas ultimas estructuras de datos (Panel, Panel4D y PanelND) permiten trabajar con más de dos dimensiones. Dado que es algo complejo y poco utilizado trabajar con arrays de más de dos dimensiones no trataremos los paneles aqui

1. Series

Las series son arrays unidimensionales con indexación (arrays con índice o etiquetados), similar a los diccionarios. Pueden generarse a partir de diccionarios o de listas. De manera opcional podemos especificar una lista con las etiquetas de las filas.

Primero necesitamos cargar la librería correspondiente:

El primer ejemplo que vamos a poner va a ser el de definir una estructura de datos "Series" que como ya comentamos es un array de datos unidimensional con idexación. Las "Series" se definen de la siguiente manera:

 serie = pd.Series(data, index=index)

Es decir, que en el primer parámetro le indicamos los datos del array y en el segundo parámetro los índices. Veamos un ejemplo de como crear una estructura "Series" simplemente con los valores a,b,c y un indexado por defecto.

También se puede definir la etiqueda del index

En el caso de que usemos un diccionario, el nombre de las filas toma el valor de las keys del diccionario (index).

Podemos controlar tanto los datos que queremos incluir como su orden especificando el index:

En general un objeto Series tiene dos componentes principales: un índice y un vector de datos. Ambos componentes son listas con la misma longitud. El índice contiene valores únicos y, por lo general, ordenados, y se usa para acceder a valores individuales de los datos.

1.1 Consultar una serie

Hay muchas otras formas de acceder a los datos, pero por simplicidad, aquí sólo veremos Series.loc[] por cuestiones de simplicidad. En la documentación se puede ver el resto de los métodos. Para seleccionar datos usamos los métodos loc, iloc e ix.loc permite seleccionar datos usando las etiquetas de filas y columnas, iloc basándose en posición e ix basándose tanto en etiquetas como posición. En el caso de una Serie, devuelve un único valor.

Series loc[etiqueta_fila] Series iloc[indice_fila] Series ix[indice/ "etiqueta_fila"]

Para filtrar datos, le podemos pasar a la Serie una lista de valores lógicos (verdaderos y falsos) indicando las filas que nos son de interés.

En lugar de pasar una lista de valores lógicos podemos pasar directamente una prueba lógica.

Seleccionado de datos, primero creamos como ejemplo una serie y luego a partir de un diccionario para recordar

seleccionando solo una etiqueta

seleccionando con condiciones

1.2 Operaciones Básicas

Ejercicio
  1. crear una estructura "Series" con los integrantes de la selección Española de fútbol que ganó el mudial del año 2010, en el que tenemos como 'data' sus nombres y como índice su dorsal:
  2. ¿Que pasaria si no se le indican los indices de forma explicita? ¿cual es el valor inicial del nuevo indice?
  3. Podemos crear una estructura de datos "Series" a partir de una lista o de un diccionario. Si la construimos a partir de una lista nos pondrá los índices por defecto y si lo creamos a partir de un diccionario ¿que indices tendremos?,
  4. incluya un nuevo jugador Cesc con el dorsal numero 10.

selección Española de fútbol:

1 Casillas
15 Ramos
3 Pique
5 Puyol
11 Capdevila
14 Xabi Alonso
16 Busquets
8 Xavi Hernandez
18 Pedrito
6 Iniesta
7 Villa

2.La estructura de datos de DataFrame

El DataFrame permite almacenar y manipular datos tabulados en filas de observaciones y columnas de variables.Los DataFrame se pueden crear de diferentes maneras, una forma común de crearlos es partir de listas o diccionarios de listas, de diccionarios o de Series. En los DataFrame tenemos la opción de especificar tanto el index (el nombre de las filas) como columns (el nombre de las columnas).

Hay varias maneras de crear un DataFrame. Una es usar un diccionario. Por ejemplo:

otro ejemplo de la creacion de un dataframe a partir de un diccionario

Como se puede ver con el nuevo DataFrame brics, Pandas tiene asignada una clave para cada país como valores numéricos de 0 a 4. Si se desea tener diferentes valores de índice, por ejemplo el código del país de dos letras, tambien puede hacerce facilmente.

Tambien podemos guardar el nuevo dataframe como archivo csv

Al igual que con las Series, podemos controlar tanto los datos que queremos incluir como su orden especificando el index y/o columnas que nos interesen:

Importando datos

Otra manera de crear un DataFRame es importando un archivo csv usando Pandas. Ahora, el csv cars.csv es almacenado y puede ser importado usando pd.read_csv(ruta del archivo):

Indexando DataFrames

Hay varias maneras de indexar un DataFrame de Pandas. Una de las más sencillas es usar la notación de corchetes.

En el ejemplo de debajo, se puede usar corchetes para seleccionar una columna del DataFrame cars. Puede usar corchetes simples o dobles. Los corchetes simples tienen salida a Pandas Series, mientras que los corchetes dobles tendrán salida a a Pandas DataFrame.

Los corchetes también pueden usarse para acceder a observaciones (filas) desde un DataFrame. Por ejemplo:

Ejercicios

Tenemos un fichero csv con datos sobre origen, peso y tamaño de diferentes individuos de una especie

3. Merging Dataframes

En muchas situationes del “mundo real”, los datos que queremos usar proceden de múltiples archivos. Frecuentemente necesitamos combinar estos archivos en un uniquo DataFrame para analizar los datos. El paquete pandas proporciona varios métodos de combinar DataFrames incluyendo join, merge y concat. concat permite concatenar Series y DataFrame. Mediante la opción axis, podemos controlar si la unión se debe hacer por filas o por columnas.

join es un método para combinar DataFrame que puedan tener diferentes etiquetas de filas en un único DataFrame.

join mantiene todos las filas presentes en el df1 pese a que no se encuentren en el df2 y completando con NaN los datos faltantes. Este comportamiento se puede modificar usando la opción how.how=’outer’ incluirá también las filas presentes en el df2 y que no están en el df1 y how=’inner’ sólo mostrará las filas comunes a los dos DataFrame.

4. Fusionar conjuntos de datos (merge)

Fusionar (unir) conjuntos de datos

Es de gran interes fusionar conjuntos de datos almacenados en diferentes archivos para producir un unico archivo final que incorpora toda la informacion. Para fusionar datos provenienes de diferentes archivos existen diferentes extrategias.

Consideremos el siguiente ejemplo:

Union externa Completa (full outer join)

Fusiona la informacion completa proveniente de ambos conjuntos. Es importante mencionar que la existencia o no de un dato en un conjunto se realiza con repecto al indice que se elige.

Produce una lista de toda la gente sin importar si ellos son empleados o estudiantes y toda la informacion que se dispone para cada uno de ellos.

Union interna o interseccion (inner join)

Fusiona la informacion que se encuentra en ambos conjuntos.

Produce una lista de la gente que es empleado y estudiantes al mismo tiempo y toda la informacion que se dispone para cada uno de ellos.

Adicionalmente, existen dos casos de uso comunes para fusionar datos:

Union izquierda (Left join)

El resultado de esta operacion siempre contiene todos los elementos (registros) del conjunto izquierdo (es decir, el primer DataFrame mencionado en la consulta) independientemente de si existe un elemento correspondiente en el otro conjunto.

Produce una lista de todos los empleados sin importar si ellos son estudiantes o no y si un empleado es tambien estudiante muestra adicionalmente esta informacion.

Union derecha (Right join)

El resultado de esta operacion siempre contiene todos los elementos (registros) del conjunto derecho (es decir, el segundo DataFrame mencionado en la consulta) independientemente de si existe o no un elemento correspondiente en el otro conjunto.

Produce una lista de todos los estudiantes sin importar si ellos son empleados o no y si un estudiante es tambien empleado muestra adicionalmente esta informacion.

Otros parametros del metodo merge:

Los indices no son la unica opcion para realizar la union entre dos conjuntos de datos, tambien es posible usar las columnas.

Conflictos entre DataFrames

5. Agrupar datos (group by)

Esta funcion toma algunos nombres de columna o nombre y divide el DataFrame en partes basandose en esos nombres. Esta funcion devuelve un objeto group by DataFrame, el cual puede ser iterado. Este objeto consiste de una tupla donde el primer elemento es la condición de soporte y el segundo elemento es el DataFrame reducido por esa agrupación.

Para ordenas a nuestro gusto

Cuanto es el valor total de todos los elementos de 'CENSUS2010POP '

Distribuir tareas a traves de multiples trabajadores o maquinas de computo (workers)

Tambien pueden aplicarse algunas funciones a la salida del group by

Todas las funciones son aplicadas sobre todas las columnas

Que sucede cuando las etiquetas del diccionario son iguales a las de las columnas a operar

Ejercicio (Group by)

De acuerdo a los DataFrames creados en el ejercicio de fusion de datos

Realice las siguientes consultas usando el comando groupby

Contributors: