Mehrere Spalten zusammnerechen und als Wochenwerte ausgeben

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
lexx
User
Beiträge: 19
Registriert: Sonntag 23. Dezember 2018, 14:15

Schönen guten Morgen,

ich hoffe die Überschrift ist verständlich gewählt :oops:

Ich würde gerne die täglichen Werte im Wochenformat haben, sodass nur noch wöchentliche Werte auftauchen.
Kann mir da eventuell einer helfen?
Habe jetzt schon drei Tage Probiert und stehe jetzt langsam auf dem Schlauch.
Zum besseren Verständnis hänge ich mal ein Beispiel an

Code: Alles auswählen

import pandas as pd
import numpy as np

days = pd.date_range(date_today, date_today + timedelta(14), freq='D')

df = pd.DataFrame(np.random.randint(0,10,size=(5,15 )), columns=days)
df
lexx
User
Beiträge: 19
Registriert: Sonntag 23. Dezember 2018, 14:15

Habe grade festgestellt, dass Überschrift und Code fehlerhaft sind, da ich aber leider die Option zum ändern nicht finde , mache ich jetzt einen Doppelpost.

Code: Alles auswählen

import pandas as pd
import numpy as np
from  datetime import datetime, timedelta
date_today = datetime.now()
days = pd.date_range(date_today, date_today + timedelta(14), freq='D')

df = pd.DataFrame(np.random.randint(0,10,size=(5,15 )), columns=days)
df
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

lexx hat geschrieben: Mittwoch 26. Dezember 2018, 10:22 da ich aber leider die Option zum ändern nicht finde (...)
Das Bearbeiten von eigenen Beiträgen ist zwar möglich, wird aber einige Minuten nach dem Absenden deaktiviert. Der passende Button (ein Stift-Symbol) verschwindet dann automatisch.

Bei der eigentlichen Fragestellung verstehe ich noch nicht so ganz, was du willst. Du hast tägliche Werte und möchtest daraus etwas wochenweise haben, richtig? Kann es sein, dass du den MIttelwert der 7 Einzelwerte suchst?
lexx
User
Beiträge: 19
Registriert: Sonntag 23. Dezember 2018, 14:15

Hi,

Ich wollte die Werte zusammen rechnen und ne wöchentliche Ausgabe haben. Also anstatt jeden Tag, nur Kalenderwoche 1, Kalenderwoche 2.....
Habe es mit group probiert, weiß aber nicht ob es der richtige Weg ist.
lexx
User
Beiträge: 19
Registriert: Sonntag 23. Dezember 2018, 14:15

So, ich habe jetzt lange probiert und eine funktionierenden Weg gefunden.
Eventuell versteht man mein Vorhaben jetzt besser und kann mir einen einfacheren bzw. besseren Weg zeigen.

Code: Alles auswählen

import pandas as pd
import numpy as np
from  datetime import datetime, timedelta
import time
date_today = datetime.now()
days = pd.date_range(date_today, date_today + timedelta(19), freq='D')
#days = pd.date_range(start=datetime(2015,8,9), end=datetime(2015,9,1))
df = pd.DataFrame(np.random.randint(0,10,size=(5,20 )), columns=days)
dfOriginal = df.copy() 
dfOriginal.columns =dfOriginal.columns.week

df.columns = df.columns.week
list = []
for i in df.columns:
    #print(type(df[i]))
    if i not in list:
        list.append(i)
        #print(df[i].sum(axis=1))
        df["kw"+str(i)] = df[i].sum(axis=1)
        del df[i]
    else:
        #print("weiter")
        continue
print(dfOriginal)
print(df)
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Ein `else: continue` ist ziemlich unsinnig. Warum änderst Du `df` Schritt für Schritt, statt ein neues Dataframe aufzubauen, das wäre viel verständlicher.
Das ganze als Einzeiler:

Code: Alles auswählen

df = df.groupby(by=df.columns.week, axis=1).sum()
lexx
User
Beiträge: 19
Registriert: Sonntag 23. Dezember 2018, 14:15

Jowohl! so was habe ich gesucht :lol:

Gebe dir recht mit dem else, aber das ist so aus der bastelei enstanden. Bin mit Python/Pandas ziemlich am Anfang und habe da jetzt echt lange dran gebastelt und gesucht.
Wenn man nicht weiß wonach man suchen muss, gestaltet sich das alles ein wenig schwierig.
Werde deinen Einzeiler gleich mal testen :P
Antworten