Buscar este blog

viernes, 19 de marzo de 2021

USANDO FUNCION case_when en lugar de condicional IF/ELSE

Este tutorial le mostrará cómo usar la función case_when en R para implementar lógica condicional en lugar de  if / else ó if / elif / else.

Supongamos que tenemos las calificaciones de un grupo estudiantes en un curso de quimica. Estos estudiantes toman un examen cuya calificación va de 0 a 100. Según el puntaje de la prueba, cada estudiante obtendrá una calificación en número (0-100) y una letra(A;B;C;D;F) siguiendo la siguientes reglas (escala):

Si la puntuación es mayor o igual a 90, asigne una "A"

De lo contrario, si la puntuación es mayor o igual a 80, asigne una "B"

De lo contrario, si la puntuación es mayor o igual a 70, asigne una "C"

De lo contrario, si la puntuación es mayor o igual a 60, asigne una "D"

De lo contrario, asigne una "F"

En difinitiva queremos llegar a una tabla como esta:


comencemos creando un vector con laas calificaciones nmericas:

test_score_vector <- c(94,90,88,75,66,65,45)

> test_score_vector
[1] 94 90 88 75 66 65 45

Ahora usaremos la funcion case_when para convertir esas calificaciones numericas en aprobado/reprobado

Primero veamos un ejemplo simple de sintaxis.

Podemos usar case_when para implementar un tipo simple de lógica, donde la función solo prueba una condición única y genera un valor si esa condición es VERDADERA. (TRUE)

Para hacer esto sintácticamente, simplemente escribimos el nombre de la función: case_when ().

Luego, dentro del paréntesis, hay una expresión con un "lado izquierdo" y un "lado derecho", que están separados por una tilde (~).
En nuestro caso podemos escribir:

> case_when(test_score_vector >= 60 ~ 'APRB'
+           ,TRUE ~ 'REPRO'
+ )
[1] "APRB"  "APRB"  "APRB"  "APRB"  "APRB"  "APRB"  "REPRO"

Comparemos con:
test_score_vector <- c(94,90,88,75,66,65,45)

Puede notarse que cuando un valor del vector test_score_vector  es  mayor a 60 se obtiene un APRB (APROBADO) y si es menor REPRO (REPROBADO)

Entonces la función case_when ha recorrido el vector test_score_vector elemento por elemento y ha asignado el valor APRB si el elemnto es mayor o igual a 60 (lado izquierdo del código (test_score_vector >= 60 ~ 'APRB' ,TRUE ~ 'REPRO'). Si no se cumple esa condición asigna REPRO

CASO MAS COMPLEJO

USAMOS CASE_WHEN PARA REALIZAR IF-ELIF-ELSE

A continuación, usaremos case_when () en un vector de datos, test_score_vector, pero lo usaremos para probar varios casos y asignar los siguientes valores:

Si test_score_vector es mayor o igual que 90, asigne 'A'
De lo contrario, si test_score_vector es mayor o igual que 80, asigne 'B'
De lo contrario, si test_score_vector es mayor o igual que 70, asigne 'C'
De lo contrario, si test_score_vector es mayor o igual a 60, asigne 'D'
De lo contrario, asigne 'F'
Entonces vamos a usar case_when () como una declaración if-elif-else, aplicada a un vector de datos.


> case_when (test_score_vector>= 90 ~ 'A'
+            , test_score_vector>= 80 ~ 'B'
+            , test_score_vector>= 70 ~ 'C'
+            , test_score_vector>= 60 ~ 'D'
+            , TRUE ~ 'F'
+ )
[1] "A" "A" "B" "C" "D" "D" "F"

comparemos con el vector:

[1] 94 90 88 75 66 65 45

puede notarse la asignacion correcta de las calificaciones en letras

lunes, 1 de marzo de 2021

Seaborn: un buen modulo para visualización de datos en python?

 



La visualización de datos es extremadamente importante en la ciencia de datos.

Porque es importante te preguntaras?

Es necesario para casi todos los pasos del flujo de trabajo de la ciencia de datos.

Es fundamental en todos los niveles de trabajo de ciencia de datos, pero especialmente en los niveles junior e intermedio.

Ya sea que esté haciendo exploración de datos, análisis de datos, búsqueda de información valiosa, narración de historias con datos o creando un modelo de aprendizaje automático, probablemente necesitará usar la visualización de datos. Por lo tanto, debes darle  al aprendizaje de visualización de datos de   una alta prioridad.

En mi opinion Seaborn es la mejor opción en este momento para la visualización de datos estadísticos en Python.

Por que?

1) SEABORN ES FÁCIL DE USAR

La principal razón por la que me gusta Seaborn es que es fácil de usar.

En Seaborn, las visualizaciones estadísticas más comunes se pueden crear con una línea simple o unas pocas líneas de código.

Por ejemplo, si desea crear un diagrama de dispersión en Seaborn, una vez que tenga sus datos, el diagrama en sí es muy fácil de crear.

 >>>sns.scatterplot (data=, x=, y =)

LA SINTAXIS DE SNS.SCATTERPLOT

La sintaxis para crear un diagrama de dispersión de Seaborn es bastante sencilla.

En el caso más simple, puede llamar a la función, proporcionar el nombre del DataFrame y luego las variables que desea poner en el eje x e y. Puede pasar el nombre del DataFrame al parámetro de datos y pasar las variables al parámetro x y al parámetro y. (Te mostraré un ejemplo claro de esto en la sección de ejemplos).

Lo primero que hay que hacer es importar el modulo Seaborn con la función import

>>>import seaborn as sns

Para realizar un diagrama de dispersión (“scatterplot” en ingles) la sintaxis (código) es simple. El método a usar es “scatterplot”

>>>sns.scatterplot (data=, x=, y =)

Como puede verse, puede crear un diagrama de dispersión simple con solo 3 parámetros.

data = dataframe con los datos

x = la vriable que se quiere colocar en el eje x

y = la variable que se quiere colocar en el eje y


Así pues con este simple código:

>>>sns.scatterplot (data=, x=, y =)

se puede creear un grafico como el que se muestra en este post.



 

 

 

Las funciones de Seaborn están bastante bien diseñadas, son fáciles de entender y de usar.

sábado, 13 de febrero de 2021

Diccionarios en Python


En Python un Diccionario es una estructura de datos con características especiales que nos permite almacenar cualquier tipo de datos (enteros, cadenas, listas e incluso otras funciones). Estos diccionarios permiten identificar cada elemento por una clave (Key).

Para definir un diccionario, se encierra el listado de valores entre llaves. Las parejas de clave y valor se separan con comas, y la clave y el valor se separan con dos puntos.

diccionario = {'nombre' : 'Rafa', 'edad' : 25, 'cursos': ['Python','P5','JavaScript'] }

Se acceder al elemento de un Diccionario mediante la clave de este elemento, como veremos a continuación:

print diccionario['nombre'] #Rafa

print diccionario['edad']#25

print diccionario['cursos'] #['Python','P5','JavaScript']

En la variable diccionario de arriba ‘cursos’ es una lista (compuesta de 'Python','P5','JavaScript') . Para acceder a cada uno de los cursos entro de la lista usamos  índices:

print diccionario['cursos'][0]#Python

print diccionario['cursos'][1]#P5

print diccionario['cursos'][2]#JavaScript

Para recorrer todo el Diccionario, podemos hacer uso de la estructura for:

        for key in diccionario:

            print key, ":", diccionario[key]

lunes, 8 de febrero de 2021

Sesgo

 #Sesgo #bias (en ingles)

Como se ha comentado anteriormente (link) ,en estadística se usan muestras de datos para hacer estimaciones sobre el conjunto de datos completo (población).

El sesgo es la tendencia de un modelo estadístico o predictivo a sobrestimar o subestimar un parámetro. A menudo, esto se debe al método utilizado para obtener la muestra o la forma en que se miden los errores. Hay varios tipos de sesgos que se encuentran comúnmente en las estadísticas. Aquí hay una breve descripción de dos de ellos.



Sesgo de selección: esto ocurre cuando la muestra se selecciona de forma no aleatoria. En la ciencia de datos, un ejemplo puede ser detener una prueba antes de que termine o seleccionar datos (manualmente) para entrenar un modelo de aprendizaje automático  que podría enmascarar los efectos reales.

Sesgo de confirmación: esto ocurre cuando la persona que realiza el análisis tiene una suposición predeterminada sobre los datos. En esta situación, puede haber una tendencia a dedicar más tiempo a examinar las variables que probablemente apoyen este supuesto.

Correlacion

La correlación es una técnica estadística que cuantifica las relaciones entre dos variables. Se supone que la correlación es lineal (formando una línea cuando se muestra en un gráfico) y se expresa como un número entre +1 y -1, esto se conoce como el coeficiente de correlación.

Un coeficiente de correlación de +1 denota una correlación perfectamente positiva (cuando el valor de una variable aumenta, el valor de la segunda variable también aumenta), un coeficiente de 0 denota que no hay correlación y un coeficiente de -1 denota una correlación negativa perfecta.

EN el grafico de abajo puede  verse como los datos aparecen en un grafico según el nivel de correlación (R.= coeficiente de correlación)


Cuando R es cercano a cero no parece haber asociación entre las variables por lo que los datos aparecen como una nube de puntos dispersa. mientras que cuando R se acerca a 1 o -1, los datos se "acomodan" alrededor de una línea recta (de pendiente positiva para R = 1 o pendiente negativa para R = -1)

PROBABILIDAD


La probabilidad, en términos simples, es un calculo, una propiedad que evalúa la posibilidad de que ocurra un evento (de que pase algo, cualquier cosa, por ejemplo: que llueva, que caiga granizo, que sea un día soleado, que salga cara cuando se lanza una moneda, que se acierte en la lotería, etc). En estadística, un evento es el resultado de un experimento, por ejemplo, el lanzamiento de un dado.

La probabilidad de un solo evento se calcula dividiendo el número de eventos por el número total de resultados posibles. En el caso de, digamos, tirar un seis en un dado de 12 caras, hay 12 resultados posibles. Entonces, la probabilidad de sacar un seis es 1/12, a veces esto también se expresa como un porcentaje (1/12 = 8,33%)

Los eventos pueden ser independientes o dependientes. Con eventos dependientes, un evento anterior influye en el evento posterior. Supongamos que tenemos una bolsa de bolitas rojas  y azules y se quiere determinar la probabilidad de elegir al azar una bolita roja. Si cada vez que sacamos una bolita de la bolsa, la probabilidad de elegir la bolita roja cambiaría debido al efecto de eventos anteriores (por que al sacar una bolita del grupo quedan cada vez menos bolitas en la bolsa)

Los eventos independientes no se ven afectados por eventos anteriores. En el caso de la bolsa de bolitas si cada vez que seleccionamos una la volvemos a meter en la bolsa. La probabilidad de seleccionar una bolita roja seguiría siendo la misma cada vez. (es decir, como volvemos a poner la bolita sacada en la bolsa el numero total de bolitas es siempre el mismo). Si un evento es independiente o no es importante, ya que la forma en que calculamos la probabilidad de múltiples eventos cambia según el tipo.

La probabilidad de múltiples eventos independientes se calcula simplemente multiplicando la probabilidad de cada evento. En el ejemplo de la tirada de dados, digamos que queríamos calcular la probabilidad de sacar un 6 tres veces. Esto tendría el siguiente aspecto:

1/12 * 1/12 * 1/12  = 3/1728 = 0,016853 (1,68%)

El cálculo es diferente para los eventos dependientes, también conocido como probabilidad condicional. Si tomamos de las bolitas, imagina que tenemos una bolsa con solo dos colores rojo y azul, y sabemos que la bolsa contiene 3 rojas y 2 azules y queremos calcular la probabilidad de elegir dos rojas seguidos. En la primera elección, la probabilidad de elegir una roja es 3/5 = 0,6. En la segunda selección, hemos eliminado una bolita, que resultó ser roja, por lo que nuestro segundo cálculo de probabilidad es 2/4 = 0.5. La probabilidad de elegir dos rojas seguidos es, por tanto, 0,6 * 0,5 = 0,3.

Estadística descriptiva

La estadística descriptiva, como su nombre sugiere, es el campo de la estadística que nos permite  describir los datos. En otras palabras, nos permite entender las características subyacentes. No predice nada, no hace suposiciones ni infiere nada, simplemente proporciona una descripción de la muestra de datos que tenemos.

Las estadísticas descriptivas se derivan de cálculos, a menudo denominados parámetros. Estos incluyen:

Media: el valor central, comúnmente llamado promedio.

Mediana: el valor medio si ordenamos los datos de menor a mayor y lo dividimos exactamente por la mitad.

Moda: el valor que ocurre con más frecuencia.

Estos son solo algunos de los parámetros que se pueden usar para describir una muestra de datos. Existen muchos más.

USANDO FUNCION case_when en lugar de condicional IF/ELSE

Este tutorial le mostrará cómo usar la función case_when en R para implementar lógica condicional en lugar de  i f / else ó if / elif / els...