Lo primero que haremos, será consultar y explorar el data frame planes y weather para recordar su contenido. Función: View()
view(planes)
view(weather)
view(airlines)
view(flights)
| Después, para cada vuelo, visualizaremos la aerolínea, el aeropuerto de origen, el aeropuerto destino y el nombre de la aerolínea, el cuál importaremos de airlines. Esto, con ayuda de la función left_join(). |
r vuelos <- flights%>% select(flight,carrier,origin,dest)%>% left_join(airlines, by = "carrier") head(vuelos) |
## # A tibble: 6 x 5 ## flight carrier origin dest name ## <int> <chr> <chr> <chr> <chr> ## 1 1545 UA EWR IAH United Air Lines Inc. ## 2 1714 UA LGA IAH United Air Lines Inc. ## 3 1141 AA JFK MIA American Airlines Inc. ## 4 725 B6 JFK BQN JetBlue Airways ## 5 461 DL LGA ATL Delta Air Lines Inc. ## 6 1696 UA EWR ORD United Air Lines Inc. |
Después agruparemos la base de datos por aerolínea e identificaremos cuáles son los destinos más buscados para cada una de ellas. Para hacer más sencillo este análisis, importaremos los nombres de cada carrier de la tabla airlines.
Al ordenar los datos por orden descendente, podemos darnos cuenta que la aerolínea Delta y el destino Atlanta representaron el mayor número de vuelos. En el caso de American Airlines apreció 2 veces y los destinos más recurrentes fueron Dallas y Miami
popular_dest <- flights%>%
group_by(dest, carrier)%>%
count(dest, name= "cantidad_vuelos")%>%
left_join(airlines, by = "carrier")%>%
arrange(desc(cantidad_vuelos))
head(popular_dest)
## # A tibble: 6 x 4
## # Groups: dest, carrier [6]
## dest carrier cantidad_vuelos name
## <chr> <chr> <int> <chr>
## 1 ATL DL 10571 Delta Air Lines Inc.
## 2 CLT US 8632 US Airways Inc.
## 3 DFW AA 7257 American Airlines Inc.
## 4 MIA AA 7234 American Airlines Inc.
## 5 ORD UA 6984 United Air Lines Inc.
## 6 IAH UA 6924 United Air Lines Inc.
Después, viusualizaremos las aerolíneas y destinos que vuelan en distintos horarios, clasificándolos por: Mañana (de 6 a 12), Tarde (de 12 a 19) , Noche (19 a 24) y Madrugada de (24 a 6) con ayuda de la funcion mutate(), ifelse() y nuevamente left_join() para visualizar el nombre de cada aerolínea.
horarios <- flights %>%
select(carrier, dest, sched_dep_time)%>%
left_join(airlines, by = "carrier")%>%
mutate (horario_takeoff= ifelse(sched_dep_time < 600, "Madrugada", ifelse(sched_dep_time < 1200, "Mañana", ifelse(sched_dep_time < 1900,"Tarde","Noche"))))
head(horarios)
## # A tibble: 6 x 5
## carrier dest sched_dep_time name horario_takeoff
## <chr> <chr> <int> <chr> <chr>
## 1 UA IAH 515 United Air Lines Inc. Madrugada
## 2 UA IAH 529 United Air Lines Inc. Madrugada
## 3 AA MIA 540 American Airlines Inc. Madrugada
## 4 B6 BQN 545 JetBlue Airways Madrugada
## 5 DL ATL 600 Delta Air Lines Inc. Mañana
## 6 UA ORD 558 United Air Lines Inc. Madrugada
Posteriormente, se agruparan los datos por aerolínea y destino con la función group_by() y añadiremos otra columna, con la función count() para identificar la cantidad de vuelos que hay hay por la Mañana, Tarde, Noche y Madrugada. Por último, ordenaremos de forma descendente.
A partir de estos resultados, podemos darnos cuenta que la mayoría de vuelos se realizan en la tarde o en la mañana, independientemente de cuál sea la aerolínea
airline_horarios <- horarios%>%
group_by(carrier, dest, horario_takeoff)%>%
count(horario_takeoff, name= "num_vuelos")%>%
arrange(desc(num_vuelos))
head(airline_horarios)
## # A tibble: 6 x 4
## # Groups: carrier, dest, horario_takeoff [6]
## carrier dest horario_takeoff num_vuelos
## <chr> <chr> <chr> <int>
## 1 DL ATL Tarde 4967
## 2 DL ATL Mañana 4520
## 3 US CLT Mañana 4253
## 4 US CLT Tarde 4028
## 5 AA DFW Tarde 3850
## 6 UA ORD Tarde 3394
| Después, sobre el dataframe anterior, seleccionaremos las columnas que nos interesan y filtraremos para que nos arroje únicamnete la aerolínea American Airlines y los vuelos de madrugada con la función filter() |
| Lo que podemos identificar aquí es que para la aerolínea American Airlines, solamente hay un destino que tiene vuelos en la madrugada. Este es Miami, el cual mencionamos ya, es un destino frecuente y observando la tabla anterior, podemos darnos cuenta de que se realizaron bastantes vuelos. Específicimante: 3378 |
| A pesar de que solo es 1 destino, es importante considerarlo porque son pocas las aerolíneas que realizan vuelos en la madrugada |
| ___ |
r AA_madrugada <- airline_horarios%>% select(carrier,dest,horario_takeoff)%>% filter(carrier == "AA", horario_takeoff== "Madrugada") head(AA_madrugada) |
## # A tibble: 1 x 3 ## # Groups: carrier, dest, horario_takeoff [1] ## carrier dest horario_takeoff ## <chr> <chr> <chr> ## 1 AA MIA Madrugada |
Después generaremos un dataframe nuevo, uniendo los datos de flights y planes por medio de la columna tailnum para saber la aerolínea, tipo, motor, número de asientos y cuántos vuelos se han realizado con cada uno. con ayuda de las funciones left_join(), select(), filter(), group_by(), count()
A partir de esto, podemos notar que hay aviones a los que se les saca mucho provecho, como lo es el N328AA, que realiza incluso más de un vuelo al día, sin embargo, existen otros que durante el periodo de un año realizaron muy pocos vuelos, lo cuál probablemente le esté costando más a la empresa (tenerlos estacionados que volando), por lo tanto, vuelos como el N536 AA, que solo realizo 4 vuelos, deberían ser desocontinuados.
AA_aviones <- flights%>%
left_join(planes, by= "tailnum") %>%
select(carrier, tailnum, type, engine, seats)%>%
filter(carrier == "AA") %>%
group_by(tailnum, carrier, type, engine, seats)%>%
count(name= "num_vuelos_por_avión")%>%
na.omit()%>%
arrange(desc(num_vuelos_por_avión))
head(AA_aviones)
## # A tibble: 6 x 6
## # Groups: tailnum, carrier, type, engine, seats [6]
## tailnum carrier type engine seats num_vuelos_por_avión
## <chr> <chr> <chr> <chr> <int> <int>
## 1 N328AA AA Fixed wing multi engine Turbo-fan 255 393
## 2 N338AA AA Fixed wing multi engine Turbo-fan 255 388
## 3 N327AA AA Fixed wing multi engine Turbo-fan 255 387
## 4 N335AA AA Fixed wing multi engine Turbo-fan 255 385
## 5 N323AA AA Fixed wing multi engine Turbo-fan 255 357
## 6 N319AA AA Fixed wing multi engine Turbo-fan 255 354
Después crearemos un nuevo dataframe donde se filtren los aviones que sumen menos de 52 vuelos.
Mi propuesta, para poder eliminar aviones es descartar todo aquel que no cumpla con un mínimo de un vuelo a la semana, ya que podrían causar problemas de rentabilidad
aviones_eliminar <- AA_aviones%>%
filter(num_vuelos_por_avión<52)
aviones_eliminar
## # A tibble: 130 x 6
## # Groups: tailnum, carrier, type, engine, seats [130]
## tailnum carrier type engine seats num_vuelos_por_avi…
## <chr> <chr> <chr> <chr> <int> <int>
## 1 N473AA AA Fixed wing multi engi… Turbo-fan 172 51
## 2 N520AA AA Fixed wing single eng… Reciprocati… 2 51
## 3 N556AA AA Fixed wing multi engi… Turbo-fan 172 51
## 4 N591AA AA Fixed wing multi engi… Turbo-fan 172 51
## 5 N593AA AA Fixed wing multi engi… Turbo-fan 172 51
## 6 N475AA AA Fixed wing multi engi… Turbo-fan 172 50
## 7 N476AA AA Fixed wing multi engi… Turbo-fan 172 50
## 8 N573AA AA Fixed wing multi engi… Turbo-fan 172 50
## 9 N589AA AA Fixed wing multi engi… Turbo-fan 172 50
## 10 N594AA AA Fixed wing multi engi… Turbo-fan 172 50
## # … with 120 more rows
#filtrar menores a 52
Con la herramienta geom_point de ggplot, realizamos un Scatterplot de los tiempos de retraso. En el eje Y tenemos los datos de arr_delay y en el eje X los de dep_delay.
La gráfica nos permite observar que cuando ocurre un retraso en la salida, se genera un retraso directamente proporcional en la llegada y que el retraso más común se da en un rango 0 a 250 minutos.
___
AA_retrasos <- flights%>%
filter(carrier == "AA")
ggplot(AA_retrasos, mapping = aes(x= dep_delay, y = arr_delay)) + geom_point(size=.4, color="#37AFFF", fill="#37AFFF")
## Warning: Removed 782 rows containing missing values (geom_point).
___
Para la siguiente gráfica, se tuvo que genarar un nuevo dataframe, donde solamente se contuvieran los datos de los primero días de enero y los promedios que registraron de temperatura.
Después de esto, se generó una visualización de ggplot con una gráfica de línea. Con esto, podemos observar que la temparetura duranteesos días fue en aumento. ___
clima_enero <- weather%>%
select(origin, month, day, temp)%>%
filter(origin== "EWR", month==1, day <= 15)%>%
group_by(day)%>%
mutate(avg= mean(temp))
gráfica_linea <- ggplot(clima_enero, mapping= aes(x=day, y= avg))+ geom_line (color="#185DF2")
gráfica_linea
____
Para la siguiente gráfica, retomaremos el dtaframe construido en el paso anterior y generaremos un histograma.
De acuerdo a la gráfica, podemos observar que la temperatura más frecuente en los primeros 15 días del mes de Enero, fue de 37 a 38.
histograma_clima <- ggplot(clima_enero, mapping = aes(x = temp)) + geom_histogram(color="#185DF2", fill="#67CBFF")
histograma_clima
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
___
Después, tomando los datos contenidos en weather, podemos utilizar facets para observar cómo varía la temperatura en cada mes en él histograma del punto anterior.
A través de esto, podmeos identificar que los meses con temperaturas más altas son Agosto y Julio, mientras que los que presentan temperaturas más bajas son Enero y Diciembre.
facets_clima <- ggplot(data = weather, mapping = aes(x = temp)) + geom_histogram(color="#185DF2", fill="#67CBFF") + facet_wrap("month")
facets_clima
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 1 rows containing non-finite values (stat_bin).
___
Para esta visualización, es necesario hacer un nuevo dataframe, en el que se agrupen los datos por carrier, se contabilice el número de vuelos, se ordene de manera descendiente y se excluyan a los 10 mejores. Una vez generado esto, podemos hacer una visualización por medio de una gráfica de barras.
Al observar la gráfica de barras, podemos dranos cuenta que la aerolínea con más vuelos fue United Airlines y que AA se encuentra dentro del top 10 y más específicamente dentro de los primeros 5 carriers.
top_aerolineas <- flights%>%
group_by(carrier) %>%
count(name= "num_vuelos") %>%
arrange(desc(num_vuelos)) %>%
head(10)
gráfica_barras <- ggplot(top_aerolineas, aes(x=carrier, num_vuelos, fill =carrier))+ geom_bar(stat = "identity")
gráfica_barras
___
En la siguiente gráfica, podemos observar exactamente los mismos resultados, solamente que ahora en un formato de gráfica pie.
gráfica_pie <- ggplot(data = top_aerolineas, mapping = aes(x = "carrier", y = num_vuelos, fill = carrier)) + geom_bar(stat = "identity") + coord_polar( theta = "y")
gráfica_pie
___
Para unir airports con flights, se debe relacionar la columna faa (de airports) con la columna dest (de flights) con ayuda de la función left_join.
flights_air <- flights %>%
left_join(airports, by = c("dest" = "faa"))
flights_air
## # A tibble: 336,776 x 26
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 1 517 515 2 830 819
## 2 2013 1 1 533 529 4 850 830
## 3 2013 1 1 542 540 2 923 850
## 4 2013 1 1 544 545 -1 1004 1022
## 5 2013 1 1 554 600 -6 812 837
## 6 2013 1 1 554 558 -4 740 728
## 7 2013 1 1 555 600 -5 913 854
## 8 2013 1 1 557 600 -3 709 723
## 9 2013 1 1 557 600 -3 838 846
## 10 2013 1 1 558 600 -2 753 745
## # … with 336,766 more rows, and 18 more variables: arr_delay <dbl>,
## # carrier <chr>, flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
## # air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>,
## # name <chr>, lat <dbl>, lon <dbl>, alt <dbl>, tz <dbl>, dst <chr>,
## # tzone <chr>
Por último, crearemos un nuevo dataframe con únicamente con los 5 carriers con más vuelos por destino. Esto lo haremos agrupando por carrier con la función gropu_by(), después añadiremos una colunma que contabilice el número de vuelos y que se llamará count y para terminar ordenaremos de manera descendente y solamente nos quedaremos con los primeros 5 renglones.
Lo que podemos observar de esta tabla, es que los 2 destinos más recurrentes de AA son Miami y Dallas Forth
air_f<- flights_air %>%
group_by(carrier, dest) %>%
count( name="count") %>%
arrange(desc(count))
air_f
## # A tibble: 314 x 3
## # Groups: carrier, dest [314]
## carrier dest count
## <chr> <chr> <int>
## 1 DL ATL 10571
## 2 US CLT 8632
## 3 AA DFW 7257
## 4 AA MIA 7234
## 5 UA ORD 6984
## 6 UA IAH 6924
## 7 UA SFO 6819
## 8 B6 FLL 6563
## 9 B6 MCO 6472
## 10 AA ORD 6059
## # … with 304 more rows
top_5 <- air_f%>%
head(5)
top_5
## # A tibble: 5 x 3
## # Groups: carrier, dest [5]
## carrier dest count
## <chr> <chr> <int>
## 1 DL ATL 10571
## 2 US CLT 8632
## 3 AA DFW 7257
## 4 AA MIA 7234
## 5 UA ORD 6984
Con los datos del top_5 podemos generar una visualización de barras con la función geom_col y ver los resultados gráficamente.
A partir de esto, podemos darnos cuenta de que el hecho de que Amnerican Airlines cuente con 2 destinos frecuentes, lo posiciona mejor que a sus competidores, que si bien tienen muchos vuelos, se limitan a 1 destino
gráfica <- ggplot(top_5, mapping = aes(x = carrier, y = count, fill = dest)) + geom_col()
gráfica
___ Con los datos del top_5 podemos generar una visualización de barras separadas con la función geom_col
Con esta gráfica, podemos confirmar lo anterior. Si separaramos por destino, el acumulado de vuelos de American Airlines estaría por debajo de los de Delta y US Airways. ___
ggplot(top_5, mapping = aes(x = carrier, y = count, fill = dest)) + geom_col(stat = "identity", position = "dodge")
## Warning: Ignoring unknown parameters: stat
___ Con los datos del top_5 podemos generar una visualización de facets con la función geom_col y facet_grid()
Con esta tabla, podemos identificar que ninguna aerolínea cuenta con el mismo destino frecuente, lo cual nos indica que todas han sabido definir su propio mercado y alejarse de la competencia.
ggplot(top_5, mapping = aes(x = carrier, y = count, fill = dest)) + geom_col() + facet_grid("dest")
___ ### Concluciones
• Describe el valor de la integridad.
La Integridad deriva del adjetivo integer, el cual significa intacto y no tocado o no alcanzado por un mal. Por lo tanto, algo integro, se refiere a lago bueno y realicado sin dobles intenciones. En una persona, la integridad se refiere a alguien educado y responsable en sus acciones. Alguien en que se puede confiar y cuyas acciones sabemos serán correctas. La integridad está fuertemente ligada a nuestra moral…el valor que tiene la integridad en nosotros y como nos perciben otros es inmenso.
Una persona debe aspirar a mantener su integridad y alinearse a su moral a lo largo de toda su vida y en todo lo que realice.
• Agrega una reflexión personal de cómo puedes actuar con respeto y honestidad en los negocios y en el uso de datos cuando realices análisis de datos y estés en contacto con los datos de una empresa.
Al estar en contacto con los datos de una empresa, los datos se deben analizar con apego a la realidad. Siempre debe ser primordial el no generar modificaciones a nuestra conveniencia y generar información falsa o érronea. Del mismo modo, es de vital importancia tratar con estricta confidencialidad cualquier cosa que se nos proporcione ya que representan un activo muy grande de las compañías y en manos de la competencia podrían ser utilizados con malicia.
Por lo tanto,siempre que se travbaje con datos reales se debe cuidar su tarto y apegarse a nuestros valores, perservando la integridad personal y profesional.
• Agrega al menos 3 bibliografías y cítalas en el punto anterior. Lynn, J. (2020). Gestión de datos de investigación: Privacidad de los datos y confidencialidad. Retrieved 14 March 2021, from https://biblioguias.cepal.org/c.php?g=495473&p=4398114
Raffino, M. (2020). Integridad - Concepto, clasificación, valores y ejemplos. Retrieved 14 March 2021, from https://concepto.de/integridad/
Significado de Integridad. (2016). Retrieved 14 March 2021, from https://www.significados.com/integridad/