FINANZAS CON PYTHON: OBTENER DATOS INTRADIARIOS, CON ‘ALPHA VANTAGE’.

Destacado

Los datos financieros intradiarios, también conocidos como datos intradía, son una fuente crucial de información para los inversores y traders. Estos datos proporcionan información sobre los movimientos de los precios de las acciones, divisas, criptomonedas y otros instrumentos financieros durante el transcurso de un día de negociación. ‘Alpha Vantage‘ es un servicio en línea que proporciona acceso a datos financieros intradiarios y una variedad de otros datos de la misma naturaleza. En este artículo, exploraremos cómo obtener tales datos, utilizando ‘Alpha Vantage‘ en Python.

Antes de comenzar, necesitaremos una clave de API gratuita de ‘Alpha Vantage’. Lo que nos permitirá acceder a los datos financieros proporcionados por la API. Para ello, podremos registrarnos en el sitio web de Alpha Vantage y obtener su clave de API gratuita.

Una vez que estemos registrados y tengamos nuestra clave, pasaremos a realizar la instalación de la correspondiente librería para Python, empleando el gestor de paquetes de Python, ‘pip‘:

Una vez hecho esto, ya podremos empezar a recopilar datos intradiarios. Para ello crearemos un nuevo archivo al que llamaremos ‘intraday.py‘ en el que después de realizar la pertinente importación de la librería, iniciaremos el objeto encargado de obtener la serie temporal de datos (al que en este ejemplo hemos dado el nombre de ‘ts‘) introduciendo la clave de API, que hayamos obtenido al registrarnos en el servicio:

Una vez que lo tengamos todo correctamente configurado, estaremos en condiciones de empezar a obtener datos intradiarios de cualquier activo. Así, imaginemos que queremos obtener la evolución de los precios de ‘Apple‘, y una periodicidad de actualización de 1 minuto:

OUTPUT:

Hemos de destacar que, al contrario de lo que estábamos acostumbrados cuando trabajábamos con series de datos por días, aquí los datos actualizados se van agregando por la parte superior de la tabla. Siendo por ello que para mostrar los datos más recientes, hemos utilizado la función «.head()» (que muestra las 5 primeras filas de la tabla) y «.tail()» (para mostrar las 5 últimas filas) para ver los 5 registros más antiguos (que en este caso se remontan al 25 de septiembre).

Antes, cuando hemos usado el método ‘get_intraday()‘ para obtener los datos, la información retornada por este ha sido almacenada en dos variables: ‘data’, en la que se ha guardado la serie temporal y ‘meta_data‘, en donde se guardan los metadatos de la serie, con las información por columnas que incluye:

OUTPUT:

Esta información nos puede ser de gran utilidad en el supuesto en que queramos acceder a un dato determinado de forma aislada. Por ejemplo, imaginemos que queremos elaborar una gráfica (utilizando ‘matplotlib‘) a partir de los datos antes obtenidos, mostrando solo el precio de cierre a lo largo de las últimas horas del pasado día:

OUTPUT:

Para concluir: ‘Alpha Vantage‘ es una fuente confiable y gratuita de datos financieros intradiarios que puede utilizar para sus análisis y estrategias de inversión. Con esta librería de Python, es fácil acceder y utilizar estos datos para tomar decisiones informadas en el mercado financiero.

Recuerda que ‘Alpha Vantage‘ ofrece una amplia variedad de datos financieros, no solo datos intradiarios. Pudiéndose explorar sus servicios y bibliotecas adicionales para obtener información más detallada sobre los mercados financieros.

Saludos.

INTRODUCCIÓN AL USO DE EXPRESIONES REGULARES EN PYTHON, CON EL MÓDULO «re».

Destacado

Las expresiones regulares, a menudo abreviadas como «regex» o «regexp«, son una valiosa herramienta que permite la realización de búsquedas, manipulaciones y validaciones de patrones de texto de una manera extremadamente flexible. Por su parte, Python, ofrece una excelente biblioteca para trabajar con expresiones regulares, conocida como «re» y que en el presente artículo utilizaremos para dar nuestros primeros pasos en el uso de expresiones regulares.

¿QUE SON LAS EXPRESIONES REGULARES?

Antes de entrar más en detalle, conviene empezar explicando en que consisten las expresiones regulares. Pues bien, se trata de secuencias de caracteres que definen un patrón de búsqueda. Estos patrones se utilizan para encontrar coincidencias en cadenas de texto. Además, las expresiones regulares pueden ser simples, como buscar una dirección de correo electrónico, o extremadamente complejas, como las orientadas a analizar un documento HTML completo.

