Maison  >  Article  >  développement back-end  >  Python extrait la méthode d'enregistrement d'emplacement spécifiée après le regroupement groupby

Python extrait la méthode d'enregistrement d'emplacement spécifiée après le regroupement groupby

不言
不言original
2018-04-20 13:45:304845parcourir

Ce qui suit est une méthode Python pour extraire les enregistrements d'emplacement spécifiés après un regroupement groupby. Elle a une bonne valeur de référence et j'espère qu'elle sera utile à tout le monde. Venez jeter un œil ensemble

Lors de l'analyse et de la modélisation des données, la première chose que nous devons faire est de traiter les données et d'extraire les informations dont nous avons besoin. Ce qui suit présente une certaine utilisation de groupby pour rendre le traitement des données plus pratique.

Lorsque nous utilisons groupby pour extraire des informations, nous trouvons souvent des statistiques (max, min, var, etc.) des échantillons regroupés. Si maintenant nous voulons prendre le deuxième enregistrement et l’avant-dernier enregistrement de l’échantillon groupé, comment devons-nous procéder ? Nous pouvons extraire le premier et le dernier échantillons après les avoir regroupés en premier et en dernier. Mais si l’on souhaite prélever des échantillons à des endroits précis, il n’existe pas de fonction toute faite. Nous devons l'écrire nous-mêmes. Ci-dessous, je vais vous présenter comment implémenter les fonctions ci-dessus.

1) Introduction des données

La table d'action comporte 3 colonnes : userid, actionType et actionTime, qui représentent l'identifiant de l'utilisateur, le type de comportement de l'utilisateur et comportement respectivement. Le format spécifique est le suivant :

2) Opération de regroupement

a = action.groupby('userid') 
b = action.groupby('userid')['actionTime'] 
type(a) 
type(b)

Après le regroupement, nous pouvons voir que les types de données de a et b sont DataFrameGroupBy et SeriesGroupBy

3) Obtenir le numéro Opération

①Deuxième/avant-dernière durée de fonctionnement par différents utilisateurs

action.groupby('userid')['actionTime'].apply(lambda i:i.iloc[1] if len(i)>1 else np.nan) 
action.groupby('userid')['actionTime'].apply(lambda i:i.iloc[-2] if len(i)>1 else np.nan)

②Différents utilisateurs Le deuxième/ avant-dernier temps de fonctionnement d'un certain comportement

action[action['actionType']==2].groupby('userid')['actionTime'].apply(lambda i:i.iloc[1] if len(i)>1 else np.nan) 
action[action['actionType']==2].groupby('userid')['actionTime'].apply(lambda i:i.iloc[-2] if len(i)>1 else np.nan)

PS : étant donné que certains utilisateurs ne peuvent avoir qu'un seul enregistrement, le prendre directement peut entraîner erreurs, donc j'utilise if pour porter un jugement en premier.

De cette façon, nous pouvons extraire des échantillons à n'importe quelle position des données groupées.

Recommandations associées :

Méthode Pandas pour obtenir la ligne avec la valeur maximale dans le groupe groupby


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn