Pandas Datumsformat im Index ändern

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
tmessers
User
Beiträge: 28
Registriert: Dienstag 30. Oktober 2018, 21:08

Hallo liebe Python-Gemeinde,

Ich schlage mich mit einem Problem rum, für das ich im Netz keine Lösung gefunden habe.
Der Nachfolgende Code zieht Daten aus einer Excel-Datei.
Durch transponieren werden die Datumswerte zu Indexwerten im Format
Y-m-d h:m:s (Beispiel 2020-02-22 00:00:00). Ich möchte diese Indexwerte in
Das Format d-m-Y umwandeln. Dadurch erwarte ich, im Plot auf der x-Achse, gleich das bevorzugte Datumsformat zu haben.
1) Meine Fragen sind, wie ändere ich die Werte im Index? Mit einer For-Schleife?
2) Ist es sinnvoll das so zu tun oder besser im Plot das Datumsformat zu ändern?

Wer weiß Rat?

Mein Code:

Code: Alles auswählen

 import pandas as pd
import matplotlib.pyplot as plt
import time
from datetime import date
import dateutil

df =pd.read_excel('https://sozialministerium.baden-wuerttemberg.de/fileadmin/redaktion/m-sm/intern/downloads/Downloads_Gesundheitsschutz/Tabelle_Coronavirus-Faelle-BW.xlsx', sheet_name=0, header=6)
#print(df)
#Auswahl der Zeilen, die Berücksichtigt werden sollen
df_auswahl=df.loc[[10,5,1,26,29],:]
#Transponieren der Spalten
df_auswahl=df_auswahl.T
#Erste Zeile des DataFrame löschen
df_auswahl.drop(['Unnamed: 0'],inplace=True)
df_auswahl.columns = ['Freiburg','Breisg.-Hochschw.','Baden-Baden','Ortenau','Rastatt']
print(df_auswahl)
#——-Dialog: Zeitraum auswählen über Datum
#Letzen Datumswert ermitteln
erst_datum=df_auswahl.index[-1]
Frage=input('Wollen Sie den Zeitraum eingrenzen? j/n: /n Erstes Datum ist %s' %erst_datum)
if Frage == 'j':
  monat=input('Geben Sie den Monat ein. Format XX: ')
  tag=input('Geben Sie einen Tag ein. Format XX: ')
  datum=('2020-%s-%s' %(monat,tag))
else:
  datum=str(erst_datum)
#DataFrame in Abhängigkeit von datum erstellen  
df_neu= df_auswahl[df_auswahl.index > dateutil.parser.parse(datum)]
#print(df_neu)
#——-Werte für annotate ermitteln
wert_fre=int(df_neu.at[df_neu.index[0],df_neu.columns[0]])
#print(wert_fre)
wert_brh=int(df_neu.at[df_neu.index[0],df_neu.columns[1]])
wert_bad=int(df_neu.at[df_neu.index[0],df_neu.columns[2]])
wert_ort=int(df_neu.at[df_neu.index[0],df_neu.columns[3]])
wert_ras=int(df_neu.at[df_neu.index[0],df_neu.columns[4]])
#aktuelles Datum im DataFrame-Index ermitteln
akt_datum=df_neu.index[0]
#print(akt_datum)

#———Erstellung des Diagramms mit matplotlib
#Festlegung des Standes
stand=date.today()
stand_formatiert=stand.strftime('%d.%m.%Y')
print(stand_formatiert)
#Plot erstellen
df_neu.plot(marker='.')
plt.xticks(rotation=30)
plt.grid(True)
plt.title('Coronafälle Stand: %s' %stand_formatiert)
plt.gcf().autofmt_xdate() 
plt.annotate(str(wert_fre),xy=(akt_datum,wert_fre),color='blue')
plt.annotate(str(wert_brh),xy=(akt_datum,wert_brh),color='orange')
plt.annotate(str(wert_bad),xy=(akt_datum,wert_bad),color='green')
plt.annotate(str(wert_ort),xy=(akt_datum,wert_ort),color='red')
plt.annotate(str(wert_ras),xy=(akt_datum,wert_ras),color='purple')
plt.xlabel('Datum')
plt.ylabel('Fälle')
plt.show()
dateiname= ('%s Corona-BW.pdf' %stand)
plt.savefig(dateiname)
Sirius3
User
Beiträge: 18219
Registriert: Sonntag 21. Oktober 2012, 17:20

Nein, das ist nicht sinnvoll. Formatiere die Achsenbeschriftung so, wie Du es willst.
Antworten