Segmentar la información
Contents
Segmentar la información#
No necesariamente es el primer paso para la limpieza de datos, pero es relevante filtrar la información para tener solamente aquella que nos sea de utilidad.
En el ejercicio de unión del dataframe, el resultado fue de un conjunto de datos con 59 columnas. Como vimos, algunas de estas no son particularmente útiles para nuestro análisis e incluso pueden derivar en errores.
Vamos entonces a segmentar la información de cada uno de nuestros dataframes para trabajar únicamente con la información que nos interesa para el ejercicio, básicamente, las variables con información socioeconómica.
Una aclaración
Obviamente este es un ejemplo de segmentación con unas variables que son de interés. Pero podrías querer en cambio revisar las correlaciones entre enfermedades previas y contagios o defunciones por Covid, en ese caso, las variables socioeconómicas no serían tan relevantes.
En el caso de covid_nacional nos interesa:
sexoedadentidad_nacimientomunicipio_residenciaindigenanacionalidadmigrantepais_nacionalidadfecha_ingresofecha_sintomasfecha_def
Y para el caso de areas_inegi únicamente nos interesa:
municipio_residenciaLat_DecimalLon_Decimal
Y de este caso nos interesa además solamente las filas correspondan a la Cve_Loc igual a 1.
Segmentar por nombre de columna#
Esta es una forma muy sencilla de segmentar la información. Simplemente, creamos una lista con las columnas que queremos y las asignamos a un nuevo dataframe, así:
muestra_covid = covid_nacional[['sexo', 'edad', 'entidad_nacimiento', 'municipio_residencia', 'indigena', 'nacionalidad', 'migrante', 'pais_nacionalidad', 'fecha_ingreso', 'fecha_sintomas', 'fecha_def']]
muestra_covid.head()
| sexo | edad | entidad_nacimiento | municipio_residencia | indigena | nacionalidad | migrante | pais_nacionalidad | fecha_ingreso | fecha_sintomas | fecha_def | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | HOMBRE | 43 | CIUDAD DE MÉXICO | NaN | NO | MEXICANA | NO ESPECIFICADO | MÉXICO | 2022-05-03 | 2022-05-03 | NaN |
| 1 | HOMBRE | 39 | CIUDAD DE MÉXICO | NaN | NO | MEXICANA | NO ESPECIFICADO | MÉXICO | 2022-01-13 | 2022-01-10 | NaN |
| 2 | HOMBRE | 55 | CIUDAD DE MÉXICO | NaN | NO | MEXICANA | NO ESPECIFICADO | MÉXICO | 2022-01-12 | 2022-01-12 | NaN |
| 3 | HOMBRE | 54 | CIUDAD DE MÉXICO | NaN | NO | MEXICANA | NO ESPECIFICADO | MÉXICO | 2022-02-20 | 2022-02-13 | NaN |
| 4 | MUJER | 41 | CIUDAD DE MÉXICO | NaN | NO | MEXICANA | NO ESPECIFICADO | MÉXICO | 2022-01-12 | 2022-01-10 | NaN |
En este caso, únicamente necesitamos indicar las columnas que queremos. Incluso podemos aprovechar y modificar el orden de aparición de las columnas.
¡Cuidado!
La lista de columnas en pandas se hace en corchetes rectos dobles:
[['item1', 'item2', 'item3']]
Si lo haces de la forma tradicional (con corchetes rectos simples), tendrás un error
Segmentar por columna y condición#
En este caso, combinaremos el método .loc con la segmentación en columnas, así:
geolocalizacion = areas_inegi.loc[areas_inegi['Cve_Loc'] == 1, ['municipio_residencia', 'Lat_Decimal', 'Lon_Decimal']]
geolocalizacion.head()
| municipio_residencia | Lat_Decimal | Lon_Decimal | |
|---|---|---|---|
| 0 | Aguascalientes | 21.879823 | -102.296047 |
| 717 | Asientos | 22.238317 | -102.089275 |
| 959 | Calvillo | 21.846907 | -102.718751 |
| 1254 | Cosío | 22.366409 | -102.300044 |
| 1348 | Jesús María | 21.961273 | -102.343416 |
Este es un método bastante poderoso de pandas ya que nos ahorra varios pasos. En una misma línea, hacemos la búsqueda por coincidencia (.loc) y luego, separada por una coma, indicamos las columnas que queremos que regrese.
¿por qué esta lista no tiene corchetes dobles?
Cuando le decimos a pandas que nos devuelva una serie de columnas, en realidad estamos usando un método .loc, aunque no lo declaremos de forma explícita. De hecho, podríamos decir:
df.loc[:,'col1', 'col2', 'col3']
Y sería el mismo resultado que
df[['col1', 'col2', 'col3']]
Tenemos ahora dos conjuntos de datos mucho más manejables que antes. Con esto podremos pasar al siguiente paso, que consiste en lidiar con datos vacíos.