Trois méthodes Pandas que vous ne connaissez peut-être pas

L'auteur de l'article, dont nous publions la traduction aujourd'hui, dit que lorsqu'il a découvert les méthodes de la bibliothèque Pandas dont il veut parler ici, il se sentait comme un programmeur complètement incompétent. Pourquoi? Le fait est que lorsqu'il a écrit le code auparavant, il était trop paresseux pour examiner le moteur de recherche et savoir s'il existait des moyens efficaces de résoudre certains problèmes. En conséquence, il ne connaissait même pas l'existence d'un certain nombre de méthodes Pandas très utiles. Sans utiliser ces méthodes, il a quand même pu mettre en œuvre la logique nécessaire, mais cela lui a demandé plusieurs heures de travail, ce qui le rendait nerveux. Et bien sûr, en cours de route, il a écrit un tas de code inutile. Il a préparé cet article pour ceux qui ne voudraient pas être dans sa situation.



Méthodes Idxmin () et idxmax ()


J'ai déjà écrit sur les idxmin() et idxmax() , mais si je n'en parle pas ici, il ne vous sera pas facile de comprendre de quoi nous parlerons ensuite.

Ces méthodes, si vous les décrivez en un mot, renvoient l'index (position du pointeur) pour l'enregistrement souhaité. Supposons que j'ai créé l'objet Series Pandas suivant.

  x = pd.Series ([ 1, 3, 2, 8, 124, 4, 2, 1 ]) 

J'ai besoin de trouver l'indice de l'élément minimum et maximum. Bien sûr, il n'est pas difficile de le découvrir simplement en regardant la description de l'objet, mais dans les projets réels, jamais (exactement comme ça - «jamais») ne rencontrent des ensembles de données constitués d'un si petit nombre d'éléments.

Que faire Utilisez les idxmin() et idxmax() . Voici à quoi ça ressemble:



En utilisant ces méthodes, vous ne devez pas oublier qu'elles renvoient l'index de la première occurrence de la valeur minimale ou maximale.

Méthode Ne ()


La méthode ne() été une énorme découverte pour moi. Il y a quelque temps, je travaillais avec des séries chronologiques de données et j'ai rencontré un problème lorsque les n premières observations étaient égales à 0.

Imaginez que vous ayez acheté quelque chose, mais que vous ne l'avez pas consommé pendant un certain temps. Ce que vous avez acheté est à votre disposition, mais comme vous ne l'utilisez pas, le niveau de consommation de celui-ci à une certaine date est de 0. Comme j'étais intéressé par les données de consommation obtenues lors de l'utilisation réelle de ce qui a commencé " acheté », il s'est avéré que la méthode ne() était exactement ce dont j'avais besoin.

Considérez le scénario suivant. Nous avons un objet Pandas DataFrame , qui contient les résultats de certaines observations, qui, en haut de la liste, sont représentées par des valeurs de 0.
 df = pd.DataFrame() 



La méthode ne() ne renvoie True que si la valeur actuelle n'est pas celle spécifiée lors de l'appel de cette méthode (par exemple, lorsqu'elle est appelée, la valeur 0 peut être spécifiée), sinon elle renvoie False :
 df['X'].ne(0) 


Cette méthode à elle seule ne peut pas être considérée comme particulièrement utile. Rappelez-vous maintenant comment au début de l'article, j'ai dit que pour comprendre l'article, vous devez vous familiariser avec la méthode idxmax() . Je ne plaisantais pas alors. Vous pouvez attacher l'appel idxmax() appel ne() ci-dessus. Le résultat est le suivant:
 df['X'].ne(0).idxmax() 


Cela nous indique que le premier résultat d'observation non nul est en position 6. Encore une fois, cela peut ne pas sembler être une découverte aussi importante. Mais le plus important ici est que ces informations peuvent être utilisées pour sélectionner un sous-ensemble de l'objet DataFrame et pour afficher uniquement les valeurs qui apparaissent à partir de la position détectée:
 df.loc[df['X'].ne(0).idxmax():] 


Cette technique est très utile dans de nombreuses situations où vous devez travailler avec des données de séries chronologiques.

Méthodes nsmallest () et nlargest ()


Je soupçonne qu'après avoir vu les noms de ces méthodes, vous pouvez deviner leur objectif. Supposons que j'ai créé le DataFrame suivant:
 df = pd/DataFrame({ 'Name': ['Bob', 'Mark', 'Steph', 'Jess', 'Becky'], 'Points': [55, 98, 46, 77, 81] }) 


Pour le rendre plus intéressant, supposons que voici les résultats d'un test que certains élèves ont réussi. Nous voulons trouver trois étudiants qui ont fait le pire avec le test:
 df.nsmallest(3, 'Points') 


Ou - découvrez qui fait partie des trois premiers:
 df.nlargest(3, 'Points') 


Ces méthodes sont de très bons substituts à des méthodes comme sort_values() .

Résumé


Ici, nous avons examiné quelques méthodes utiles de Pandas. Pour ceux qui les connaissent, leur application peut sembler tout à fait naturelle, mais pour ceux qui viennent de les découvrir, elles peuvent ressembler à une vraie trouvaille. Nous espérons qu'ils vous serviront bien.

Chers lecteurs! Connaissez-vous des méthodes utiles de Pandas que d'autres ne connaissent peut-être pas?


Source: https://habr.com/ru/post/fr479276/


All Articles