BUSQUEDA DE PATRONES EN TEXTOS.

Tal y como hemos señalado antes, una de las utilidades del uso de expresiones regulares es el de facilitar la búsqueda de determinados patrones de caracteres en un texto. Por ejemplo, imaginemos que queremos extraer de una cadena dada, un número de teléfono, cuya estructura básica podemos predefinir:

En primer este caso, el patrón r'\d{3}-\d{3}-\d{4}' busca un número de teléfono con el formato «123-456-7890«. La expresión ‘\d‘ representa un dígito, y las llaves ‘{}‘ indican cuántas veces debe aparecer dicho digito. La función «search()» (tomando como argumentos el patrón de búsqueda y el texto fuente) encuentra la primera coincidencia en dicho texto devolviendo la función «group()«, la cadena coincidente:

Veamos ahora otro ejemplo en el que lo que nos proponemos encontrar es la cadena referente a una dirección de correo electrónico:

En este caso, el patrón r'\S+@\S+' busca una cadena que tenga una o más secuencias de caracteres que no sean espacios ‘\S+‘, seguida de un símbolo@,’ y luego otra secuencia de caracteres que no sean espacios. Nuevamente, como en el caso anterior, la función «rearch()» hará la búsqueda de la coincidencia, que será devuelta por la función «group()«:

OUTPUT:

A continuación, modificaremos la variable «texto» para que contenga dos correos electrónicos:

OUTPUT:

Vemos como, sorprendentemente, a pesar de haber realizado la búsqueda sobre un texto que contiene dos sub cadenas que coinciden con el patrón definido en la variable homónima («example@email.com» y «miotrocorreo@email.com«) el resultado devuelve únicamente la primera de ellas. Esto es debido a que la función «.group()» solo devuelve la primera coincidencia encontrada. Si lo que queremos es obtener todas las coincidencias, podemos usar la función «.findall()» (con los mismos argumentos) que devolverá una lista con dichas coincidencias:

OUTPUT:

También podemos utilizar un ‘for‘ para mostrar las coincidencias de un modo más claro:

OUTPUT:

SUSTITUCIÓN DE TEXTOS.

Otro uso que podemos darle a las expresiones regulares es el de reemplazar texto en una cadena:

Se ve como en este caso utilizamos el patrón de búsqueda (‘patron‘) para especificar cuales son las palabras que vamos a reemplazar (estas se definen usando la barra vertical ‘|‘ como separador). Especificado el patrón, usaremos la función «.sub()» que llevará como argumentos, el patrón de búsqueda, la palabra de reemplazo y el texto fuente:

OUTPUT:

METACARACTERES.

Aunque los ejemplos que estamos viendo aquí son bastante simples, debemos recordar (como dijimos al principio) que el nivel de complejidad que pueden alcanzar los patrones de búsqueda, es enorme. Por ello contamos con el uso de metacaracteres que pueden sernos de gran ayuda. A continuación, os mostramos una lista con algunos de los más utilizados:

1 – ‘.‘ (Punto): Coincide con cualquier carácter excepto un salto de línea.

2 – ‘*(Asterisco): Coincide con cero o más repeticiones del patrón anterior.

3 – ‘+(Más): Coincide con una o más repeticiones del patrón anterior.

4 – ‘?(Signo de interrogación): Coincide con cero o una repetición del patrón anterior.

5 – ‘[] (Corchetes): Define un conjunto de caracteres permitidos. Por ejemplo, [aeiou] coincide con cualquier vocal.

6 – ‘^(Caret): Indica el inicio de una cadena. Por ejemplo, ^Hola coincide solo si la cadena comienza con «Hola».

7 – ‘$(Dólar): Indica el final de una cadena. Por ejemplo, mundo$ coincide solo si la cadena termina con «mundo».

8 – ‘|(Barra vertical): Actúa como un operador OR. Por ejemplo, gato|perro coincidirá con «gato» o «perro».

9 – ‘()(Paréntesis): Agrupa expresiones regulares. Puedes usarlos para aplicar cuantificadores a un grupo completo.

10 – ‘\(Barra invertida): Se utiliza para escapar metacaracteres y tratarlos como caracteres literales. Por ejemplo, \. coincide con un punto literal.

11 – ‘{}(Llaves): Indican cuántas repeticiones se permiten. Por ejemplo, \d{3} coincidirá con tres dígitos consecutivos.

12 – ‘\d (Dígito): Coincide con cualquier dígito (0-9).

13 – ‘\D(No dígito): Coincide con cualquier carácter que no sea un dígito.

14 – ‘\w (Palabra): Coincide con cualquier carácter alfanumérico o guion bajo.

15 – ‘\W(No palabra): Coincide con cualquier carácter que no sea alfanumérico ni guion bajo.

16 – ‘\s(Espacio en blanco): Coincide con cualquier carácter de espacio en blanco (espacio, tabulación, salto de línea, etc.).

17 – ‘\S (No espacio en blanco): Coincide con cualquier carácter que no sea un espacio en blanco.

Estos son algunos de los metacaracteres más utilizados en expresiones regulares en Python. Teniendo en cuenta que habiendo más metacaracteres y funcionalidades disponibles, estos son los fundamentales para empezar a trabajar con expresiones regulares.

CONCLUSIÓN:

Las expresiones regulares son una herramienta de gran utilidad a la hora de trabajar con textos en Python. Tal y como hemos visto, pueden utilizarse para buscar, extraer y manipular datos de manera eficiente. Sin embargo, las expresiones regulares pueden volverse complejas rápidamente, por lo que es importante entender los patrones y metacaracteres antes de utilizarlas en aplicaciones críticas. Con práctica y experiencia, las expresiones regulares se convierten en una habilidad valiosa en el arsenal de cualquier programador de Python.

Saludos.

OBTENIENDO TIPOS DE CAMBIO CON PYTHON.

Saludos y bienvenidos una vez más a vuestro blog sobre programación en lenguaje Python, en una ocasión en la que nos disponemos a escribir un código (que podéis ver completo en el enlace que proporcionamos al final) mediante a partir de una divisa y cantidad de entrada, podemos obtener la conversión de dicha cantidad a las principales monedas mundiales. Para nuestro objetivo usaremos la información actualizada que nos brinda la página «x-rates.com» a la que podéis acceder desde el siguiente enlace:

https://www.x-rates.com/

Como vamos a tener que usar información alojada en la web, empezaremos importando una serie de módulos y librerías de Python que nos permitan acceder y leer dicha información. A su vez, también importaremos «pprint» que nos permitirá visualizar los datos de salida de un modo más atractivo:

A continuación crearemos la función mediante la que accederemos a nuestros datos de interés. Dicha función tomará dos argumentos: La divisa que queremos convertir y la cantidad (que estableceremos en 1). Partiendo de dichos argumentos, usaremos «requests.get()» para acceder a la información deseada:

Tras ello, iniciaremos «BeautifulSoup» y obtendremos las cifras de cambio actualizadas:

Finalmente procederemos a leer la tabla proporcionada por la página, no sin antes definir el diccionario «exchanges_rates» en el que almacenaremos los pares formados por la divisa y el valor de cambio con respecto a la variable «currency«:

Así nuestra función nos devolverá, por una parte, la fecha de última actualización de los valores (‘price_datetime’) y por otra el el cambio actual para cada divisa (‘exchanges_rates‘). Para realizar nuestra consulta, solo nos queda hacer la llamada a la función, especificando tanto la divisa base (que en nuestro ejemplo será el EURO (‘EUR’)) y la cantidad que será de 1€, usando ‘print‘ para mostrar la fecha de última actualización y ‘pprint‘ para mostrar la lista de cambios con respecto al EURO:

Output:

En el siguiente enlace tenéis el código completo del ejercicio, para que podáis crear vuestra propia aplicación para obtener el tipo de cambio de cualquier divisa:

https://github.com/antonioam82/ejercicios-python/blob/master/exchanges.py

Saludos.

ACORTANDO «URL» EN PYTHON, CON «pyshorteners».

Bienvenidos una vez más a este blog centrado en la programación en lenguaje Python, en una ocasión en la que vamos a ver como podemos acortar la longitud de una URL (práctica que nos puede ser muy útil cuando queremos incluir enlaces en paginas que, como Twitter, limitan la extensión que pueden tener los mismos). Para este propósito, existe en Python, una librería llamada «pyshorteners» que nos permitirá hacer esto de un modo sencillo y rápido. Librería la cual, podremos instalar en nuestro equipo usando el comando «pip» que ya hemos usado en repetidas ocasiones:

Una vez que tenemos instalada nuestra librería e importada a nuestro proyecto, crearemos la variable «URL» en la que introduciremos la «url» que queremos acortar:

