Explorando dados

Author

Ricardo Accioly

Published

June 27, 2025

Lendo dados de arquivos csv

library(tidyverse)
poco_filtrado <- read.csv("pocos_filtrados.csv")

Vamos inicialmente selecionar algumas colunas para podermos trabalhar com os dados.

As colunas que vamos trabalhar são:

  1. POCO
  2. OPERADOR
  3. ESTADO
  4. BACIA
  5. CAMPO
  6. TERRA_MAR
  7. CATEGORIA
  8. SITUACAO
  9. INICIO
  10. TERMINO
  11. PROFUNDIDADE_SONDADOR_M

Para selecionar colunas usamos a função select

## Vamos selecionar as colunas listadas acima
pocos_01 <- poco_filtrado %>% select(POCO,OPERADOR,ESTADO,BACIA, CAMPO,TERRA_MAR,CATEGORIA,SITUACAO, INICIO, TERMINO, PROFUNDIDADE_SONDADOR_M)
head(pocos_01)
#>              POCO       OPERADOR ESTADO     BACIA        CAMPO TERRA_MAR
#> 1   7-PRG-59H-RJS Equinor Brasil     RJ    Campos    PEREGRINO         M
#> 2    7-GVR-26D-MA          Eneva     MA  Parnaíba  GAVIÃO REAL         T
#> 3 6-BRSA-1349-RJS      Petrobras     RJ    Campos   MARLIM SUL         M
#> 4   7-CP-1505D-SE          Carmo     SE   Sergipe   CARMÓPOLIS         T
#> 5      7-GVP-6-MA          Eneva     MA  Parnaíba GAVIÃO PRETO         T
#> 6     7-TIE-1D-BA      SPE Tiêta     BA Recôncavo          TIÊ         T
#>              CATEGORIA                   SITUACAO           INICIO
#> 1      Desenvolvimento ABANDONADO PERMANENTEMENTE 24/04/2017 00:00
#> 2      Desenvolvimento                   ARRASADO 21/06/2017 00:00
#> 3 Jazida Mais Profunda                 PRODUZINDO 28/05/2017 00:00
#> 4      Desenvolvimento                 PRODUZINDO 24/05/2019 00:00
#> 5      Desenvolvimento                    FECHADO 04/02/2019 00:00
#> 6      Desenvolvimento                 PRODUZINDO 18/02/2019 00:00
#>            TERMINO PROFUNDIDADE_SONDADOR_M
#> 1 01/05/2017 00:00                  760.00
#> 2 05/07/2017 00:00                 2210.00
#> 3 16/07/2017 00:00                 4600.00
#> 4 04/06/2019 00:00                  935.00
#> 5 10/02/2019 00:00                 1430.00
#> 6 10/04/2019 00:00                 2614.42
summary(pocos_01)
#>      POCO             OPERADOR            ESTADO             BACIA          
#>  Length:30566       Length:30566       Length:30566       Length:30566      
#>  Class :character   Class :character   Class :character   Class :character  
#>  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
#>                                                                             
#>                                                                             
#>                                                                             
#>                                                                             
#>     CAMPO            TERRA_MAR          CATEGORIA           SITUACAO        
#>  Length:30566       Length:30566       Length:30566       Length:30566      
#>  Class :character   Class :character   Class :character   Class :character  
#>  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
#>                                                                             
#>                                                                             
#>                                                                             
#>                                                                             
#>     INICIO            TERMINO          PROFUNDIDADE_SONDADOR_M
#>  Length:30566       Length:30566       Min.   :   0           
#>  Class :character   Class :character   1st Qu.: 485           
#>  Mode  :character   Mode  :character   Median :1000           
#>                                        Mean   :1506           
#>                                        3rd Qu.:2239           
#>                                        Max.   :8613           
#>                                        NA's   :1004

Outra sumarização

library(summarytools)
dfSummary(pocos_01) |> stview(method = "render")

Data Frame Summary

pocos_01

