Mostrando entradas con la etiqueta Manejo Datos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Manejo Datos. Mostrar todas las entradas

Manejo de datos en Excel: Ejemplo BetExplorer (2)

En la anterior entrada ya vimos como podíamos aprovechar los datos de una web como betexplorer y organizarlos para que puedan ser tratados más fácilmente. Al final obtuvimos una tabla de partidos, equipos y resultados similar a esta:


A la izquierda de la tabla pegabamos los datos de Betexplorer y a la derecha los teníamos ordenados. Pero para completar nuestra base de datos nos falta una parte muy importante: las variables de entrada. Estas variables son las que representan al conjunto de datos disponibles ANTES de que el partido se haya jugado, es decir, necesitamos algo así:


Esto lo podíamos haber hecho tomando los datos jornada tras jornada antes de los partidos. Pero también lo podemos hacer partiendo de los datos de betexplorer. No es demasiado complicado, pero debemos ser cuidadosos con las fórmulas. Vamos con ello. Empezaremos por lo más sencillo que es calcular la cantidad de partidos que se han jugado y para ello usaremos la función =contrar.si().


Dos cosas importantes que tengo que destacar, la primera es que en la fórmula tenemos un rango en el que la celda inicial es una referencia absoluta (los valores están entre $) y la final es una referencia relativa. Esto es así para que cuando 'arrastremos' esta fórmula a toda la tabla, el rango de la fórmula SIEMPRE empiece en la primera fila. La segunda es que las fechas o las jornadas deben ir de menor a mayor, es decir, las primeras filas de la tabla serán las primeras jornadas y la tabla se irá rellenando hacia abajo con nuevos partidos y nuevas jornadas.

Una vez dicho esto lo siguiente que debemos hacer es calcular la cantidad de goles anotados y encajados. En este caso vamos a usar la función =sumar.si(), que tiene tres parámetros, el primero es el rango inicial donde se buscan los datos, el segundo es el criterio de búsqueda, y el tercero es el rango que queremos sumar.


Por último vamos a calcular los partidos ganados, perdidos y empatados. Para este cálculo necesitamos hacer un paso intermedio, y crear tres columnas una para cada resultado que llenaremos de unos y ceros en función del resultado del partido. Esto lo haremos con la función =si(condicion; valor si verdadero; valor si falso) de la siguiente forma.


Una vez tenemos estas columnas creadas, utilizaremos otra vez la función =sumar.si() para calcular los tres datos que nos faltan, de la misma manera que hemos hecho con los goles a favor y en contra.

Con esto habremos terminado la tabla para el equipo de casa, para el equipo de fuera se opera de forma similar teniendo en cuenta que los goles a favor son los que mete el equipo de fuera y que los partidos ganados son los que aparecen en la columna con un '2' de encabezado.

Estas funciones de excel son muy potentes y nos pueden ser de gran ayuda, pero tienen una limitación muy importante, y es que son MUY EXTRICTAS. Para estas funciones no es lo mismo Real Madrid que R. Madrid, o incluso peor todavía, diferencian entre cosas como Almería y Almeria (sin acento), incluso un espacio de más entre dos palabras o al principio/final del nombre del equipo hace que para Excel esos datos sean diferentes también. Para evitar, en lo posible, estos problemas aconsejo dos cosas, la primera es tomar los datos SIEMPRE DE LA MISMA PAGINA y segundo usar la función =blancos(), que nos elimina estos fastidiosos espacios innecesarios.

No me quiero extender más en este post, así que si alguien tiene alguna pregunta o necesita alguna explicación más no tiene más que añadir un comentario al post.

Manejo de datos en Excel: Ejemplo BetExplorer

En esta tercera entrega de la serie relacionada con el manejo de datos en excel, vamos a hacer un ejemplo de como se puede arreglar la información obtenida de una página web como es BetExplorer.

Partiremos de los datos que ofrece la web, que tienen el siguiente aspecto:


Para llegar a esto otro.


Para ello lo primero que debemos hacer es seleccionar todos los datos, copiarlos y hacer un Pegado Especial > Texto en Excel.

Con esto habremos conseguido la primera parte de la tabla (la zona verde). Ahora nos queda rematar la faena y rellenar usando funciones de excel la zona azul.

Las dos primeras columnas son los nombres de los equipos y los vamos a separar utilizando las funciones IZQUIERDA(Texto; Numero de caracteres), ENCONTRAR(Texto buscado; Texto donde busca; Posicion inicial), y EXTRAE(Texto; Posicion inicial; Numero de Caracteres). Esta es la parte más complicada de la hoja, porque lleva varias funciones de texto anidadas, pero una vez la tienes acabada funciona a la perfección.

Lo más importante para poder separar los equipos es ver si hay algún texto que sirva de separardor entre ambos. En este caso se utiliza el guión "-". Esto nos facilita mucho la tarea, porque lo que haremos es decirle a excel que el primer equipo es el texto que hay antes del guion y el segundo es el que hay después. Vamos a ver como traducimos esto a funciones de excel.

La función ENCONTRAR nos devuelve la posición dentro del texto que ocupa el caracter o caracteres que deseamos buscar. Así = ENCONTRAR(Partido;"-") nos va a devolver la posición en la que se encuentra el guión dentro del Partido.

La función IZQUIERDA nos va a devolver los n primeros carácteres del texto. Con esto lo tenemos casi hecho, lo que queremos es pedirle a Excel que nos devuelva los primeros caracteres hasta el guión. Es decir:

Equipo1 = ESPACIOS(IZQUIERDA(Partido;ENCONTRAR("-";Partido)-1))

La función ESPACIOS la coloco para quitar todos los espacios en blanco que sobren y el -1 de después de ENCONTRAR sirve para eliminar el "-" del texto.

Para el Equipo2 es un poco más complicado, porque cambiando la función IZQUIERDA por DERECHA no nos funciona, debido a que necesitamos saber cuantos caracteres hay empezando por la derecha hasta el guión y la función ENCONTRAR nos dice eso pero empezando por la izquierda. Así que tenemos dos alternativas, utilizar la función derecha y calcular el número de caracteres que necesitamos como la longitud total del texto menos la posición del guión, o bien utilizar la función extrae que nos devuelve un trozo de texto desde la posición que nosotros le digamos. Yo voy a utilizar esta última

Equipo2 = ESPACIOS(EXTRAE(Partido;ENCONTRAR("-";Partido)+1;100))

El +1 que hay después de ENCONTRAR, se usa en este caso para que no nos devuelva el guión junto al nombre del segundo equipo, y el 100 del final es para que extraiga 100 caracteres, como no hay tantos, lo que hace es extraer hasta el final del texto.

Ya tenemos hecho lo más difícil y solo nos queda completar la tabla con las columnas finales.

Los goles marcados por el equipo 1 y el equipo 2 los obteníamos con las funciones HORA() y MINUTO(), como vimos en el anterior artículo. Para obtener el resultado del partido, vamos a usar la función SI(condición; accion si verdadero; accion si falso). Esta función se puede anidar hasta un máximo de 7 veces, y para este caso deberemos anidar dos de ellas. Y nos quedaría algo así:

Res = SI (Eq1>Eq2; 1; SI(Eq1=Eq2; "X"; 2))

Con esta función lo que hacemos es comparar si los goles que ha metido el equipo1 son mayores que los que ha metido el equipo2 y si es así nos devuelve 1, si no es así, miramos si los goles del equipo1 son iguales a los del 2, si es así nos devuelve una X, que como es un texto debemos colocarla entre comillas dobles, y si no es así nos devuelve un 2. Como podeis ver la X la debemos de colocar entre comillas porque es un texto.

Para el cálculo del Over2.5 hacemos algo parecido.

O2.5 = SI (Eq1+Eq2>2;1;0)

Si la suma de los goles es mayor que 2, devuelve 1 y si es menor devuelve 0. El 1 y el 0 lo podríamos cambiar por lo que nosotros quisieramos "OVER" y "UNDER", "O" y "U"... pero yo suelo utilizar 1 y 0 porque para saber el % de overs que han salido solo tengo que hacer la media de esta columna. Si utilizamos cualquier otra nomenclatura el cálculo se complica un poco más.

