Práctica 4: Análisis de datos sobre nivel de formación en España

Escribimos un primer mensaje para mostrar en pantalla

In [33]:
print(" ¡Hola,mundo!")
 ¡Hola,mundo!

Importamos la librería que vamos a usar, pandas, y utilizamos la asignación 'as'para llamarlo simplemente pd a lo largo de todo el proceso y no tener que escribir 'pandas' cada vez

In [1]:
import pandas as pd
In [36]:
url='https://github.com/Alejandraa98/practicas-periodismo-de-datos/blob/main/practica-4.csv?raw=true'

Leemos la base de datos a partir del URL especificando los delimitadores y la asignamos a la variable df

In [37]:
df = pd.read_csv(url,delimiter= ';')

Escribiendo df podemos acceder al contenido de esa base de datos, en este caso expresada a través de la tabla

In [38]:
df
Out[38]:
Sexo Ciclo Nivel de formación más apropiado para realizar su trabajo Total
0 Ambos sexos Total Total trabajando 90.506
1 Ambos sexos Total Título universitario 17.969
2 Ambos sexos Total Formación profesional de grado superior 46.756
3 Ambos sexos Total Formación profesional de grado medio / bachill... 11.386
4 Ambos sexos Total Formación profesional básica 3.760
... ... ... ... ...
1318 Mujeres 15 - VIDRIO Y CERÁMICA 16 - MADERA, MUEBLE Y C... Formación profesional de grado superior 100.000
1319 Mujeres 15 - VIDRIO Y CERÁMICA 16 - MADERA, MUEBLE Y C... Formación profesional de grado medio / bachill... 25.000
1320 Mujeres 15 - VIDRIO Y CERÁMICA 16 - MADERA, MUEBLE Y C... Formación profesional básica 13.000
1321 Mujeres 15 - VIDRIO Y CERÁMICA 16 - MADERA, MUEBLE Y C... ESO, EGB, etc ... 47.000
1322 Mujeres 15 - VIDRIO Y CERÁMICA 16 - MADERA, MUEBLE Y C... No consta 5.000

1323 rows × 4 columns

Mediante las funciones head y tail podemos visualizar la parte superior e inferior de los datos respectivamente

In [8]:
df.head()
Out[8]:
Sexo Ciclo Nivel de formación más apropiado para realizar su trabajo Total
0 Ambos sexos Total Total trabajando 90.506
1 Ambos sexos Total Título universitario 17.969
2 Ambos sexos Total Formación profesional de grado superior 46.756
3 Ambos sexos Total Formación profesional de grado medio / bachill... 11.386
4 Ambos sexos Total Formación profesional básica 3.760
In [9]:
df.tail()
Out[9]:
Sexo Ciclo Nivel de formación más apropiado para realizar su trabajo Total
1318 Mujeres 15 - VIDRIO Y CERÁMICA 16 - MADERA, MUEBLE Y C... Formación profesional de grado superior 100.0
1319 Mujeres 15 - VIDRIO Y CERÁMICA 16 - MADERA, MUEBLE Y C... Formación profesional de grado medio / bachill... 25.0
1320 Mujeres 15 - VIDRIO Y CERÁMICA 16 - MADERA, MUEBLE Y C... Formación profesional básica 13.0
1321 Mujeres 15 - VIDRIO Y CERÁMICA 16 - MADERA, MUEBLE Y C... ESO, EGB, etc ... 47.0
1322 Mujeres 15 - VIDRIO Y CERÁMICA 16 - MADERA, MUEBLE Y C... No consta 5.0

Con la función columns podemos visualizar el nombre de cada columna

In [12]:
df.columns
Out[12]:
Index(['Sexo', 'Ciclo',
       'Nivel de formación más apropiado para realizar su trabajo', 'Total'],
      dtype='object')

Escribiendo los nombres de las columnas Ciclo y Nivel de formación más apropiado para realizar su trabajo accedemos a la información que estas columnas contienen

In [13]:
df['Ciclo']
Out[13]:
0                                                   Total
1                                                   Total
2                                                   Total
3                                                   Total
4                                                   Total
                              ...                        
1318    15 - VIDRIO Y CERÁMICA 16 - MADERA, MUEBLE Y C...
1319    15 - VIDRIO Y CERÁMICA 16 - MADERA, MUEBLE Y C...
1320    15 - VIDRIO Y CERÁMICA 16 - MADERA, MUEBLE Y C...
1321    15 - VIDRIO Y CERÁMICA 16 - MADERA, MUEBLE Y C...
1322    15 - VIDRIO Y CERÁMICA 16 - MADERA, MUEBLE Y C...
Name: Ciclo, Length: 1323, dtype: object
In [14]:
df['Nivel de formación más apropiado para realizar su trabajo']
Out[14]:
0                                        Total trabajando
1                                    Título universitario
2                 Formación profesional de grado superior
3       Formación profesional de grado medio / bachill...
4                            Formación profesional básica
                              ...                        
1318              Formación profesional de grado superior
1319    Formación profesional de grado medio / bachill...
1320                         Formación profesional básica
1321                                    ESO, EGB, etc ...
1322                                            No consta
Name: Nivel de formación más apropiado para realizar su trabajo, Length: 1323, dtype: object

Si queremos acceder directamente al valor de la fila 4, primero concretamos la columna y luego escribimos en corchetes el número de la fila a la que queremos acceder. En el segundo caso, en el que se hace la prueba con el número de fila 1324 hay un error ya que la última fila es la 1322 y por tanto no existe

In [15]:
df['Sexo'][4]
Out[15]:
'Ambos sexos'
In [16]:
df['Sexo'][1324]
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/usr/local/lib/python3.8/dist-packages/pandas/core/indexes/range.py in get_loc(self, key, method, tolerance)
    384                 try:
--> 385                     return self._range.index(new_key)
    386                 except ValueError as err:

ValueError: 1324 is not in range

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
<ipython-input-16-f9fa2de4cbed> in <module>
----> 1 df['Sexo'][1324]

/usr/local/lib/python3.8/dist-packages/pandas/core/series.py in __getitem__(self, key)
    940 
    941         elif key_is_scalar:
--> 942             return self._get_value(key)
    943 
    944         if is_hashable(key):

/usr/local/lib/python3.8/dist-packages/pandas/core/series.py in _get_value(self, label, takeable)
   1049 
   1050         # Similar to Index.get_value, but we do not fall back to positional
-> 1051         loc = self.index.get_loc(label)
   1052         return self.index._get_values_for_loc(self, loc, label)
   1053 

/usr/local/lib/python3.8/dist-packages/pandas/core/indexes/range.py in get_loc(self, key, method, tolerance)
    385                     return self._range.index(new_key)
    386                 except ValueError as err:
--> 387                     raise KeyError(key) from err
    388             raise KeyError(key)
    389         return super().get_loc(key, method=method, tolerance=tolerance)

KeyError: 1324

Para obtener información sobre valores numéricos de una columna utilizamos la función describe

In [20]:
df['Total'].describe()
Out[20]:
count    1323.000000
mean      143.394738
std       206.208199
min         0.000000
25%         8.000000
50%        50.000000
75%       183.500000
max       970.000000
Name: Total, dtype: float64

Con la función unique obtenemos valores únicos de cada columna, en este caso de la columna que se indica anteriormente entre corchetes

In [23]:
df['Nivel de formación más apropiado para realizar su trabajo'].unique()
Out[23]:
array(['Total trabajando', 'Título universitario',
       'Formación profesional de grado superior',
       'Formación profesional de grado medio / bachillerato',
       'Formación profesional básica', 'ESO, EGB, etc ...', 'No consta'],
      dtype=object)

Importamos la librería 'matplotlib', la renombramos como plt para facilitar su escritura. De esta manera, podremos visualizar mediante un gráfico de barras la información de la base de datos que antes hemos analizado

In [26]:
import matplotlib.pyplot as plt
In [35]:
plt.bar(df['Sexo'],df['Total']) 
plt.show()