Dimensions: 30566 x 11
Duplicates: 0
No Variable Stats / Values Freqs (% of Valid) Graph Valid Missing
1 POCO [character]
1. 1-A-1-BA
2. 1-AA-1-RN
3. 1-AB-1-BA
4. 1-AB-1-PA
5. 1-AB-1-SE
6. 1-AB-1-SP
7. 1-AB-1A-SE
8. 1-AB-2-SE
9. 1-ABV-1D-RN
10. 1-AC-1-PA
[ 30556 others ]
1 ( 0.0% )
1 ( 0.0% )
1 ( 0.0% )
1 ( 0.0% )
1 ( 0.0% )
1 ( 0.0% )
1 ( 0.0% )
1 ( 0.0% )
1 ( 0.0% )
1 ( 0.0% )
30556 ( 100.0% )
30566 (100.0%) 0 (0.0%)
2 OPERADOR [character]
1. Petrobras
2. 3R Potiguar
3. Carmo
4. 3R Candeias
5. 3R Fazenda Belém
6. Potiguar E&P S.A.
7. SPE Miranga
8. PetroRecôncavo
9. Seacrest SPE Cricaré
10. Origem Alagoas
[ 100 others ]
6689 ( 24.2% )
6277 ( 22.7% )
3870 ( 14.0% )
1431 ( 5.2% )
985 ( 3.6% )
912 ( 3.3% )
765 ( 2.8% )
737 ( 2.7% )
736 ( 2.7% )
609 ( 2.2% )
4629 ( 16.7% )
27640 (90.4%) 2926 (9.6%)
3 ESTADO [character]
1. RN
2. BA
3. SE
4. RJ
5. ES
6. CE
7. AL
8. AM
9. MA
10. SP
[ 14 others ]
8454 ( 27.7% )
7201 ( 23.6% )
4706 ( 15.4% )
3873 ( 12.7% )
2351 ( 7.7% )
1273 ( 4.2% )
975 ( 3.2% )
557 ( 1.8% )
398 ( 1.3% )
321 ( 1.1% )
457 ( 1.5% )
30566 (100.0%) 0 (0.0%)
4 BACIA [character]
1. Potiguar
2. Recôncavo
3. Sergipe
4. Campos
5. Espírito Santo
6. Alagoas
7. Santos
8. Solimões
9. Parnaíba
10. Amazonas
[ 27 others ]
9498 ( 31.1% )
6777 ( 22.2% )
4741 ( 15.5% )
3585 ( 11.7% )
2079 ( 6.8% )
941 ( 3.1% )
906 ( 3.0% )
367 ( 1.2% )
246 ( 0.8% )
239 ( 0.8% )
1187 ( 3.9% )
30566 (100.0%) 0 (0.0%)
5 CAMPO [character]
1. ESTREITO
2. CARMÓPOLIS
3. CANTO DO AMARO
4. FAZENDA BELÉM CE
5. DOM JOÃO
6. ALTO DO RODRIGUES
7. RIACHUELO
8. SIRIRIZINHO
9. MIRANGA
10. FAZENDA POCINHO
[ 519 others ]
2053 ( 7.8% )
2033 ( 7.7% )
1906 ( 7.2% )
973 ( 3.7% )
927 ( 3.5% )
874 ( 3.3% )
731 ( 2.8% )
640 ( 2.4% )
620 ( 2.3% )
558 ( 2.1% )
15144 ( 57.2% )
26459 (86.6%) 4107 (13.4%)
6 TERRA_MAR [character]
1. M
2. T
7027 ( 23.0% )
23539 ( 77.0% )
30566 (100.0%) 0 (0.0%)
7 CATEGORIA [character]
1. Desenvolvimento
2. Especial
3. Estratigráfico
4. Extensão
5. Injeção
6. Jazida Mais Profunda
7. Jazida Mais Rasa
8. Pioneiro
9. Pioneiro Adjacente
18949 ( 62.0% )
2026 ( 6.6% )
328 ( 1.1% )
2345 ( 7.7% )
1749 ( 5.7% )
144 ( 0.5% )
35 ( 0.1% )
4157 ( 13.6% )
833 ( 2.7% )
30566 (100.0%) 0 (0.0%)
8 SITUACAO [character]
1. FECHADO
2. ABANDONADO PERMANENTEMENT
3. PRODUZINDO
4. ABANDONADO TEMPORARIAMENT
5. ARRASADO
6. INJETANDO
7. DEVOLVIDO
8. ABANDONADO TEMPORARIAMENT
9. ABANDONADO AGUARDANDO ABA
10. CEDIDO PARA A CAPTAÇÃO DE
[ 13 others ]
6313 ( 20.7% )
5927 ( 19.5% )
5761 ( 18.9% )
4968 ( 16.3% )
2872 ( 9.4% )
1616 ( 5.3% )
1084 ( 3.6% )
835 ( 2.7% )
325 ( 1.1% )
222 ( 0.7% )
535 ( 1.8% )
30458 (99.6%) 108 (0.4%)
9 INICIO [character]
1. 03/08/1982 00:00
2. 22/04/1984 00:00
3. 24/07/1986 00:00
4. 25/11/1981 00:00
5. 29/04/1983 00:00
6. 01/03/1985 00:00
7. 02/09/1982 00:00
8. 05/02/1983 00:00
9. 05/11/1982 00:00
10. 06/01/1987 00:00
[ 16011 others ]
12 ( 0.0% )
9 ( 0.0% )
9 ( 0.0% )
9 ( 0.0% )
9 ( 0.0% )
8 ( 0.0% )
8 ( 0.0% )
8 ( 0.0% )
8 ( 0.0% )
8 ( 0.0% )
30478 ( 99.7% )
30566 (100.0%) 0 (0.0%)
10 TERMINO [character]
1. 01/04/1983 00:00
2. 01/11/1982 00:00
3. 08/03/1983 00:00
4. 11/10/2009 00:00
5. 31/12/1983 00:00
6. 20/11/1984 00:00
7. 22/02/1983 00:00
8. 24/03/1982 00:00
9. 26/11/1983 00:00
10. 02/11/1983 00:00
[ 15172 others ]
11 ( 0.0% )
11 ( 0.0% )
10 ( 0.0% )
10 ( 0.0% )
10 ( 0.0% )
9 ( 0.0% )
9 ( 0.0% )
9 ( 0.0% )
9 ( 0.0% )
8 ( 0.0% )
28610 ( 99.7% )
28706 (93.9%) 1860 (6.1%)
11 PROFUNDIDADE_SONDADOR_M [numeric]
Mean (sd) : 1505.8 (1351.3)
min ≤ med ≤ max:
0 ≤ 1000 ≤ 8613
IQR (CV) : 1754 (0.9)
6787 distinct values 29562 (96.7%) 1004 (3.3%)

Generated by summarytools 1.1.4 (R version 4.5.0)
2025-06-27

Manipulação de dados

Vamos eliminar as linhas de dados que apresenta dados ausentes “NA” nas colunas TERMINO e PROFUNDIDADE_SONDADOR_M.

sum(is.na(pocos_01))
#> [1] 10005
sum(is.na(pocos_01$INICIO))
#> [1] 0
sum(is.na(pocos_01$TERMINO))
#> [1] 1860
sum(is.na(pocos_01$PROFUNDIDADE_SONDADOR_M))
#> [1] 1004
pocos_01 <- pocos_01 %>% drop_na(any_of(c("TERMINO",
                            "PROFUNDIDADE_SONDADOR_M")))
# melhorando a visualização dos dados
knitr::kable(
  head(pocos_01, 10), booktabs = TRUE,
  caption = 'Uma tabela mais elegante com as 10 primeras linhas de pocos_01.')
Uma tabela mais elegante com as 10 primeras linhas de pocos_01.
POCO OPERADOR ESTADO BACIA CAMPO TERRA_MAR CATEGORIA SITUACAO INICIO TERMINO PROFUNDIDADE_SONDADOR_M
7-PRG-59H-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento ABANDONADO PERMANENTEMENTE 24/04/2017 00:00 01/05/2017 00:00 760.00
7-GVR-26D-MA Eneva MA Parnaíba GAVIÃO REAL T Desenvolvimento ARRASADO 21/06/2017 00:00 05/07/2017 00:00 2210.00
6-BRSA-1349-RJS Petrobras RJ Campos MARLIM SUL M Jazida Mais Profunda PRODUZINDO 28/05/2017 00:00 16/07/2017 00:00 4600.00
7-CP-1505D-SE Carmo SE Sergipe CARMÓPOLIS T Desenvolvimento PRODUZINDO 24/05/2019 00:00 04/06/2019 00:00 935.00
7-GVP-6-MA Eneva MA Parnaíba GAVIÃO PRETO T Desenvolvimento FECHADO 04/02/2019 00:00 10/02/2019 00:00 1430.00
7-TIE-1D-BA SPE Tiêta BA Recôncavo TIÊ T Desenvolvimento PRODUZINDO 18/02/2019 00:00 10/04/2019 00:00 2614.42
7-CP-1846D-SE Carmo SE Sergipe CARMÓPOLIS T Desenvolvimento ABANDONADO TEMPORARIAMENTE COM MONITORAMENTO 31/07/2019 00:00 10/08/2019 00:00 896.00
7-CP-1828D-SE Carmo SE Sergipe CARMÓPOLIS T Desenvolvimento PRODUZINDO 06/06/2019 00:00 19/06/2019 00:00 900.00
7-CP-1827D-SE Carmo SE Sergipe CARMÓPOLIS T Desenvolvimento PRODUZINDO 04/07/2019 00:00 29/07/2019 00:00 920.00
7-CP-1638D-SE Carmo SE Sergipe CARMÓPOLIS T Desenvolvimento PRODUZINDO 16/04/2019 00:00 08/05/2019 00:00 954.00
sum(is.na(pocos_01))
#> [1] 6096

Corrigindo tipo de dados

As colunas INICIO e TERMINO são datas, mas foram lidas como caracter, vamos corrigir isto!

Para trabalhar com datas vamos usar o pacote lubridate

library(lubridate)
pocos_01$INICIO <- dmy_hm(pocos_01$INICIO, locale = Sys.getlocale("LC_TIME"))
pocos_01$TERMINO <- dmy_hm(pocos_01$TERMINO, locale = Sys.getlocale("LC_TIME"))
str(pocos_01)
#> 'data.frame':    27793 obs. of  11 variables:
#>  $ POCO                   : chr  "7-PRG-59H-RJS" "7-GVR-26D-MA" "6-BRSA-1349-RJS" "7-CP-1505D-SE" ...
#>  $ OPERADOR               : chr  "Equinor Brasil" "Eneva" "Petrobras" "Carmo" ...
#>  $ ESTADO                 : chr  "RJ" "MA" "RJ" "SE" ...
#>  $ BACIA                  : chr  "Campos" "Parnaíba" "Campos" "Sergipe" ...
#>  $ CAMPO                  : chr  "PEREGRINO" "GAVIÃO REAL" "MARLIM SUL" "CARMÓPOLIS" ...
#>  $ TERRA_MAR              : chr  "M" "T" "M" "T" ...
#>  $ CATEGORIA              : chr  "Desenvolvimento" "Desenvolvimento" "Jazida Mais Profunda" "Desenvolvimento" ...
#>  $ SITUACAO               : chr  "ABANDONADO PERMANENTEMENTE" "ARRASADO" "PRODUZINDO" "PRODUZINDO" ...
#>  $ INICIO                 : POSIXct, format: "2017-04-24" "2017-06-21" ...
#>  $ TERMINO                : POSIXct, format: "2017-05-01" "2017-07-05" ...
#>  $ PROFUNDIDADE_SONDADOR_M: num  760 2210 4600 935 1430 ...

