Estimation du temps de lecture : 3 procès-verbal
Sur ce site, nous avons publié des articles sur la façon de supprimer les caractères indésirables de vos données et sur la façon de supprimer les caractères d'un fichier CSV importé. Ces deux articles vous montrent différentes approches.
Dans ce billet de blog, nous allons aborder le processus en utilisant des boucles dans une fonction. Essentiellement, nous allons passer une liste , puis nous allons parcourir en boucle les chaînes de caractères pour vérifier les données par rapport à cette liste.
Étape 1 - Importation des données et création d'un cadre de données
Le premier travail que nous devons effectuer est de charger les données. Ici, nous créons un dictionnaire avec leurs paires clé-valeur respectives.
Afin de préparer les données à être traitées par la fonction de l'étape 2, nous les chargeons ensuite dans un cadre de données.
import pandas as pd
#Create a dataset locally
data = {'Number': ["00&00$000", '111$11111','2222€2222','3333333*33','444444444£','555/55555','666666@666666'],
'Error' : ['0','0','0','0','0','0','0']}
#Create a dataframe and tell it where to get its values from
df = pd.DataFrame (data, columns = ['Number','Error'])
Étape 2 - Créez la fonction qui vérifie les données invalides.
C'est la pièce principale de la logique qui donne la sortie. Comme vous pouvez le voir, il y a une liste "L" qui est envoyée à la fonction run.
Une chose à noter est que *l est passé à la fonction, car il y a plus d'une valeur dans la liste, sinon le programme ne s'exécuterait pas correctement.
Pour commencer, nous créons un cadre de données, qui extrait à l'aide d'une expression régulière les caractères que nous ne voulons pas avoir.
Ensuite, nous devons supprimer une colonne qui est générée avec des valeurs NAN, car celles-ci ne sont pas nécessaires.
Ensuite, nous avons mis à jour la célébrité des données originales avec les valeurs que nous avons trouvées.
Au cas où il y aurait des valeurs NAN dans cette colonne "Erreur" mise à jour, nous les supprimons sur la ligne suivante.
Le principal élément suivant est la boucle qui crée une nouvelle colonne appelée "Fix". Elle contient les valeurs qui seront introduites dans le correctif après que les données que nous ne voulons pas soient supprimées et que les données soient nettoyées.
Les données dont nous n'avons pas besoin se trouvent dans str.replace.
#Function to loop through the dataset and see if any of the list values below are found and replace them
def run(*l):
#This line extracts all the special characters into a new column
#Using regular expressions it finds values that should not appear
df2 = df['Number'].str.extract('(\D+|^(0)$)') # New dataframe to get extraction we need
print(df2)
df2 = df2.drop(1, axis=1) # Drops the column with NAN in it, not required
df['Error'] = df2[0] # Updates original dataframe with values that need to be removed.
#This line removes anything with a null value
df.dropna(subset=['Error'], inplace=True)
#This line reads in the list and assigns it a value i, to each element of the list.
#Each i value assigned also assigns an index number to the list value.
#The index value is then used to check whether the value associated with it is in the df['Number'] column
#and then replaces if found
for i in l:
df['Fix']= df['Number'].str.replace(i[0],"").str.replace(i[1],"").str.replace(i[2],"").str.replace(i[3],"") \
.str.replace(i[4],"").str.replace(i[5],"").str.replace(i[6],"")
print("Error list to check against")
print(i[0])
print(i[1])
print(i[2])
print(i[3])
print(i[4])
print(i[5])
print(i[6])
print(df)
#This is the list of errors you want to check for
l = ['$','*','€','&','£','/','@']
Étape 3 - Exécuter le programme
Pour exécuter ce programme, il suffit d'exécuter le code ci-dessous. Tout ce qu'il fait est de lire la liste "L" dans la fonction "run" et de produire la sortie de l'étape 4.
run(l)
Étape 4 - Sortie
Error list to check against
$
*
€
&
£
/
@
Number Error Fix
0 00&00$000 & 0000000
1 111$11111 $ 11111111
2 2222€2222 € 22222222
3 3333333*33 * 333333333
4 444444444£ £ 444444444
5 555/55555 / 55555555
6 666666@666666 @ 666666666666
Process finished with exit code 0