La columna de O1.5, se calcula prácticamente igual que la de O2.5 y no lo voy a hacer. Lo dejo como deberes ;-)

La columna Par se calcula también usando la función Si y la función Es.Par() de la siguiente manera:

Par = SI (ES.PAR(Eq1+Eq2);1;0)

Con estas funciones ya tendríamos completada nuestra tabla.

La hoja de cálculo completa la he subido a GoogleDocs y la podeis encontrar pinchando en este enlace. El funcionamiento es sencillo, copiais los datos de BetExplorer y los pegais en la hoja con CTRL+V. El resto funciona automático. Espero que os sirva.

Manejo de datos en Excel

Siguiendo con los post relacionados con el manejo de datos en excel, vamos a repasar una serie de funciones avanzadas en Excel que nos van a permitir ajustar a nuestras necesidades, datos copiados desde páginas web.

Las páginas que ofrecen resultados de partidos no suelen seguir un criterio único para mostrar estos datos. Las opciones más comunes son tres: presentar el resultado separado por un guión (1-1), por dos puntos (1:1), o en diferentes columnas (1 1).

El primer paso que debemos dar es copiar los datos y hacer un Pegado Especial > Texto en Excel. Cuando hacemos esto con resultados separados por guiones (1-1), Excel los interpreta como una fecha, siempre que no se presente ninguna incoherencia (días de la supuesta fecha, primer número normalmente, sea menor que 1 o mayor que 31, o cuando los meses sean menor que 1 o mayor que 12). Si Excel advierte una incoherencia en la supuesta fecha, copiará el resultado como una cadena de texto. Para salir de dudas y conocer con que formato ha pegado Excel los datos lo mas apropiado es utilizar la funcion =ESNUMERO(celda). Esta función nos devolvera verdadero o falso segun la celda contenga un valor o no. Hay que tener en cuenta que Excel trata las fechas y las horas como un numero, que representa el numero de días transcurridos desde el 1 de enero de 1990. Así, si el dato que hemos copiado lo ha pegado como una fecha, la funcion nos devolvera verdadero.

Otra manera de detectarlo es viendo la alineación de la celda. Una alineación a la izquierda se usa para cadena de texto y la alineación a la derecha para los números.

Así pues, tenemos 2 opciones, el dato ha sido pegado como fecha o como texto. Si se ha pegado como fecha debemos de utilizar las funciones =DIA(Dato) y MES(Dato). Con la funcion dia obtendremos los goles o puntos anotados por el equipo1 y con la funcion mes los del equipo 2.

Si los datos de partida estan en formato 1:1. Al pegarlos los interpretará como horas, con lo que para separar el marcador utilizaremos las funciones =HORA(Dato) (para obtener los goles del equipo de casa) y =MINUTO(Dato), para el segundo. con este formato segimos teniendo restricciones con respecto a los numeros a pegar y si Excel detecta una incoherencia, hará lo mismo que para el caso de las fechas, pegará los datos como texto.

Para estos casos en que Excel convierte los datos en texto podemos hacer lo siguiente. si los datos siempre tienen el mismo numero de digitos, por ejemplo resultados de futbol el 99% de las vecs los goles seran un solo digito, goles de balonmano 2 digitos (en partido completo). se pueden usar las funciones =DERECHA(Texto; Numero de Caracteres) e =IZQUIERDA(Texto; Numero de Caracteres) combinadas co las funciones =ESPACIOS(Texto) y =VALOR(Texto). las funciones izquierda y derecha son similares y lo que hacen es devolver una cantidad especifica de caracteres empezando por la izquierda o por la derecha del texto selecionado. Estas funciones siempre nos devuelven un texto, que convertiremos en numero con la funcion valor.

La función espacios es muy importante, ya que elimina del texto todos los espacios excepto los que hay entre palabras. nos servira para eliminar espacios sobrantes al comienzo y al final del texto.

El resultado final de todo esto seria algo asi (los datos son de BetExplorer.com)


En la siguiente entada veremos como podemos arreglar nuestros datos cuando tenemos entre los valores pegados textos y numeros, y como se pueden obtener automaticamente los nombres de los equipos.