Nettoyage des données 1 Notation Python pratique telle que lambda et map

Aidemy https:// aidemy.net 2020/9/21

Tout d'abord, des salutations ...

Ravi de vous rencontrer, c'est Ngahope! Je suis une école littéraire croustillante, mais j'ai commencé à fréquenter l'école d'apprentissage de l'IA "Aidemy" cette semaine parce que j'étais intéressé par les possibilités de l'IA. J'y apprends diverses connaissances sur l'IA. Je voulais partager ces connaissances avec vous, alors j'ai décidé de les rassembler dans Qiita.

Lisez-le s'il vous plaît!

Quoi apprendre cette fois ・ Notation sur une ligne ・ Affichage fractionné de la liste ・ Traitement effectué sur le dictionnaire

1. Notation sur une ligne

lambda(1) -Une fonction définie par def et renvoyée par return peut être exprimée sur une seule ligne en utilisant lambda.

__ · Argument lambda: valeur renvoyée __

# x*Définit la fonction a qui renvoie 4
a=lambda x: x*4
print(a(4))
# 16

lambda (2) Lorsqu'il y a deux arguments ou plus

-Il suffit de séparer les arguments par ","

a=lambda x,y: x+y
print(a(3,6))
# 9

lambda (3) Description de la fonction de retour, y compris si

・ Écrivez si le reste côte à côte __ · Argument lambda: Process (True) si Condition else Autre Process __

a=lambda x: x*4 if x>4 else x=4
print(a(6))
# 24

2. Affichage fractionné de la liste

Affichage divisé (1)

-Utilisez la fonction de division lorsque vous souhaitez diviser par un certain symbole (un type). __ · Chaîne de caractères .split ("symbole") __

text="my name is ngayope"
text.split(" ") # " (espace)"Séparé par
# ['my','name','is','ngayope']

Affichage divisé (2)

-Utilisez la fonction re.split lorsque vous souhaitez diviser par plusieurs symboles (re doit être importé pour être utilisé) __ ・ re.split ("[symbole]", chaîne de caractères) __

import re
text="Fushigidane,Lézard humain.Zenigame"
re.split("[,.]",text)
# ['Fushigidane','Lézard humain','Zenigame']

Lorsque vous souhaitez utiliser une fonction pour chaque élément de la liste

-Lors de l'utilisation d'une fonction pour chaque élément de la liste, utilisez la fonction map. Une telle fonction est appelée un «itérateur». __ ・ list (map (fonction, liste)) __ * Si vous ne la placez pas dans list (), le résultat de l'application de la fonction ne sera pas reflété!

import re
time_list =["2006/11/26_2:40","2009/1/16_23:35","2014/5/4_14:26","2017/8/9_7:5","2017/4/1_22:15"]

# time_Fonction pour extraire le "temps" de la liste
hour_pick = lambda x: int(re.split("[/_:]",x)[3])
#↑ Première re.Divisez la chaîne avec split. Puis int cette chaîne()Convertissez en une valeur numérique avec. finalement[3]Affichez la fonction pour extraire la partie "heure" avec lambda sur une ligne.

#time_Appliquez la fonction à la liste et renvoyez le résultat.
list(map(hour_pick,time_list))
# [2,23,14,7,22]

Extraire uniquement les éléments qui satisfont à la condition (fonction de jugement d'authenticité) de chaque élément de la liste

-Il peut être extrait en utilisant la fonction de filtre de la même manière que map. __ · liste (filtre (fonction de jugement d'authenticité, liste)) __

#Au-dessus du temps_Une fonction qui définit True uniquement pour les listes dont le "mois" est après juillet
judge=lambda a: int(re.split("[/_:]",a)[1] >6
list(filter(judge,time_list))
# ["2006/11/26_2:40","2017/8/9_7:5"]

Trier en spécifiant les critères de tri avec une fonction

-Utiliser la fonction triée au lieu de la fonction tri. __ · trié (liste, clé = fonction de référence, inverse = Vrai (ordre décroissant)) __

list1=[[2,3][4,1][5,5][9,0][0,7][1,6]]
#Trier en fonction du deuxième élément (ordre décroissant)
sorted(list1,key=lambda x: x[1],reverse=False)
# [[0,7][1,6][5,5][2,3][4,1][9,0]]

Indiquez pour ou si dans la liste

Description de pour dans la liste

-La fonction peut être appliquée à tous les éléments de la même manière que la fonction de carte en procédant comme suit. __ · [Fonction pour la variable dans la liste] __

cm=[100,50,500,3,380]
#[◯m,◯cm]Fonction pour calculer comme
m_cm=lambda x:[x//100,x%100]
print([m_cm(x) for x in cm])
#[[1,0],[0,50],[5,0],[0,3],[3,80]]

Description de pour avec condition (si) dans la liste

-Même si vous procédez comme suit, vous ne pouvez extraire que les éléments qui remplissent les conditions, tout comme la fonction de filtrage. __ · [Élément de variable dans la liste si fonction d'authenticité] __

#Extraire uniquement les "objets de plus de 1 m" dans le cm supérieur
[x for x in cm if x>=100]
# [100,500,380]

Parcourez plusieurs listes en même temps

-Même s'il s'agit d'une liste séparée, un traitement en boucle peut être effectué à l'aide de la fonction zip. __ · pour les variables 1,2 dans zip (Listing 1,2): __ En traitement __ · [Traitement des variables 1, 2 dans zip (Liste 1, 2)] __

a = [1,-2,3,-4,5]
b = [9,8,-7,-6,-5]
#Pour chaque élément de la liste, x*4+y*Faire 2
[x*4+y*2 for x,y in zip(a, b)]
# [22,8,-2,-28,10]

Faites plus de boucles à l'intérieur de la boucle

・ Lors de la lecture en boucle de l'une des deux listes et de l'autre -Définissez une instruction for dans chacune des deux listes et décrivez le traitement des deux variables. -Utilisez la méthode suivante pour le traitement dans la liste. ** [[Process] for Variable 1 in List 1 for Variable 2 in List 2] **

a=[1,2]
b=[5,6]
print([[x+y]for x in a for y in b])
# [6,7,7,8]

Traitement à effectuer sur le dictionnaire

Comptez le nombre d'éléments et sortez sous forme de dictionnaire

-Normalement, il est nécessaire d'initialiser le contenu du dictionnaire un par un, mais il peut être facilement ajouté en utilisant la classe defaultdict au lieu du dictionnaire. ** ・ defaultdict (type d'élément (int, dir, etc.)) **

from collections import defaultdict

d=defaultdict(int)
lst=['Fushigidane','Lézard humain','Zenigame','Lézard humain']
#Retirez chaque élément de la liste en tant que clé et ajoutez 1 au nombre de clés qui apparaissent.
for key in lst:
__d[key] += 1
print(d)
# defaultdict(<class='int'>,{'Fushigidane':1,'Lézard humain':2,'Zenigame':1})

Ajouter un élément dans la valeur du dictionnaire de type liste

-Vous pouvez facilement ajouter des éléments en utilisant defaultdict. ** ・ defaultdict dictionary [clé] .append (élément) **

#dictionnaire de type de liste
a=[('Lézard humain',5),('Lézard',16),('Lézardン',36),('Lézardン',100)]
d=defaultdict(list)
#index d'un[0]Vers x, index[1]Est affecté à y et extrait
for x,y in a:
__d[x].append(y)
print(d)
#defaultdict(<class='list'>,{'Lézard humain':[5],'Lézard':[16],'Lézardン':[36,100]})

Plus facile à compter

-En utilisant la classe Counter, il est plus facile de compter que le dict par défaut. ** ・ Compteur (données de comptage) ** -En définissant ".most_common (nombre d'éléments)", il trie par ordre décroissant et génère le nombre d'éléments spécifié.

from collections import Counter
lst=['Fushigidane','Lézard humain','Zenigame','Lézard humain']
print(Counter(lst).most_common(1))
# Counter({'Lézard humain':2})

Résumé

-En utilisant lambda, la fonction est multipliée sur une ligne. ・ Split et re. Vous pouvez diviser la liste avec Split. -Si une instruction for et une fonction sont décrites dans la liste [], la fonction peut être facilement appliquée aux éléments de la liste. -En utilisant defaultdict et Counter, vous pouvez facilement compter les éléments du dictionnaire.

Cette fois, c'est fini. Merci d'avoir lu jusqu'ici.

Recommended Posts

Nettoyage des données 1 Notation Python pratique telle que lambda et map
Application de Python: Nettoyage des données Partie 1: Notation Python
mappe de traitement de chaîne python et lambda
Ruby, Python et carte
Application de Python: Nettoyage des données Partie 3: Utilisation d'OpenCV et prétraitement des données d'image
À propos de Python, à partir et à l'importation, comme
Hashing de données en R et Python
Application de Python: Nettoyage des données Partie 2: Nettoyage des données à l'aide de DataFrame
Envoyer et recevoir des données d'image au format JSON en Python sur le réseau
Construction de pipeline de données avec Python et Luigi
Optimisations telles que l'interpolation et l'ajustement de courbe
Structure de données Python et implémentation interne ~ Liste ~
Manipulation des données DynamoDB avec Lambda (Node et Python)
Structure et fonctionnement des données Python (mémo d'apprentissage Python ③)
Représentez facilement des données graphiques dans le shell et Python
Compressez les données python et écrivez sur sqlite
Communication de données chiffrées entre Python et C #
[Python] Obtenez des informations produit telles que ASIN et JAN avec Amazon PA-API ver5.0