Episodio

SNR - Episodio 5- Manipulación de datos con R

Este episodio consiste en realizar la manipulación de datos para derivar información sin procesar de los datos mediante el lenguaje de programación R. La manipulación de datos es el núcleo de todo y todo lo que se hace en inteligencia empresarial y aprendizaje automático. Este episodio establece la base para todas las sesiones de inteligencia basadas en R desde aquí.

[00:00] - Introducción
[00:27] - ¿Qué es la manipulación de datos?
[02:34] - dplyr & magrittr
[04:33] - Instalar paquetes
[06:50] - operador magrittr & pipe
[09:18] - leer en un .csv y nombres de limpieza
[22:07] - Manipulación de características
[28:12] - Manipulación de observación

[37:50] - Manipulación de grupos

[44:25] - Desafío Exersizes

#########################
#Libraries/Dependencias#
########################
install.packages("magrittr")
install.packages("dplyr")
install.packages("checkpoint")
operador de canalización #Adds %>% de reenvío
library("magrittr")
#adds agrupación y manipulaciones
library("dplyr")
library("checkpoint")
checkpoint("2016-03-29")
#########################
#'%>%' Operador de canalización#
#########################

mult = function(x,y){ x * y}
#2 * 6 * 5 * 10
#Traditional Way
mult(10, mult(5, mult(6, 2)))
#Piped (método)
#output en el primer parámetro de la función siguiente
2 %>%
mult(6) %>%
mult(5) %>%
mult(10)

###################
#Data En & Cambiar nombre#
##################

datos de #Read
m311 <- read.csv("C:\\data\\Miami_311.csv",
header=TRUE,
sep=",")
#Show formato incorrecto
m311
Formato de #Fix
m311 <- m311 %>% tbl_df()
#Summary del conjunto de datos
summary(m311$Case.Owner)
summary(m311)
#Renaming parte 1: Observaciones con la tabla de búsqueda (LUT)
caseOwnerLUT = c("Animal_Services" = "Animal Services",
"Public_Works_Construction-6-60" = "Construcción",
"Public_Works_Mosquito_Control-8-60" = "Control de mosquitos",
"Public_Works_Traffic_Engineering-10-60" = "Ingeniería de tráfico",
"Public_Works_Waste_Management" = "Gestión de residuos",
"Regulatory_and_Economic_Resources" = "Recursos normativos y económicos",
"Community_Information_and_Outreach" = "Información y divulgación",
"Public_Works_Hwy_Engineering-5-60" = "Ingeniería de tráfico",
"Public_Works_Road_And_Bridges-16-60" = "Carretera y puentes",
"Public_Works_traffic_Signals_And_Signs-15-60" = "Ingeniería de tráfico",
"RAAM-27-93" = "RAAM",
"Waste_Management" = "Gestión de residuos"
)
m311$Case.Owner = caseOwnerLUT[m311$Case.Owner] %>%
factor()
summary(m311$Case.Owner)
labels(m311)
#Renaming parte 2: Características
m311 = m311 %>%
rename(CreatedDate = Ticket.Created.Date... Tiempo) %>%
rename(LastUpdatedDate = Ticket.Last.Updated.Date... Tiempo) %>%
rename(ClosedDate = Ticket.Closed.Date... Tiempo) %>%
rename(Address = Location.Geo.. Codificado) %>%
rename(District = Neighborhood... Distrito... Ward... etc.) %>%
rename(Zip = Zip... Postal.Code) %>%
rename(State = State... Provincia)

#Sampling
m311f = m311 %>% sample_frac(.1)
m311n = m311 %>% sample_n(1000)

#######################
manipulación de #Feature#
######################

#Select algunas columnas
m311 %>%
select(Case.Owner, CreatedDate)

#Exclude una columna
m311 %>%
select(-ClosedDate)

#Select con el asistente
x = m311 %>%
select(contains("Issue"), Case.Owner)
x
distinct(x)

#Mutate
x = m311 %>%
mutate(
GoalKpi = (Goal.Days - Actual.Completed.Days) / Goal.Days
)
summary(x$GoalKpi) #obviously algunos problemas con este cálculo, como dividir por cero quizás?

###########################
manipulación de #Observation#
##########################

goals = m311 %>%
select(Case.Owner, Issue.Type, Goal.Days, Actual.Completed.Days, Ticket.Status)

zeroGoal = objetivos %>%
filter(Goal.Days <= 0)
#how hay muchos?
nrow(zeroGoal)
summary(zeroGoal$Ticket.Status)
#Lets reducir nuestros factores un poco aquí.
zeroGoal$Issue.Type = zeroGoal$Issue.Type %>% factor()
zeroGoal$Ticket.Status = factor(zeroGoal$Ticket.Status)

zeroGoal %>%
arrange(desc(Actual.Completed.Days)) %>%
glimpse()

zeroGoal$Actual.Completed.Days = as.numeric(zeroGoal$Actual.Completed.Days)

#Check resúmenes
zeroGoal %>%
resumen(
mean = mean(Actual.Completed.Days, na.rm = TRUE), #easy way
sd = sd(Actual.Completed.Days, na.rm = TRUE),
median = median(Actual.Completed.Days[!is.na(Actual.Completed.Days)]), #hard manera
observaciones = n(),
NasInActualCompleted = sum(is.na(Actual.Completed.Days))
)

#####################
manipulación de #Group#
####################

#A algunas propiedades sobre grupos
x = zeroGoal %>%
group_by(Case.Owner)
class(x)
x
#looks como un dataframe

#but puede realizar operaciones agrupadas
zeroGoal %>%
group_by(Case.Owner) %>%
resumen(
obs = n(),
avg.comp.days = mean(Actual.Completed.Days, na.rm = TRUE),
max.comp.days = max(Actual.Completed.Days, na.rm = TRUE),
min.comp.days = min(Actual.Completed.Days, na.rm = TRUE)
) %>%
arrange(avg.comp.days)

#############################
#Practice Exersices: parte 1#
#############################
# Para cada año, ¿qué eran? #
# los tres principales problemas y #
# promedio de tiempo de resolución #
############################

#Hints
install.packages("lubridate")
library("lubridate")
summary(m311$CreatedDate)

m311f$CreatedDate2 = as. Date(m311f$CreatedDate,
format="%m/%d/%Y")

year(m311f$CreatedDate2)

m311 %>%
select(Ticket.ID, Issue.Type, Actual.Completed.Days) %>%
top_n(3, Actual.Completed.Days) %>%
arrange(desc(Actual.Completed.Days))

##################
#Part 1: respuesta#
#################
m311 %>%
mutate(
Year = year(as. Date(CreatedDate, format="%m/%d/%Y"))
) %>%
group_by(Year, Issue.Type) %>%
resumen(
obs = n(),
avgResTime = mean(Actual.Completed.Days, na.rm = TRUE)
) %>%
top_n(3, obs) %>%
arrange(desc(obs))

#############################
#Practice Exersices: parte 2#
#############################
# ¿Qué son los tres métodos principales? #
# recibiremos gps #
#############################

##################
#Part 2: respuesta#
#################

m311 %>%
group_by(Method.Received) %>%
resumen(
gpsObs = sum(!is.na(Latitude) & !is.na(Longitud)))
) %>%
top_n(3, gpsObs) %>%
arrange(desc(gpsObs))

##############################
#Practice Exersices: parte 3 #
##############################
# Qué distritos de servicio #
# la mayoría de las solicitudes de cada uno #
# departamento y qué son #
# los tres principales problemas #
##############################

##################
#Part 3- Respuesta #
##################

m311 %>%
group_by(Case.Owner, District, Issue.Type) %>%
resumen(
issueObs = n()
) %>%
arrange(desc(issueObs)) %>%
resumen(
totalObs = sum(issueObs),
top_issues = toString(Issue.Type[1:3])
) %>%
top_n(3, totalObs) %>%
arrange(desc(totalObs)) %>% glimpse()

x[6,] %>% de vista()

SQL
R

¿Quiere hacer algún comentario? Comunique un problema aquí.