Filtrando dados

Vamos analisar os poços de uma detreminada região, para isto podemos fltrar os poços de um bloco. Vamos filtrar somente os poços do CAMPO PEREGRINO usando a função filter.

pocos_02 <- pocos_01 %>% filter(CAMPO=="PEREGRINO") ##  
summary(pocos_02)
#>      POCO             OPERADOR            ESTADO             BACIA          
#>  Length:108         Length:108         Length:108         Length:108        
#>  Class :character   Class :character   Class :character   Class :character  
#>  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
#>                                                                             
#>                                                                             
#>                                                                             
#>     CAMPO            TERRA_MAR          CATEGORIA           SITUACAO        
#>  Length:108         Length:108         Length:108         Length:108        
#>  Class :character   Class :character   Class :character   Class :character  
#>  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
#>                                                                             
#>                                                                             
#>                                                                             
#>      INICIO                       TERMINO                   
#>  Min.   :1994-07-07 00:00:00   Min.   :1994-08-17 00:00:00  
#>  1st Qu.:2012-02-06 06:00:00   1st Qu.:2012-03-30 00:00:00  
#>  Median :2014-02-08 00:00:00   Median :2014-04-05 12:00:00  
#>  Mean   :2014-12-06 00:13:20   Mean   :2015-01-09 08:00:00  
#>  3rd Qu.:2017-06-25 12:00:00   3rd Qu.:2017-06-14 06:00:00  
#>  Max.   :2023-05-19 00:00:00   Max.   :2023-06-15 00:00:00  
#>  PROFUNDIDADE_SONDADOR_M
#>  Min.   : 269           
#>  1st Qu.:4433           
#>  Median :4924           
#>  Mean   :5070           
#>  3rd Qu.:6138           
#>  Max.   :8613
knitr::kable(
  head(pocos_02, 10), booktabs = TRUE,
  caption = 'Uma tabela mais elegante com as 10 primeras linhas de pocos_02.')
Uma tabela mais elegante com as 10 primeras linhas de pocos_02.
POCO OPERADOR ESTADO BACIA CAMPO TERRA_MAR CATEGORIA SITUACAO INICIO TERMINO PROFUNDIDADE_SONDADOR_M
7-PRG-59H-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento ABANDONADO PERMANENTEMENTE 2017-04-24 2017-05-01 760.0
7-PRG-66HP-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento PRODUZINDO 2019-02-11 2019-03-07 6529.0
7-PRG-83H-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento PRODUZINDO 2023-03-18 2023-04-20 5854.0
7-PRG-8HPA-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento ABANDONADO PERMANENTEMENTE 2011-11-07 2011-12-02 4960.0
7-PRG-7H-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento FECHADO 2011-05-14 2011-06-15 4510.0
7-PRG-58HA-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento ABANDONADO PERMANENTEMENTE 2017-05-26 2017-06-04 6015.0
7-PRG-2HA-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento ABANDONADO PERMANENTEMENTE 2010-11-17 2010-12-10 3969.8
7-PRG-59HA-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento ABANDONADO PERMANENTEMENTE 2017-07-15 2017-07-15 269.0
7-PRG-67H-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento FECHADO 2019-05-09 2019-06-06 4465.0
7-PRG-14H-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento ABANDONADO PERMANENTEMENTE 2012-01-26 2012-02-04 1167.0

Avaliando os dados

Os poços possuem diversas categorias, vamos ver que categorias existem nestes poços campo de Peregrino.

unique(pocos_02$CATEGORIA)
#> [1] "Desenvolvimento" "Injeção"         "Extensão"        "Especial"       
#> [5] "Pioneiro"
pocos_02 %>% group_by(CATEGORIA) %>% summarize(total=n())
#> # A tibble: 5 × 2
#>   CATEGORIA       total
#>   <chr>           <int>
#> 1 Desenvolvimento    84
#> 2 Especial            3
#> 3 Extensão            7
#> 4 Injeção            13
#> 5 Pioneiro            1

Filtrando poços de desenvolvimento

pocos_03 <- pocos_02 %>% filter(CATEGORIA=="Desenvolvimento") ##  
summary(pocos_03)
#>      POCO             OPERADOR            ESTADO             BACIA          
#>  Length:84          Length:84          Length:84          Length:84         
#>  Class :character   Class :character   Class :character   Class :character  
#>  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
#>                                                                             
#>                                                                             
#>                                                                             
#>     CAMPO            TERRA_MAR          CATEGORIA           SITUACAO        
#>  Length:84          Length:84          Length:84          Length:84         
#>  Class :character   Class :character   Class :character   Class :character  
#>  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
#>                                                                             
#>                                                                             
#>                                                                             
#>      INICIO                       TERMINO                   
#>  Min.   :2010-11-10 00:00:00   Min.   :2010-11-11 00:00:00  
#>  1st Qu.:2012-04-27 06:00:00   1st Qu.:2012-06-08 00:00:00  
#>  Median :2014-11-20 00:00:00   Median :2014-12-05 00:00:00  
#>  Mean   :2015-06-21 20:00:00   Mean   :2015-07-26 19:25:42  
#>  3rd Qu.:2017-08-06 00:00:00   3rd Qu.:2017-08-15 12:00:00  
#>  Max.   :2023-03-18 00:00:00   Max.   :2023-04-20 00:00:00  
#>  PROFUNDIDADE_SONDADOR_M
#>  Min.   : 269           
#>  1st Qu.:4506           
#>  Median :5081           
#>  Mean   :5291           
#>  3rd Qu.:6397           
#>  Max.   :8613
knitr::kable(
  head(pocos_03, 10), booktabs = TRUE,
  caption = 'Uma tabela mais elegante com as 10 primeras linhas de pocos_03.')
Uma tabela mais elegante com as 10 primeras linhas de pocos_03.
POCO OPERADOR ESTADO BACIA CAMPO TERRA_MAR CATEGORIA SITUACAO INICIO TERMINO PROFUNDIDADE_SONDADOR_M
7-PRG-59H-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento ABANDONADO PERMANENTEMENTE 2017-04-24 2017-05-01 760.0
7-PRG-66HP-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento PRODUZINDO 2019-02-11 2019-03-07 6529.0
7-PRG-83H-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento PRODUZINDO 2023-03-18 2023-04-20 5854.0
7-PRG-8HPA-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento ABANDONADO PERMANENTEMENTE 2011-11-07 2011-12-02 4960.0
7-PRG-7H-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento FECHADO 2011-05-14 2011-06-15 4510.0
7-PRG-58HA-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento ABANDONADO PERMANENTEMENTE 2017-05-26 2017-06-04 6015.0
7-PRG-2HA-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento ABANDONADO PERMANENTEMENTE 2010-11-17 2010-12-10 3969.8
7-PRG-59HA-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento ABANDONADO PERMANENTEMENTE 2017-07-15 2017-07-15 269.0
7-PRG-67H-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento FECHADO 2019-05-09 2019-06-06 4465.0
7-PRG-14H-RJS Equinor Brasil RJ Campos PEREGRINO M Desenvolvimento ABANDONADO PERMANENTEMENTE 2012-01-26 2012-02-04 1167.0

Criando uma coluna com mutate

Vamos criar uma coluna que nos dará a duração da perfuração dos poços.

