Depuis la première étape de la conception du concept, "traiter les données brutes en" intégrant le temps de travail si les valeurs autres que le nom du salarié et le temps de travail sont les mêmes "" a été implémentée, nous allons le résumer. https://qiita.com/wellwell3176/items/7dba981b479c5933bf5f Figure: Extrait de données brutes Comme le nom de l'employé n'est pas nécessaire en tant que données, je souhaite supprimer le nom de l'employé et additionner le temps de travail si toutes les informations autres que le nom de l'employé sont identiques.
program
import pandas as pd
df=pd.read_excel('/content/drive/My Drive/Colab Notebooks/data2.xlsx')
df["Classification"]=df["Classification"]+df["Entreprise"] #後工程で必要なのでClassificationとEntrepriseは一括表示にする
df=df.rename(columns = {'Classification':'業務Classification'} #Changer également l'en-tête de ligne
df["Heures d'ouverture"] = pd.to_datetime(df["Heures d'ouverture"],format="%H:%M:%S")
#Étant donné que le temps de travail a été entré en tant que données brutes par la définition de l'utilisateur Excel, convertir de la chaîne de caractères en datetime en spécifiant le format
df["Heures d'ouverture"] = df["Heures d'ouverture"].dt.minute
#Les chiffres sont[~~ minutes][~~ Heure]Puisqu'il y a une demande d'affichage avec, définissez la date[Minutes]Convertir en type int
df2=df.groupby(["thème","temps","Nom du pays","Division des affaires"],as_index=False).sum()
#Agréger par autre que le nom de l'employé. df.Notez que le résultat de groupby ne sera pas enregistré à moins qu'il ne soit attribué.
df2.to_excel('/content/drive/My Drive/Colab Notebooks/data5.xlsx')
Figure: Résultat de sortie du programme C'est OK car la combinaison de chaînes de caractères de la division commerciale, la suppression du nom de l'employé et l'agrégation du temps sont réalisées.
** 1. Impossible de convertir la chaîne de caractères en heure avec to_datetime **
python
df["Heures d'ouverture"] = pd.to_datetime(df["Heures d'ouverture"])
-->TypeError: <class 'datetime.time> is not convertible to datetime
#Un problème est survenu avec le "format d'affichage" d'Excel. "Hh" défini par l'utilisateur:mm "est utilisé et la valeur par défaut est_Je ne pouvais pas lire ceci à datetime
#Résolu en utilisant l'option format et en spécifiant la méthode de description de la colonne correspondante
df["Heures d'ouverture"] = pd.to_datetime(df["Heures d'ouverture"],format="%H:%M:%S") #C'est acceptable
** 2. Les heures de travail ne sont pas agrégées par groupe par **
Version échouée
df["Heures d'ouverture"] = pd.to_datetime(df["Heures d'ouverture"],format="%H:%M:%S")
df.groupby("Nom du pays").mean()
ValueError:Aucun axe nommé thème pour le type d'objet<class 'pandas.core.frame.DataFrame'>
Il s'agissait d'une production comme le montre la figure ci-dessus, et l'agrégation par «temps de travail» n'a pas eu lieu. La cause semble être que le format datetime n'a pas été reconnu comme la valeur agrégée de la fonction groupby. Résolu en changeant datetime en type int comme le produit fini.
Version réussie
df["Heures d'ouverture"] = pd.to_datetime(df["Heures d'ouverture"],format="%H:%M:%S")
df["Heures d'ouverture"] = df["Heures d'ouverture"].dt.minute
df.groupby("Nom du pays").mean()
Avec cela, le temps de travail peut être capturé sous la forme de ~~ [minutes] du côté de la tabulation.
3. AttributeError: 'Series' object has no attribute 'minute'
python
df["Heures d'ouverture"] = df["Heures d'ouverture"].minute #J'obtiens une erreur en utilisant ceci
--> AttributeError: 'Series' object has no attribute 'minute'
#.Puisque dt manquait, df["Heures d'ouverture"]Impossible de traiter une série de tableaux
df["Heures d'ouverture"] = df["Heures d'ouverture"].dt.minute #C'est la bonne réponse
4. ValueError: No axis named HOGE for object type class'pandas.core.frame.DataFrame'
python
df.groupby("Nom du pays","thème").sum() #J'obtiens une erreur en utilisant ceci
-->ValueError:Aucun axe nommé thème pour le type d'objet<class 'pandas.core.frame.DataFrame>
#Une erreur de description lors de l'utilisation de plusieurs index dans la fonction groupby.[]Cela ne suffisait pas.
df.groupby(["thème","Nom du pays"]).sum() #C'est acceptable
Le nom de la colonne ne peut pas être modifié avec rename () https://teratail.com/questions/291634 Comment utiliser le groupe Pandas par https://qiita.com/propella/items/a9a32b878c77222630ae Comment convertir une date en utilisant Series.dt () dans Pandas https://qiita.com/Takemura-T/items/79b16313e45576bb6492