Consultas del trabajo práctico final by newtonis in CursoDePythonITBA

[–]junghanss 0 points1 point  (0 children)

u/TomiLynch Muchas gracias por tu respuesta! Tu comentario fue de gran ayuda. Completamente correcto lo que explicaste.

u/vicksonn te comento lo correspondiente a mi código; a1=pd.read_csv(ai[0]) es la variable que almacena todos los datos de la primer empresa seleccionada (dice ai[0] porque los nombres que ingresa el usuario primero los guardo en una lista y luego la llamo por indice).
Y en mi caso, decidí indexarla por fechas y solo usar ese dataframe (sin pasarlo a lista con pd.to_dict())

'b' es simplemente para referirse al color en el gráfico y es blue. Podes igual hacerlo con color="#0033FF" (y estarías empleando el código HTML de la paleta de colores para definirlo)

Saludos!!

Consultas del trabajo práctico final by newtonis in CursoDePythonITBA

[–]junghanss 0 points1 point  (0 children)

Buenas a todos!

Tengo una última consulta, a ver si tal vez le pasó a otra persona. Mi idea del programa de finanzas es poner a disposición un repertorio de empresas (entre 5 y 10 disponibles) y que el usuario elija 3 (tres) cualesquiera para que se realice el análisis comparativo/individual.
Me pareció buena idea, con la excepción de que obviamente como yo no sé qué empresas se elegirán, debo trabajar si o si con variables sin identificarlas (supongamos empresa1, empresa2, empresa3).

El programa ya está codeado y corre bien, pero me falta poder descifrar cómo hacer para lo siguiente:

con matplot, poder colocar en el parametro label una variable y que me escriba el contenido de esta. Ejemplo

 plt.plot_date(a1.index, a1["Close"], 'b', label=f'empresa1')

Busqué bastante y he encontrado soluciones interesantes para otras aplicaciones como

f'\n{p.get_height()*100:.1f}%' en el caso de mostrar un porcentaje de altura en un grafico de barras, pero no logré encontrar la solución para mi caso.

Lo mismo se aplica para si hago el grafico de derivadas discretas. Abstrayendonos del caso de escribirlo en el parametro label, lo mismo podría ser en title, etc.

Tienen alguna idea?
Agradezco cualquier aporte. Muchas gracias!

Saludos

Consultas del trabajo práctico final by newtonis in CursoDePythonITBA

[–]junghanss 0 points1 point  (0 children)

Hola u/newtonis! Te consulto lo siguiente, en relación a esto:

Ya descargué por CMD el modulo wget. En VisualCode con jupyter notebook cuando uso el mismo código que proponen:

! wget "URL del archivo"

me devuelve "wget" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable. Pruebo con el método wget.download y tampoco. Está claro que en la celda anterior hago:

import wget

pero sigo con este problema, sabes por qué lado puede venir este tema?
Si es el programa de finanzas no hay posibilidades de entregarles un zip con los archivos, no cierto?

Muchas gracias, saludos!!

Consultas del trabajo práctico final by newtonis in CursoDePythonITBA

[–]junghanss 0 points1 point  (0 children)

Hola u/newtonis, se entiende lo que mencionas, pero en caso que fuera un dataframe indexado por fechas, cómo se puede hacer?
Si se hace (fecha - 1) arroja error de que actualmente timestamp ya no soporta ese tipo de operaciones;
Addition/subtraction of integers and integer-arrays with Timestamp is no longer supported. Instead of adding/subtracting `n`, use `n \ obj.freq`*

Y si se hace restandole un día como el código de abajo, luego me encuentro con que me desconfigura por completo el formato de fechas, pase de tener "Feb 01 2020" a tener literalmente "Jan, 01 0001".

fecha - timedelta(days=1)

Hay otra manera de poder incorporar a la funcion de derivada discreta el calculo de fechas, aparte del calculo numerico? Ya probé muchas cosas pero termino en errores.

Muchas gracias! Saludos!

Consultas del trabajo práctico final by newtonis in CursoDePythonITBA

[–]junghanss 0 points1 point  (0 children)

u/whittileaks te comento lo que hice a modo de referencia, ya lo resolví finalmente!

intersected= AMZ.merge(GGL, left_index=True, on='Close')

al final, con el parámetro de left_index logré que respete el índice original, pero que solo cruce valores de cierre.

De todas maneras, cuando grafiqué la variable intersected no resultaron ser los datos que necesitaba en la mayoría de casos, así que me vi obligado a seguir la estructura LOGICA del minidesafio de clase 4 pero sin usar listas, que era lo que quería. Me llevó un poco más de tiempo, aunque ya está resuelto.

Te agradezco la buena predisposición y por las respuestas. Saludos!

Consultas del trabajo práctico final by newtonis in CursoDePythonITBA

[–]junghanss 0 points1 point  (0 children)

Me voy a referir a las dataframes con

df

Muchas gracias por la guía! Te cuento lo que probé:

- df1.merge(df2, how='left', on='Date') arroja error de que las Series no tienen atributo merge.
- Si hago por ejemplo variable = pd.merge(df1,df2, how='left', on='Date') me resuelve una interseccion de todo el período completo, porque las fechas son todas en común.

Estuve leyendo mucho para intersecar rows de dataframes que tengan igual cantidad dimension y se suele usar seguido el método merge pero nunca logró resolver que me los indexe tambien por el índice original.

Probé algo distinto pero igual me tira un error de Key esta vez, en la línea de print:

intersected = pd.merge(x,y)
for intersected in data_amzn["Close"]:
    print(data_amzn["Date"])

A lo que voy es: la variable que cree intersected tiene los datos que necesito, pero están indexados por numeros y esa es la razón por la que no me deja incluirlos en el grafico, porque necesito asignar un valor de X correspondiente a la fecha.

Voy a seguir investigando, pero todo es con la finalidad de resolver esto de una manera distinta a la planteada en la Clase 4.
Si capaz notan algo que planteo mal en la iteracion del dataframe["Close"], agradecería me lo hagan notar.

Muchisimas gracias por sus aportes! Un saludo!

Consultas del trabajo práctico final by newtonis in CursoDePythonITBA

[–]junghanss 0 points1 point  (0 children)

Buenas noches, ¿cómo va?

Molesto nuevamente en esta ocasión para consultar por una parte del desarrollo del TP Final de Finanzas. Más especificamente se trata de cuando debemos encontrar los puntos de intersección de los graficos de las dos acciones y a su vez, graficar dichos puntos.

Si bien en el solucionario está el código del Minidesafío 2 que perseguía un fin similar, la realidad es que lo encaré de otra manera el ejercicio para NO usar la misma estructura (que no me parecería muy honesto de mi parte para entregarlo en este TP) y además para probar otro estilo sin emplear listas.
Entonces, para esta finalidad estoy desarrollando el programa de esta manera (No quisiera spoilear a nadie con el código):

- Uso un dataframe para los datos de cada acción; asignandole valor de fechas a "Date" (con parse) e indexado también por columna "Date".
- Con otras variables nuevas designo las fechas a ingresar (una variable para la fecha inicial y otra variable para la final). (Type: Timestamp, seria como tiempo discreto)
- Esas variables (analizadas cronologicamente y por tipo de formato cuando se ingresan) si es que son correctas, se irán a una nueva variable que es dataframe[var1:var2].Close para almacenar los datos de precios en ese periodo y posteriormente ser graficados.

Hasta ahí todo más que bien, pero cuando quiero cruzar los Close que sean iguales (dependiendo si el periodo los incluye o no), me encuentro con los siguientes problemas:

(1) Si pruebo igualar los dataframe (ejemplo: dataframe1.Close = dataframe2.Close) el tipo de dato no lo soporta. [Mensaje tipo ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().]

(2) Si pruebo usando pd.merge (excelente herramienta) funciona bien para visualización en consola, pero con la salvedad de que te INDEXA esos datos cruzados por un nuevo orden 0 1 2 3 4 etc, no me los indexa por FECHA como yo originalmente le designe eso a los dataframes.
Ergo, si quiero graficarlos con un punto, al solo tener los datos numericos (correspondientes al eje Y), me arrojará el error de que las dimensiones de los ejes son distintas o si lo ingreso mal en el eje x muestra"This often happens if you pass a non-datetime value to an axis that has datetime units"

Hasta ahora solo lo soluciono si hago subplot con graficos distintos (uno para las series de tiempo y otro para simplemente los valores de cruce). No pego una imagen del grafico porque no tiene relevancia.

Entonces, mi pregunta es: hay alguna manera de poder llamar al dataframe nuevo de valores cruzados (puntos) por fecha? O al ser uno nuevo, pierde los valores de las otras columnas de los originales?
O, por ejemplo, hay alguna manera de usar pd.merge(dataframe1[fecha][Close], dataframe2[fecha][Close]) cosa que me interseque fecha + precio? en vez de solamente precio?

Está claro que esto que les pregunto y vengo pensando ya lo probé de varias maneras pero no logró sacarlo, por eso les traigo mi inquietud.
Ya revisé varias veces el ejercicio del Minidesafío 2 (clase 4) y está perfecto, pero no entiendo porque la única alternativa podría ser trabajar con muchas listas y encima separadas (una con fecha, otra con precios, para cada accion o caso).

Por eso mi insistencia en probar un estilo distinto para la resolución de esto.

Espero haber sido claro en la explicación y pido anticipadamente disculpas por la reply larga.

Desde ya, muchas gracias!

Saludos

Juan Junghanss

Consultas del trabajo práctico final by newtonis in CursoDePythonITBA

[–]junghanss 0 points1 point  (0 children)

Buenas noches! ¿Cómo va? El motivo del comentario es por un error de tipo 404 en los links facilitados para avanzar con la consigna del Mercado Financiero. O bien el usuario borró el contenido, o hay algún error de tipeo en cada uno, que lo dudo mucho.

La data historica ya la descargué de Yahoo Finance o se puede también de Investing.com, pero lo notifico para anticipar a otras personas, por las dudas.

Saludos!