Python - Problema con plot y el tipo de datos a graficar.

 
Vista:
sin imagen de perfil
Val: 24
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

Problema con plot y el tipo de datos a graficar.

Publicado por Enrique (13 intervenciones) el 09/05/2020 20:22:35
En https://github.com/akitxu/Consultas-Programacion se encuentran los archivos que documentan este problema. Mi problema es el siguiente. El script que muestro a continuación, grafica correctamente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import os
import pandas as pd
import datetime as dt
import matplotlib.pyplot as plt
 
# Leer fichero descargado de Renta 4
os.chdir("/media/enri/Mi_Proyecto/Py_Proyecto_2020/Py_Paso_Peregrino/Ficheros_R4_csv/")
df_temp = pd.read_csv("DedaloPP.csv" ,index_col = "Date",  decimal  =",", parse_dates = ["Date"],
                      usecols = ["Date", "Close"],  na_values = ["nan"], sep='\t')
df_temp = df_temp.dropna()
df1 = df_temp.reset_index()
 
#Grafica de las cotizaciones
title =" Cotizaciones de R4 csv"
ax = df_temp.plot(title=title, fontsize=12, figsize=(12,8))
ax.set_xlabel("Fecha")
ax.set_ylabel("Precio")
 
print (df1.dtypes)
print (df_temp[:3])
print (df_temp.info())

Comprobamos que grafica bien y que el tipo de las fechas del índice de las filas es "object". Esto puede ser debido a lo que se menciona en pandas.read_csv, https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html consultando "parse_dates": "...Si una columna o índice no puede representarse como una matriz de fechas y horas, por ejemplo, debido a un valor no analizable o una mezcla de zonas horarias, la columna o índice se devolverá sin alterar como un tipo de datos de objeto Como necesito que las fechas sean del tipo "datetime64", antes de graficar convierto el formato "object" al formato "datetime64", y ejecuto el script modificado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Leer fichero descargado de Renta 4
os.chdir("/media/enri/Mi_Proyecto/Py_Proyecto_2020/Py_Paso_Peregrino/Ficheros_R4_csv/")
df_temp = pd.read_csv("DedaloPP.csv" ,index_col = "Date",  decimal  =",", parse_dates = ["Date"],
                      usecols = ["Date", "Close"],  na_values = ["nan"], sep='\t')
df_temp = df_temp.dropna()
df1 = df_temp.reset_index()
 
df_temp.reset_index(inplace=True)
 
df_temp["Date"] = pd.to_datetime(df_temp["Date"])
pd.to_datetime(df_temp["Date"], errors = "coerce", format = "%Y-%m-%d")
assets = df_temp.set_index("Date")["2016-1-4":"2020-5-5"]
 
# Normalizar los precios utilizando la primera fila del df
#assets_filtrado = assets.loc[inicio: fin]
assets_normalizados = assets / assets.iloc[0, :]
 
# Representación gráfica
title =" Cotizaciones de R4 csv"
ax = assets_normalizados.plot(title=title, fontsize=12, figsize=(12,8))
ax.set_xlabel("Fecha")
ax.set_ylabel("Precio")
 
assets[:3]

Con este dormato de fechas, la gráfica se muestra distorsionada. ¿Cuál puede ser la causa?. Al principio he estado centrado en el contenido de los archivos csv descargados. Finalmente, con esta prueba, creo haber centrado el problema en el tipo de datos. ¿Cómo podría conseguir que las fechas importadas lo estén en el formato fecha?. ¿Por qué grafica mal con el formato fecha?. Agradeceré vuestra ayuda y aclaraciones.bien.

He probado con el IDE "spyder", convirtiendo los ficheros a xlsx. y el gráfico también sale distorsionado. Fichero de prueba: pruebas_spyder.py

Agradeceré vuestra ayuda para aclarar mis dudas y resolver este problema.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder