El fichero [horas-trabajo.csv] contiene el número de horas mensuales trabajadas por los empleados de una empresa durante el primer cuatrimestre. Crear un programa que realice las siguientes operaciones utilizando la librería Pandas:
In [1]:
import pandas as pd
# Apartado 1
# Crear un DataFrame leyendo el fichero desde internet.
operarios = pd.read_csv('http://aprendeconalf.es/python/examenes/soluciones/examen-2020-05-27/horas-trabajo.csv', sep = ';')
operarios
Out[1]:
In [2]:
# Apartado 2
# Mostrar por pantalla una serie con el número total de horas trabajadas para cada mes.
print('Número de horas trabajadas por meses')
print(operarios[['Enero', 'Febrero', 'Marzo']].sum())
In [8]:
# Apartado 3
# Mostrar por pantalla una serie con el número de operarios de cada departamento.
print('Número de operarios por departamentos')
print(operarios.Departamento.value_counts())
In [4]:
# Apartado 4
# Mostrar por pantalla el número de empleados que han trabajado todos los meses, es decir, que tienen un número de horas todos los meses del cuatrimestre.
print('Número operarios que han trabajado todos los meses: ', operarios.dropna().shape[0])
In [6]:
# Apartado 5
# Convertir el DataFrame a formato largo, de manera que todas las horas aparezcan en la misma columna.
operarios_largo = operarios.melt(id_vars=['Id', 'Departamento'], var_name='Mes', value_name='Horas')
print("DataFrame en formato largo")
operarios_largo
Out[6]:
In [9]:
# Apartado 6
# Mostrar por pantalla una serie con el número medio de horas trabajadas en cada departamento.
print("Media de horas mensuales trabajadas por departamentos")
print(operarios_largo.groupby('Departamento').Horas.mean())
In [10]:
# Apartado 7
# Mostrar por pantalla una serie con el total de horas trabajadas de cada operario.
print("Total de horas trabajadas de cada operario")
print(operarios_largo.groupby('Id').Horas.sum())
In [11]:
# Apartado 8
# Mostrar por pantalla una serie con los salarios de todos los operarios ordenados de mayor a menor.
print("Salarios de los operarios")
print((operarios_largo.groupby('Id').Horas.sum()*10).sort_values(ascending = False))
In [ ]: