Parte de la magia de este framework , es que podemos realizar búsqueda por incrementos y decremento en Laravel, aprovechando las funciones que nos ofrece Eloquent. Esto puede sernos de mucha utilidad si asignamos valores por ejemplo a los usuarios, por participación y queremos obtener los movimientos en esos valores.
Veamos un ejemplo: En el caso siguiente asignamos inicialmente 50 puntos a cada cliente y luego obtenemos del modelo aquellos que incrementan los puntos y los que los pierden.
Otro modo de utilizar incrementos y decrementos es aplicándolo directamente a la variable que representa al modelo por ejemplo en vez de escribir algo como:
$productos = Producto::find($productos_id);
$productos ->read_count++;
$productos ->save();
Incrementamos o decrecemos directamente asi:
$productos = Producto::find($productos_id);
$productos ->increment('read_count');
O directamente en el modelo
Producto::find(productos_id)->increment('read_count');
Producto::find(productos_id)->increment('read_count', 5); // sumo 5
Producto::find(productos_id)->decrement('stock'); // resto 1
Y listo, esto es todo.
Espero modestamente que este artículo, sirva de ayuda a alguien.
Por si lo necesitamos, debemos saber que Laravel nos permite añadir propiedades mutacionales, que nos permitan por ejemplo obtener el nombre completo de los clientes, aunque los tengamos separados en la base de datos por apellidos y nombre.
La cual llamaremos luego desde el modelo Cliente y con el uso de append, podemos añadirla.
class Cliente extends Model
{
protected $appends = ['nombre_completo'];
}
Sin embargo no termina ahí, si quisiéramos organizar a los clientes por el nombre completo no podríamos, o sea no podemos hacer esto:
$clientes = Cliente::orderBy('nombre_completo')->get();
Pero si organizamos los datos luego de cogerlos, con sortBy si funciona, o sea:
$clients = Client::get()->sortBy('nombre_completo');
Y listo, esto es todo.
Espero modestamente que este artículo, sirva de ayuda a alguien.
Cuando tenemos un conjunto de datos, puede ser muy ventajoso realizar un análisis factorial para conocer cómo las variables con que contamos están relacionadas o no.
Por una cuestión lógica, si podemos agrupar en grupos o factores las diferentes variables que tenemos, nos será a la larga más fácil su análisis y comprensión, para estar en posición de tomar decisiones a partir de los datos, que es de lo en que definitiva se trata.
Existen entre los análisis estadísticos, diversas herramientas que se emplean en esta labor, en este caso me refiero al análisis factorial, comúnmente empleado, por su capacidad para agrupar en factores las variables, y analizar su implicación en el conjunto de datos.
El análisis factorial, al que llamaré, muchas veces en este post, simplemente AF; posee diferentes pasos o fases, que intentaré explicar.
Supongamos que tenemos un set de datos, por ejemplo: una encuesta, que ha sido elaborada por profesionales, siguiendo las técnicas adecuadas o no, eso no lo sabemos.
La estructura de un Análisis factorial
Lo primero necesario, seria saber si es posible y oportuno realizar un análisis factorial.
La base de un análisis de este tipo es que existan relaciones entre las variables que permitan justifiquen su agrupación.
En caso una ausencia evidente de relación entre estas, este carece de sentido, entonces para determinar si esta correlación esta presente, se realizan varias pruebas que constituyen la primera parte del AF.
Crear la matriz de correlaciones.
Todo comienza creando la matriz de correlaciones, que es una tabla de doble entrada, que muestra el valor de r (coeficiente de correlación), en cada celda que relaciona ambas variables, con un valor de que va de 0 a 1.
Lo que intenta esta, es expresar el nivel de interdependencia entre cada variable y todas al mismo tiempo.
Existen diferentes métodos, para analizar la matriz de correlación, que se utilizan de modo combinado, para determinar la conveniencia de su uso.
El índice de Kaiser-Meyer-Olkin (KMO)
Conocido por sus siglas KMO, es una medida de adecuación muestral que se emplea para comparar las magnitudes de los coeficientes de correlación general (simple), con las magnitudes de los coeficientes de correlación parcial.
Digamos que los coeficientes de correlación parcial miden o indican la fuerza de la relación existente entre dos variables, sin tener en cuenta la influencia de otras variables.
El KMO expresa que:
Si la sumatoria de los coeficientes de correlación parcial elevados al cuadrado entre todos los pares de variables, es bajo en comparación, con la suma de los coeficientes de correlación al cuadrado, entonces el índice KMO estará próximo a 1.
Los valores aceptados para el son:
KMO > 0.6 = alta correlación y es útil un análisis factorial.
KMO entre 0.5 y 0.6 = correlación media y se acepta un análisis factorial, pero es menos útil.
KMO < 0.5 no es conveniente el AF.
Que el valor sea cercano a la unidad, se considerará positivo, porque indica que las correlaciones que existen entre los pares de variables pueden ser explicadas por el resto, o dicho de otro modo, comparten factores.
En cambio, si sus valores son bajos, no sucede así, y no resulta interesante un AF.
El test de esfericidad de Bartlett
Es una prueba estadística, cuya hipótesis nula es que las variables no están correlacionadas en la población.
Por tanto, intenta comprobar que la matriz de correlaciones es una matriz de identidad, o sea que las intercorrelaciones entre las variables son cero.
Se realiza a partir de una estimación de Chi2, transformando el determinante de la matriz de correlaciones.
Si las variables no están intercorrelacionadas, entonces el test de esfericidad debe presentar un valor (p) superior al límite de 0.05; y en ese caso se rechaza la Hipótesis Nula y se continúa con el AF
El determinante de la matriz de correlaciones.
Es un índice, que mide el tamaño de las correlaciones; por tanto, si el valor del determinante es alto, indica que hay bajas correlaciones dentro de la matriz, mientras que un valor bajo indica correlaciones altas, que justifican un AF.
Para entenderlo mejor, debemos saber que las correlaciones parciales, tienen la tarea de. representar estimaciones entre factores de carácter único, que deben estar relacionados entre si; y mientras más relacionados estén deben tender a ser próximos a cero o lo que es lo mismo si las variables independientes de nuestro estudio, poseen factores comunes, el coeficiente de correlación parcial entre los pares de variables, debe ser bajo.
Coeficiente de correlación anti-imagen.
Este es un coeficiente de correlación parcial negativo, cuya presencia indica un elevado número de coeficientes altos.
La condición para realizar el AF, es que se observen pocos valores elevados en términos absolutos y pocos coeficientes con valor cero.
Diagonal de la matriz de correlación anti-imagen.
El rango de sus valores va de 0 a 1, siendo más favorable en la medida que se acercan a 1.
Estos valores son conocidos como MSA por sus siglas (Measure of Sampling Adecuacy), y no son más que las medidas de adecuación que presenta cada variable. Esta medida de adecuación es el resultado de comprobar, variable por variable, si es adecuado realizar el análisis factorial.
Un valor superior a 0,5 es aceptado, para continuar con el AF.
Una vez realizados estos tests, teniendo claro su viabilidad podemos a ejecutar el AF.
Este se compone de los siguientes pasos:
Extracción de los Factores Iniciales
Se puede hacer por varios métodos. El más utilizado y conocido es el llamado de “Componentes Principales”.
Lo que hace, el método de “Componentes Principales” es buscar el factor que explique la mayor cantidad de la varianza en la matriz de correlación, al que se denomina “factor principal”.
Esta varianza explicada, será luego restada de la matriz inicial lo que da lugar a una matriz residual, de la cual se extraerá a su vez un segundo factor, y así sucesivamente hasta que quede poca o ninguna varianza sin ser explicada.
Estos factores no están relacionados entre ellos y se les denomina ortogonales (perpendiculares) por esa razón.
Si obtenemos la tabla de varianza total explicada, podremos observar el total porcentual de varianza que explican los valores obtenidos, sobre nuestro problema original.
Matriz de factores o de cargas factoriales.
Esta matriz contiene la carga de los factores, es decir, la correlación o correspondencia que existe entre cada variable y dicho factor, por lo que las cargas altas indican que dicha variable es representativa del factor correspondiente.
Un punto a aclarar es que lo adecuado o ideal, sería que cada variable apareciera reflejada en un solo factor, con un valor entre 0.5 y 1, y en el resto de los factores se acercara a 0, pero no siempre sucede y podríamos en dependencia de la estructura de nuestros datos, tener que considerar aceptables valores inferiores.
Rotación de los Factores Iniciales
La extracción inicial de factores puede ser rotada, para intentar facilitar su interpretación.
Esto puede hacerse por dos vías, una rotación ortogonal que mantiene la independencia entre los factores rotados (equamax, quartimax y varimax) y una rotación no ortogonal, la cual ofrece nuevos factores que si se relacionan.
La esencia de la rotación de los factores, es reducir ambigüedades en las cargas factoriales de las variables, buscando una solución nítida de lo que estamos viendo.
Es muy común que tengamos variables ambiguas que no definen bien a que factor pertenecen pues su carga es alta (<0,5) en varios de ellos.
Al aplicar la rotación, los ejes de referencia de los factores son girados alrededor del origen, hasta que alcanzan una nueva posición, donde simplifican filas o columnas de la matriz de factores.
VARIMAX, por ejemplo, redistribuye la varianza a lo largo de todos los componentes en la matriz de carga y esto aproxima las cargas altas a 1 o -1 y las cargas bajas de la matriz no rotada a 0.
De esta forma desambigua los resultados de la matriz no rotada
Denominación a los factores encontrados
El otro paso es renombrar los factores con un nombre nuevo que nos ayude a reconocer su composición (por ejemplo, las variables que lo forman)
Puntuaciones Factoriales
Finalmente toca explicar, las puntuaciones que obtienen individualmente las variables en cada uno de los factores.
Y hasta aquí
Espero modestamente que este artículo, sirva de ayuda a alguien.
Una solución que técnicamente funciona, pero que no recomiendo, es asignar el valor de raw_input() a la función input().
Podemos hacer esto, usando la asignación de variables y esto técnicamente permitirá usar raw_input () en Python 3.
Seria algo como esto:
raw_input = input
Esta declaración, le dice a Python que el valor de raw_input() debe ser igual a input().
No se recomienda
Aunque este técnicamente probada, esta no es una buena solución, y esto es porque otros desarrolladores que lean el código pueden confundirse si ven raw_input() en una base de código de Python 3, teniendo en cuenta que en la documentación oficial de Python 3 se eliminó el nombre raw_input() a favor de input().
Espero que esto sirva de ayuda a alguien
Muchas gracias.
No podía despreciarlo, era el ultimo brindis de un bohemio por una reina
Si quieres saber cómo funcionan las vistas, las rutas y los controladores Laravel, en este post intentaré explicarlo.
Sabiendo que hay mucho escrito sobre el tema, pretendo explicar muy brevemente que son estos elementos que componen Laravel.
Las vistas son los archivos HTML, donde se muestra la información de la web, las rutas son el camino que damos a esas vistas para que se vean y que pueden incluir elementos, como datos denominaciones y otros, y los controladores son los archivos o espacios donde creamos la lógica de programación o sea se encargan de ejecutar las acciones que generan los datos.
El gestor de plantillas o vistas en Laravel se llama Blade y es el encargado de crear estas vistas que combinan el lenguaje HTML y el PHP, con una sintaxis propia.
Si escribimos en la consola el comando de artisan :
artisan route list
Obtendremos un listado de todas las rutas que tenemos, con sus nombre los controladores de donde obtienen los datos y la uri que la conforma
Por tanto el método del controlador devuelve casi siempre una vista la vista a la que queremos dirigir sus datos. Si el controlador no es un controlador de recursos (resource controller es aquel que se encarga de crear un CRUD), habrá que escribir en el archivo web.php dentro de la carpeta routes, la ruta completa que deseamos, si es de recursos, con escribir solo el nombre del modelo bastara para que cree todas las rutas para un CRUD
Route:: resource('/modelos', 'ModeloController');
Cada vez que creemos un controlador habrá que relacionar sus datos con una ruta y una vista si deseamos que los datos se muestren.
Y listo, esto es todo.
Espero modestamente que este artículo, sirva de ayuda a alguien.
Gracias.
…..lo que realmente importa no es lo que te da la vida, sino lo que haces con ello….
Los métodos X o Y, son algunos de los que posee Eloquent , que agilizan y optimizan operaciones del tipo haz esto y si no esto, algunas de ellas son findOrFail y firstOrCreate
La solución más rápida al error, «Error UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xe1 in position…» es emplear Sublime Text .
Abrimos nuestro archivo con sublime text y en la opción guardar con encoding guardarlo como UTF 8
Existen otras opciones, veamoslas
Codificar al leer el archivo
Hacer el encoding a UTF-8 al hacer el csv_read(), pasando en el parámetro encoding() la codificación que esperamos.
Importar chardet y codificar en la lectura del archivo.
import chardet
with open('data/atp-tour/data.csv', 'rb') as f: result = chardet.detect(f.read())
result['encoding']
Output: 'Windows-1252'
Si lanza un warning de LOW MEMORY se deberá principalmente a los tipos de adivinación por columna, están empleando mucha memoria.
Esto sucede en esencia, porque Pandas solo puede determinar qué tipo de dato tiene cada columna, solamente una vez que lee todo el archivo.
Puede ayudar especificar el tipo de archivo, indicándolo en el parámetro dtype , con la sintaxis.
dtype = {'user_id': int}
Esto es solo recomendable, si sabemos que no encontraremos otro tipo de dato en esa columna, si no cumplimos este precepto, complicaremos la situación , porque se bloqueará la carga.
Si recibes el error cannot convert non-finite values (NA or inf) to integer, lo más probable es que en tu dataset, existan datos vacíos que no ves.
Sobre todo si trabajas con Pandas y has estado convirtiendo valores en Excel y posees un archivo de datos grandes, puede aparecer este error, al intentar convertir tus datos a enteros.
Solución:
Aplica al dataframe el método fillna(0), estarás llenando esos valores con valor 0, con esta sintáxis
data_df= data_df.fillna(0)
Espero modestamente que este artículo, sirva de ayuda a alguien.
Gracias
“El amor es dos en uno que al final no son ninguno y se acostumbran a mentir”