[PYTHON] Memorandum (Erfassung / Konvertierung der "benutzerdefinierten" Zeit, Kreuztabelle)

Einführung

Da der erste Schritt des Konzeptentwurfs "Verarbeiten der Rohdaten durch" Integrieren der Arbeitszeit, wenn andere Werte als der Name des Mitarbeiters und die Arbeitszeit gleich sind "" implementiert wurde, werden wir sie zusammenfassen. https://qiita.com/wellwell3176/items/7dba981b479c5933bf5f image.png Abbildung: Auszug aus Rohdaten Da der Name des Mitarbeiters als Daten nicht erforderlich ist, möchte ich den Namen des Mitarbeiters löschen und die Arbeitszeit addieren, wenn alle Informationen außer dem Namen des Mitarbeiters identisch sind.

Programm abgeschlossen

program


import pandas as pd
df=pd.read_excel('/content/drive/My Drive/Colab Notebooks/data2.xlsx')

df["Einstufung"]=df["Einstufung"]+df["Unternehmen"] #後工程で必要なのでEinstufungとUnternehmenは一括表示にする
df=df.rename(columns = {'Einstufung':'業務Einstufung'} #Ändern Sie auch die Zeilenüberschrift

df["Arbeitszeit"] = pd.to_datetime(df["Arbeitszeit"],format="%H:%M:%S") 
 #Da die Arbeitszeit von der Excel-Benutzerdefinition als Rohdaten eingegeben wurde, konvertieren Sie die Zeichenfolge in datetime, indem Sie das Format angeben
df["Arbeitszeit"] = df["Arbeitszeit"].dt.minute
 #Die Zahlen sind[~~ Minuten][~~ Zeit]Da eine Anforderung zum Anzeigen vorliegt, legen Sie die Datums- und Uhrzeitangabe fest[Protokoll]In int-Typ konvertieren

df2=df.groupby(["Thema","Zeit","Ländername","Geschäftsbereich"],as_index=False).sum()
 #Aggregieren nach anderem als dem Namen des Mitarbeiters. df.Beachten Sie, dass das Ergebnis von groupby nur gespeichert wird, wenn es zugewiesen ist.
df2.to_excel('/content/drive/My Drive/Colab Notebooks/data5.xlsx')

image.png Abbildung: Programmausgabeergebnis Dies ist in Ordnung, da die Zeichenkettenkombination des Geschäftsbereichs, das Löschen des Mitarbeiternamens und die Aggregation der Zeit realisiert werden.

Während des Programms aufgetretene Fehler und Ausfälle "und deren Übersicht

** 1. Zeichenfolge kann mit to_datetime nicht in Zeit konvertiert werden **

python


df["Arbeitszeit"] = pd.to_datetime(df["Arbeitszeit"]) 

-->TypeError: <class 'datetime.time> is not convertible to datetime
#Es gab ein Problem mit dem "Anzeigeformat" von Excel. Benutzerdefiniertes "hh":mm ”wird verwendet und die Standardeinstellung ist_Ich konnte dies zum Zeitpunkt des Datums nicht lesen
#Gelöst durch Verwendung der Formatoption und Angabe der Beschreibungsmethode der entsprechenden Spalte
df["Arbeitszeit"] = pd.to_datetime(df["Arbeitszeit"],format="%H:%M:%S") #Das ist in Ordnung

** 2. Arbeitszeiten werden nicht nach Gruppen von ** zusammengefasst

Version fehlgeschlagen


df["Arbeitszeit"] = pd.to_datetime(df["Arbeitszeit"],format="%H:%M:%S") 
 
df.groupby("Ländername").mean()
ValueError:Keine Achse mit dem Namen Thema für den Objekttyp<class 'pandas.core.frame.DataFrame'>

image.png Es wurde wie in der obigen Abbildung gezeigt ausgegeben, und die Aggregation nach "Arbeitszeit" trat nicht auf. Die Ursache scheint zu sein, dass das Datum / Uhrzeit-Format nicht als aggregierter Wert der groupby-Funktion erkannt wurde. Gelöst durch Ändern von datetime in int type wie das fertige Produkt.

Erfolgreiche Version


df["Arbeitszeit"] = pd.to_datetime(df["Arbeitszeit"],format="%H:%M:%S") 
df["Arbeitszeit"] = df["Arbeitszeit"].dt.minute 

df.groupby("Ländername").mean()

image.png Damit kann die Arbeitszeit in Form von ~~ [Minuten] auf der Tabellenseite erfasst werden.

3. AttributeError: 'Series' object has no attribute 'minute'

python


df["Arbeitszeit"] = df["Arbeitszeit"].minute #Ich erhalte eine Fehlermeldung

--> AttributeError: 'Series' object has no attribute 'minute'
#.Da dt fehlte, df["Arbeitszeit"]Konnte für eine Reihe von Arrays nicht verarbeitet werden

df["Arbeitszeit"] = df["Arbeitszeit"].dt.minute #Dies ist die richtige Antwort

4. ValueError: No axis named HOGE for object type class'pandas.core.frame.DataFrame'

python


df.groupby("Ländername","Thema").sum() #Ich erhalte eine Fehlermeldung

-->ValueError:Keine Achse mit dem Namen Thema für den Objekttyp<class 'pandas.core.frame.DataFrame>
#Ein Beschreibungsfehler bei Verwendung mehrerer Indizes in der Groupby-Funktion.[]War nicht genug.

df.groupby(["Thema","Ländername"]).sum() #Das ist in Ordnung

Referenzierte Seiten / Websites

Der Spaltenname kann nicht mit rename () https://teratail.com/questions/291634 geändert werden Verwendung von Pandas groupby https://qiita.com/propella/items/a9a32b878c77222630ae So konvertieren Sie ein Datum mit Series.dt () in Pandas https://qiita.com/Takemura-T/items/79b16313e45576bb6492

Recommended Posts

Memorandum (Erfassung / Konvertierung der "benutzerdefinierten" Zeit, Kreuztabelle)
Konvertierung von Zeitdaten in 25-Uhr-Notation
Erfassung von Zeitreihendaten (täglich) von Aktienkursen
Zeitmessung