Datumsangaben richtig aus der Excel verarbeiten zwecks Plotten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Ulkrum
User
Beiträge: 1
Registriert: Samstag 28. November 2020, 00:19

Hallo zusammen, Ich habe ein Problem, und zwar möchte ich einen Graph plotten, indem ich Daten aus einer spezifischen Zeilenrange in Ecxel einlese. Die Daten müssen immer über das Datum aufgetragen werden. Soweit klappt das ja auch. Ich habe die Daten mit .iloc in der Excel ausgewählt nur das gleiche beim Datum klappt nicht so recht.

Code: Alles auswählen

import matplotlib.pyplot as plt 
import pandas as pd  

data = pd.read_excel(r'C:\Users\marco\Desktop\Gm.xlsx', skiprows=0, sheet_name='MASCHDAT') df = pd.DataFrame(data, columns= ['DATUM','W020','W023'])  
df['DATUM'] = df['DATUM'].apply(pd.to_datetime) 
df.set_index('DATUM',inplace=True)  

plt.rcParams['figure.figsize'] = (15, 8)  

x = df.index 
y1 = df['W020'].iloc[47220:60502] 
y2 = df['W023'].iloc[47220:60502]  

fig, ax1 = plt.subplots() 
ax2 = ax1.twinx() 
curve1 = ax1.plot(x, y1, label='W020', color='r') 
curve2 = ax2.plot(x, y2, label='W023', color='b') 
plt.plot() 
plt.show()  

df.head() 
df.tail() 
print(df.head()) 
print(df.tail())
So erhalte ich die Fehlermeldung "x and y must have same first dimension, but have shapes (72564,) and (13282,)" Ist ja auch logisch, aber mir fällt leider dazu keine Lösung ein.
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

Du mußt für die x-Werte den selben Slice ausschneiden:

Code: Alles auswählen

x = df.index[47220:60502]
narpfel
User
Beiträge: 645
Registriert: Freitag 20. Oktober 2017, 16:10

Andere Möglichkeit: `y1` und `y2` sind `pd.Series`-Objekte, die kennen ihren Index selbst:

Code: Alles auswählen

ax.plot(y1.index, y1, ...)
oder

Code: Alles auswählen

y1.plot(ax=ax, ...)
Antworten