pocos_03$INICIO[1]
#> [1] "2017-04-24 UTC"
pocos_03$TERMINO[1]
#> [1] "2017-05-01 UTC"
pocos_03$TERMINO[1] - pocos_03$INICIO[1]
#> Time difference of 7 days
difftime(pocos_03$TERMINO[1], pocos_03$INICIO[1], units = "days")
#> Time difference of 7 days
tempo <- difftime(pocos_03$TERMINO[1], pocos_03$INICIO[1], units = "days")
str(tempo)
#>  'difftime' num 7
#>  - attr(*, "units")= chr "days"
(pocos_03$INICIO[1] %--% pocos_03$TERMINO[1])/ddays(1)
#> [1] 7
pocos_03 <- pocos_03 %>% mutate(TPERF = (INICIO %--% TERMINO)/ddays(1))
summary(pocos_03)
#>      POCO             OPERADOR            ESTADO             BACIA          
#>  Length:84          Length:84          Length:84          Length:84         
#>  Class :character   Class :character   Class :character   Class :character  
#>  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
#>                                                                             
#>                                                                             
#>                                                                             
#>     CAMPO            TERRA_MAR          CATEGORIA           SITUACAO        
#>  Length:84          Length:84          Length:84          Length:84         
#>  Class :character   Class :character   Class :character   Class :character  
#>  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
#>                                                                             
#>                                                                             
#>                                                                             
#>      INICIO                       TERMINO                   
#>  Min.   :2010-11-10 00:00:00   Min.   :2010-11-11 00:00:00  
#>  1st Qu.:2012-04-27 06:00:00   1st Qu.:2012-06-08 00:00:00  
#>  Median :2014-11-20 00:00:00   Median :2014-12-05 00:00:00  
#>  Mean   :2015-06-21 20:00:00   Mean   :2015-07-26 19:25:42  
#>  3rd Qu.:2017-08-06 00:00:00   3rd Qu.:2017-08-15 12:00:00  
#>  Max.   :2023-03-18 00:00:00   Max.   :2023-04-20 00:00:00  
#>  PROFUNDIDADE_SONDADOR_M     TPERF        
#>  Min.   : 269            Min.   :-347.00  
#>  1st Qu.:4506            1st Qu.:  14.50  
#>  Median :5081            Median :  24.50  
#>  Mean   :5291            Mean   :  34.98  
#>  3rd Qu.:6397            3rd Qu.:  37.25  
#>  Max.   :8613            Max.   : 598.00

Eliminando colunas com tempos negativos

pocos_03 %>% filter(TPERF<0) %>% select(POCO, INICIO, TERMINO)
#>              POCO     INICIO    TERMINO
#> 1 7-PRG-71HPA-RJS 2020-12-18 2020-01-06
#> 2  7-PRG-58HB-RJS 2017-06-19 2017-06-04
pocos_03 <- pocos_03 %>% filter(TPERF > 0) 

Visualizando os dados de PEREGRINO

Box-Plot

ggplot(pocos_03, aes(x=CAMPO, y=TPERF)) +
  geom_boxplot()

Vamos identificar estes poços (outliers).

ggplot(pocos_03, aes(x=CAMPO, y=TPERF)) +
  geom_boxplot() +
  geom_text(data = pocos_03 %>% filter(TPERF > 100), aes(label=POCO), vjust=-0.5)

Veja que existem alguns tempos bem elevados que estão representados no box-plot. Eles podem ser considerados pontos afastados (outliers), que neste exemplo vamos eliminar, mas que normalmente seria necessário investigar a razão destes valores.

pocos_04 <- pocos_03 %>% filter(TPERF < 100)
ggplot(pocos_04, aes(x=CAMPO, y=TPERF)) +
  geom_boxplot()

Histograma

ggplot(pocos_04, aes(x=TPERF)) +
  geom_histogram()

Veja que desta forma o ggplot usa o seu padrão de 30 faixas de dados, que geralmente não é o mais adequado.

Vamos usar uma regra adequada para definição de número de faixas.

Criando um histograma usando a regra de Sturges

A regra de Sturges indica 7 faixas enquanto que o padrão do ggplot2 é 30.

ggplot(pocos_04, aes(x = TPERF)) +
  geom_histogram(bins = round(1+3.322*log10(nrow(pocos_04)),0))

Veja que agora temos um histograma mais suave.

Grafico de Densidade

Outra opção é ver a densidade dos dados, que é uma forma de suavizar o histograma.

ggplot(pocos_04, aes(x = TPERF)) +
  geom_density()

Gráfico de Dispersão

ggplot(pocos_04, aes(x=PROFUNDIDADE_SONDADOR_M, y=TPERF)) + 
  geom_point()

cor(pocos_04$PROFUNDIDADE_SONDADOR_M, pocos_04$TPERF)
#> [1] 0.5253442

Podemos perceber que há uma relação entre o tempo de perfuração e a profundidade do poço.

Também é possível se perceber que ainda existem dados com comportamentos estranhos. Poços rasos com profundidade muito diferente dos demais, além disso um poço muito profundo com duração muito pequena.

Se fossemos construir um modelo certamente terímos que investigar o porque destes comportamentos.

Identificando poços

## Mostrando rótulos e reduzindo tamanho das letras
# library(ggrepel)
ggplot(pocos_04, aes(x=PROFUNDIDADE_SONDADOR_M, y=TPERF)) + 
  geom_point() + 
  geom_text(data = pocos_04 %>% filter(PROFUNDIDADE_SONDADOR_M < 1000 & TPERF < 20), aes(label=POCO), size=2, vjust=-0.5, color="red") +
  geom_text(data = pocos_04 %>% filter(PROFUNDIDADE_SONDADOR_M > 7500 & TPERF < 20), aes(label=POCO), size= 2, vjust=-0.5, color="blue") + 
  theme_minimal()

pocos_04 %>% filter(PROFUNDIDADE_SONDADOR_M < 1000) %>% select(POCO, PROFUNDIDADE_SONDADOR_M, TPERF)
#>            POCO PROFUNDIDADE_SONDADOR_M TPERF
#> 1 7-PRG-59H-RJS                     760     7
#> 2  7-PRG-2H-RJS                     742     1
#> 3 7-PRG-76H-RJS                     688     8
pocos_04 %>% filter(PROFUNDIDADE_SONDADOR_M > 7500 & TPERF<20) %>% select(POCO, PROFUNDIDADE_SONDADOR_M, TPERF)
#>             POCO PROFUNDIDADE_SONDADOR_M TPERF
#> 1 7-PRG-57HA-RJS                    8613     5

Definitivamente se o objetivo for criar um modelo preditivo, estes poços devem ser investigados, pois eles não seguem o padrão dos demais.

Melhorando a descrição das colunas

names(pocos_04)
#>  [1] "POCO"                    "OPERADOR"               
#>  [3] "ESTADO"                  "BACIA"                  
#>  [5] "CAMPO"                   "TERRA_MAR"              
#>  [7] "CATEGORIA"               "SITUACAO"               
#>  [9] "INICIO"                  "TERMINO"                
#> [11] "PROFUNDIDADE_SONDADOR_M" "TPERF"
pocos_04A <- pocos_04
names(pocos_04) <- tolower(names(pocos_04))
names(pocos_04)
#>  [1] "poco"                    "operador"               
#>  [3] "estado"                  "bacia"                  
#>  [5] "campo"                   "terra_mar"              
#>  [7] "categoria"               "situacao"               
#>  [9] "inicio"                  "termino"                
#> [11] "profundidade_sondador_m" "tperf"
# Outra forma com o pacote janitor
library(janitor)
names(pocos_04A)
#>  [1] "POCO"                    "OPERADOR"               
#>  [3] "ESTADO"                  "BACIA"                  
#>  [5] "CAMPO"                   "TERRA_MAR"              
#>  [7] "CATEGORIA"               "SITUACAO"               
#>  [9] "INICIO"                  "TERMINO"                
#> [11] "PROFUNDIDADE_SONDADOR_M" "TPERF"
pocos_04A <- clean_names(pocos_04A)
names(pocos_04A)
#>  [1] "poco"                    "operador"               
#>  [3] "estado"                  "bacia"                  
#>  [5] "campo"                   "terra_mar"              
#>  [7] "categoria"               "situacao"               
#>  [9] "inicio"                  "termino"                
#> [11] "profundidade_sondador_m" "tperf"