DataFrames
La estructura de datos que se usa en pandas
es el dataframe. Se
puede crear de varias formas, pero la más común y sencilla es leer un
conjunto de datos desde un archivo de texto, como lo hicimos
anteriormente.
Habiendo descargado el archivo Nacimientos_1998.csv
, se carga en un
DataFrame que se llama df
así:
import pandas as pd
df = pd.read_csv('Nacimientos_1998.csv',sep=';')
Particularidades de cargar los DataFrames
-
Hay diferentes funciones para leer los datos de un archivo. Todas comienzan por
read_
. -
csv
quiere decir “archivo separado por comas”, pero también se puede separar por punto y coma, o por tabulador. Si pandas no reconoce las columnas lo más problable es que tengamos que especificar otro separador. Esto se hace con la opciónsep
. -
El segundo erro posible es la codificación. En
encoding
. Usualmente no se especifica. Si hay errores se puede cambiar en la opciónencoding
. O se puede usar un programa externo para guardar el archivo con la codificación correcta. En libreoffice:File :arrow_right: Save as (opción :black_square_button: “edit filter settings”).
Características de los DataFrames
Se pueden averiguar las características de los dataframes así:
-
Su forma, en (filas,columnas), con:
df.shape
.Ejemplo: en nuestro caso,
(720984, 33)
, luego son 720984 registros de 33 variables. -
Los nombres de las columnas:
df.columns
Ejemplo: en este caso:
Index(['cod_dpto', 'cod_munic', 'areanac', 'sit_parto', 'nom_inst', 'cod_inst', 'sexo', 'peso_nac', 'talla_nac', 'ano', 'mes', 'aten_par', 't_ges', 'numconsul', 'tipo_parto', 'mul_parto', 'apgar1', 'apgar2', 'gru_san', 'edad_madre', 'est_civm', 'niv_edum', 'codpres', 'codptore', 'codmunre', 'area_res', 'n_hijosv', 'fecha_nacm', 'n_emb', 'seg_social', 'edad_padre', 'niv_edup', 'profesion'], dtype='object')
-
Los primeros registros:
df.head()
, por defecto saca 5, pero se puede cambiar.Ejemplo: en este caso:
cod_dpto cod_munic areanac sit_parto nom_inst cod_inst sexo ... n_hijosv fecha_nacm n_emb seg_social edad_padre niv_edup profesion
0 27 6 1 1 HL LASCARIO BARBOZA A 270060013.0 1 ... 1 NaN 1 9 15 9 1
1 27 73 1 1 CSCC BAGADO 270730019.0 2 ... 99 NaN 99 9 99 9 2
2 27 75 2 2 NaN NaN 2 ... 1 NaN 1 9 25 2 3
3 27 361 2 1 CS ANDAGOYA 273610065.0 1 ... 1 NaN 1 9 19 3 1
4 27 361 2 1 CS ANDAGOYA 273610065.0 2 ... 1 NaN 1 9 33 3 1
[5 rows x 33 columns]
I
- Los últimos registros:
df.tail()
Out[14]:
cod_dpto cod_munic areanac sit_parto nom_inst cod_inst sexo peso_nac ... area_res n_hijosv fecha_nacm n_emb seg_social edad_padre niv_edup profesion
720979 73 168 1 2 NaN NaN 2 9 ... 9.0 99 NaN 99 9 99 9 9
720980 17 524 1 2 NaN NaN 2 9 ... 9.0 99 NaN 99 9 48 9 4
720981 70 124 9 2 NaN NaN 1 9 ... 9.0 99 NaN 99 9 33 9 9
720982 13 760 9 2 NaN NaN 1 9 ... 9.0 99 NaN 99 9 99 9 9
720983 76 606 9 9 NaN NaN 1 9 ... 9.0 99 NaN 99 9 99 9 4
[5 rows x 33 columns]
Accediendo a variables (columnas)
En principio, cada columna corresponde a una variable.
Para acceder a los registros se puede:
-
Usar corchetes
[]
, dentro de los cuales se escribe el nombre de la columna. -
Usar el punto, seguido del nombre de la columna.
Funciones sobre las variables
Estas funciones son comunes a numpy, entonces no son únicas de los DataFrames, pero para nosotros basta con mencionarlas aquí. Mencionammos unas pocas, hay muchas más. Revisar la bibliografía de numpy y pandas.
-
unique: indica los valores que están en un conjunto de datos.
-
Por ejemplo en la lista: [1,1,1,3,1,2], los valores que están son 1,2,3
-
En el DataFrame que estamos usando, existe una variable llamada
cod_dpto
, que corresponde al código del departamento. Si queremos saber cuáles códigos de departamento están en el conjunto de datos que tenemos, podemos teclear:df.cod_dpto.unique()
en este caso se obtiene:
array([27, 52, 66, 63, 73, 95, 19, 17, 8, 20, 88, 70, 44, 47, 13, 81, 54, 68, 5, 23, 76, 86, 15, 41, 50, 25, 18, 85, 11, 94, 91, 99, 97])
lo que quiere decir que usamos la función
unique
, en la columna (variable)cod_dpto
, y obtuvimos como resultado un arreglo con esos valores.
-
-
min: indica el valor mínimo.
- Ejemplo:
df.cod_dpto.min()
- Ejemplo:
-
max: indica el valor máximo
- Ejemplo:
df.cod_dpto.min()
- Ejemplo:
-
otras funciones estadísticasa, como
kurt()
para la curtosis,skew()
para la asimetría,mean()
para el promedio aritmético ymode()
para la moda, entre otras.
Ejercicios
-
De una manera similar a cómo hicimos el histograma para los lanzamientos del dado, vamos a hacer uno para la talla de los nacimientos en 1998 según el municipio. Estos datos vienen de las estadísticas vitales del DANE. El diccionario de datos está en la página https://microdatos.dane.gov.co/index.php/catalog/366/data-dictionary/F1?file_name=Nacimientos_1998
- De los datos que tenemos de nacimientos del año 98, ¿cuál es el código mínimo de peso de neonatos en la base de datos?¿el máximo?
- Construya un histograma en el que se muestre el número de neonatos por cada categoría de peso. (ayuda: como las categorías son enteras, los rangos del histograma deben ser también enteros, de manera similar a como hicimos en clase)
- Suponga que tenemos tres categorías: bajo peso, para neonatos con 2.5 kilos o menos; peso normal, mayores a 2.5 kg y menores a 4kg; peso alto, mayor o igual a 4kg. ¿que fracción de los neonatos caen en cada una de éstas categorías?
-
Con el mismo archivo, construya un histograma del sexo asignado al nacer a los neonatos de la tabla. ¿que fracción de los nacidos se le asignó sexo femenino?