Maison >développement back-end >Tutoriel Python >Explication détaillée du traitement des chaînes dans la série de nettoyage de données Python
Avant-propos
Le nettoyage des données est une tâche complexe et fastidieuse (kubi), et c'est aussi le maillon le plus important de tout le processus d'analyse des données. Certaines personnes disent que 80 % du temps consacré à un projet d’analyse est consacré au nettoyage des données. Cela semble étrange, mais c’est vrai dans le travail réel. Le nettoyage des données a deux objectifs. Le premier est de rendre les données disponibles via le nettoyage. La seconde consiste à rendre les données plus adaptées à une analyse ultérieure. En d’autres termes, il y a des données « sales » qui doivent être nettoyées, et des données propres qui doivent également être nettoyées.
Dans l'analyse de données, en particulier l'analyse de texte, le traitement des caractères nécessite beaucoup d'énergie, donc comprendre le traitement des caractères est également une capacité très importante pour l'analyse des données.
Méthodes de traitement des chaînes
Tout d'abord, comprenons quelles sont les méthodes de base.
Tout d'abord tout, comprenons La méthode de division de chaîne suivante
str='i like apple,i like bananer' print(str.split(','))
Le résultat de la division de la chaîne de caractères avec des virgules :
[ 'j'aime pomme', 'j'aime bananer']
print(str.split(' '))
Le résultat du fractionnement en fonction des espaces :
[ 'i', 'like', 'apple,i', 'like', 'bananer']
print(str.index(',')) print(str.find(','))
Les deux résultats de recherche sont :
12
Si l'index est introuvable, l'index renvoie une erreur et find renvoie -1
print(str.count('i'))
Le résultat est :
4
connt est utilisé pour compter la fréquence de la chaîne cible
print(str.replace(',', ' ').split(' '))
Le résultat est :
['i', 'like', 'pomme', 'i', 'like', 'banane']
Ici, replace remplace les virgules par des espaces, puis utilise des espaces pour diviser la chaîne, juste assez pour extraire chaque mot.
En plus des méthodes conventionnelles, l'outil de traitement de caractères le plus puissant est celui des expressions régulières.
Expressions régulières
Avant d'utiliser des expressions régulières, nous devons comprendre les nombreuses méthodes des expressions régulières.
Permettez-moi d'examiner l'utilisation de la méthode suivante. Tout d'abord, comprenez la différence entre les méthodes de correspondance et de recherche
str = "Cats are smarter than dogs" pattern=re.compile(r'(.*) are (.*?) .*') result=re.match(pattern,str) for i in range(len(result.groups())+1): print(result.group(i))<.>Le résultat est :
Les chats
plus intelligents
pattern=re.compile(r'are (.*?) .*')
match alors aucun ne sera renvoyé, les résultats de recherche renvoyés sont :
plus intelligents
str = "138-9592-5592 # number" pattern=re.compile(r'#.*$') number=re.sub(pattern,'',str) print(number)Le résultat est :
print(re.sub(r'-*','',number))Le résultat est :
str = "138-9592-5592 # number" pattern=re.compile(r'5') print(pattern.findall(str))Le résultat est :
Fonction de chaîne vectorisée
Lors du nettoyage des données dispersées à analyser, il est souvent nécessaire de faire un travail de régularisation de chaîne .data = pd.Series({'li': '120@qq.com','wang':'5632@qq.com', 'chen': '8622@xinlang.com','zhao':np.nan,'sun':'5243@gmail.com'}) print(data)Le résultat est : Les données peuvent être préalablement traitées par certaines méthodes de régulation et intégration Par exemple, utilisez contain pour déterminer si chaque donnée contient le mot-clé
print(data.str.contains('@'))Le résultat est :
Vous pouvez également diviser la chaîne et extraire la chaîne requise
data = pd.Series({'li': '120@qq.com','wang':'5632@qq.com', 'chen': '8622@xinlang.com','zhao':np.nan,'sun':'5243@gmail.com'}) pattern=re.compile(r'(\d*)@([a-z]+)\.([a-z]{2,4})') result=data.str.match(pattern) #这里用fillall的方法也可以result=data.str.findall(pattern) print(result)
结果为:
chen [(8622, xinlang, com)]
li [(120, qq, com)]
sun [(5243, gmail, com)]
wang [(5632, qq, com)]
zhao NaN
dtype: object
此时加入我们需要提取邮箱前面的名称
print(result.str.get(0))
结果为:
或者需要邮箱所属的域名
print(result.str.get(1))
结果为:
当然也可以用切片的方式进行提取,不过提取的数据准确性不高
data = pd.Series({'li': '120@qq.com','wang':'5632@qq.com', 'chen': '8622@xinlang.com','zhao':np.nan,'sun':'5243@gmail.com'}) print(data.str[:6])
结果为:
最后我们了解下矢量化的字符串方法
更多Explication détaillée du traitement des chaînes dans la série de nettoyage de données Python相关文章请关注PHP中文网!