Hecho esto, usaremos el método «tinyurl.short()» al que pasaremos como argumento la variable que usamos para almacenar la versión larga de nuestra «url» (variable «URL» en nuestro caso):

Ejecutado el método, simplemente tendremos que usar «print» para mostrar en pantalla nuestra url acortada y perfectamente válida (almacenada en la variable «shorter_url» en nuestro caso):

De este modo, haciendo uso de esta librería, nunca más tendremos problemas a la hora de insertar enlaces en páginas e las que se limite la longitud de los mensajes que podamos escribir.

Saludos.

OBTENER CÓDIGO «HTML» DE UNA PÁGINA EN PYTHON, CON «BeautifulSoup» Y «requests».

Hola y bienvenidos una vez mas a vuestro blog sobre programación en Python, en una ocasión en la que veremos como podemos usar las librerías «bs4» y «requests» (librerías que tendremos que tener previamente instaladas) para obtener el código fuente de una página, para lo cual, empezaremos realizando las importaciones necesarias:

Hecho ello, pasaremos a definir en una variable a la que llamaremos «web«, la URL del sitio de internet cuyo código fuente queremos obtener:

Una vez definida la dirección del sitio cuya información queremos extraer, utilizaremos la librería «requests» para enviar una solicitud a dicha página, usando el método «.get()» que tendrá como argumento la variable en la que almacenamos la dirección URL. La respuesta a dicha solicitud, se almacenará en una variable a la que llamaremos «result«:

Una vez almacenada la respuesta en nuestra variable «result«, utilizaremos el método «.text()» para obtener el texto de la misma:

Acto seguido, usaremos «BeautifulSoup» para almacenar en una variable («soup«) el contenido de la página, de modo que más adelante podamos seleccionar la información concreta a mostrar:

Si finalmente usamos «print()» para imprimir el código fuente, obtendremos lo siguiente:

En efecto, obtenemos el código «HTML» de la página requerida (en nuestro caso, la página de portada de «Wikipedia«) aunque este se muestra de un modo poco apto para su comprensión. Por ello, si queremos que este se muestre estructurado de una manera más ordenada y comprensible, podremos usar, el imprimir, «.prettify()» tal y como se muestra a continuación:

Y este es el modo sencillo mediante el cual podemos obtener el código «HTML» de una página, con Python. En futuros artículos veremos la manera de extraer y seleccionar distintos tipos de información de una página usando estas librerías.

Saludos.

ABRIENDO PÁGINAS WEB EN PYTHON, CON «webbrowser».

Hola y bienvenidos una semana más a «El Programador Chapuzas». En el día de hoy vamos a ver la manera en que podemos abrir páginas web empleando el módulo nativo «webbrowser«. Dado que se trata de un módulo preinstalado, en esta ocasión, no necesitaremos realizar ninguna instalación, con lo que para empezar bastará con que importemos dicho módulo:

Importado nuestro módulo, ya podemos empezar a utilizarlo para acceder a nuestras webs. Para ello existen una serie de métodos que nos permitirá abrirlas de diferentes maneras. De entre tales métodos, el más básico es «open()«, al que tendremos que pasar como argumento, la URL de la página en cuestión:

A su vez, podemos seleccionar el modo en que se va a abrir nuestra página, introduciendo dos variables adicionales: «new» cuyo valor, si es 0, desplegará la página en la misma ventana del navegador, si es posible. Si es 1, se despliega en una nueva ventana y si es 2, en una nueva pestaña, si es posible. La otra variable es «autoraise» cuyo valor «True» o «False» indicará si la ventana será o no traída al frente:

También tenemos un método especifico para abrir nuestra página en una nueva ventana del navegador. El nombre de este es «open_new()» ingresando nuevamente la URL del sitio requerido y que equivale al valor 1 de la variable «new» vista antes:

Esto último vale igualmente para el caso en que queramos abrir nuestra web en una nueva pestaña del navegador. En este caso usaremos la función «open_new_tab()«, pasando la misma información que en los casos anteriores, y que equivaldrá al valor 2 de la variable «new» ya vista:

Finalmente, también podemos hacer uso del método «.get()» para establecer el navegador que queremos usar, introduciendo el nombre de este como argumento de la función (Para que esta operación se realice con éxito es necesario que dicho buscador se encuentre disponible en nuestro sistema):

Saludos.

Más códigos aquí:

https://www.lawebdelprogramador.com/codigo/usuario.php?id=352736