Olá, Afonso.
Fiz a leitura da base de dados da seguinte forma:
import pandas as pd
dados = pd.read_csv('relatorio.csv')
Primeiramente vamos converter as colunas Data para datetime e Tempo para timedelta, pois todos os dados estão com o tipo object
. Para comprovar isso execute o código dados.dtypes
. Caso você não conheça esses dois tipos de dados, deixo como recomendação de leitura complementar a documentação do NumPy "Datetimes and Timedeltas", que aborda muito bem isso. Podemos fazer essa conversão da seguinte forma:
dados['Data'] = pd.to_datetime(dados['Data'])
dados['Tempo'] = pd.to_timedelta(dados['Tempo'])
dados.head()
Saída
| Postos | Descricao | Data | Tempo |
---|
0 | FUJI L1 | Fim OP | 2022-05-09 08:00:00 | 0 days 00:47:04 |
1 | FUJI L1 | EM OPERAÇÃO | 2022-05-09 08:47:04 | 0 days 00:02:24 |
2 | FUJI L1 | MÁQUINA PARADA | 2022-05-09 08:49:28 | 0 days 00:19:41 |
3 | FUJI L1 | MÁQUINA PARADA | 2022-05-09 09:09:09 | 0 days 00:00:34 |
4 | FUJI L1 | Inicio OP | 2022-05-09 09:09:43 | 0 days 00:00:04 |
Conferindo novamente o tipo das colunas, obtemos:
dados.dtypes
Saída
Postos object
Descricao object
Data datetime64[ns]
Tempo timedelta64[ns]
dtype: objec
Agora vamos utilizar o método groupby do pandas para realizar a soma de acordo com determinado grupo, que nesse caso vai ser a descrição. Caso você não conheça esse método, a aula "Criando agrupamentos" do curso "Python Pandas: tratando e analisando dados" aborda-o. O seguinte trecho de código realizar esse agrupamento:
grouped = dados['Tempo'].groupby(dados['Descricao']).sum()
grouped
Saída:
Descricao
AGUARDANDO LIBERAÇÃO CQ 0 days 00:21:09
AGUARDANDO O PROCESSO 0 days 00:27:30
BUSCAR MATERIAL 0 days 01:23:01
EM OPERAÇÃO 0 days 04:38:00
Fim OP 0 days 02:15:43
Inicio OP 0 days 00:00:24
MÁQUINA PARADA 0 days 07:47:09
OPERADOR AUSENTE 0 days 01:03:39
PRODUÇÃO DE MELHORIAS 0 days 00:00:07
SERVIÇO DIGICON 0 days 06:19:25
SETUP 0 days 05:10:28
Name: Tempo, dtype: timedelta64[ns]
No código estamos primeiro selecionando a coluna Tempo (dados['Tempo']
), depois agrupamos pela descrição (.groupby(dados['Descricao']
) e logo após para obtermos os valores das somas de cada uma das descrições utilizamos o método .sum()
. Porém como você quer apenas os tempos de MÁQUINA PARADA, podemos fazer a filtragem da seguinte forma:
print(grouped['MÁQUINA PARADA'])
Saída:
0 days 07:47:09
Ou seja, o tempo total que a máquina ficou parada foi de 0 dias 7 horas 47 minutos e 9 segundos.
Espero ter ajudado e qualquer dúvida estou à disposição.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!