Maison >développement back-end >Tutoriel Python >Quel est le moyen le plus rapide de supprimer la ponctuation d'un DataFrame Pandas ?

Quel est le moyen le plus rapide de supprimer la ponctuation d'un DataFrame Pandas ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-19 06:45:03351parcourir

What is the Fastest Way to Remove Punctuation from a Pandas DataFrame?

Suppression rapide de la ponctuation avec Pandas

La suppression de la ponctuation est une tâche courante de nettoyage de texte. Bien que pandas str.replace soit une méthode largement utilisée, elle peut ne pas être suffisamment performante pour les grands ensembles de données.

Alternatives à str.replace :

  • regex.sub : Utilise le module re pour effectuer une substitution basée sur les regex. Cette option offre des performances améliorées par rapport à str.replace.
  • str.translate : Utilise la fonction str.translate implémentée en C, ce qui entraîne des améliorations significatives de la vitesse.

Benchmarks :

  • str.translate présente les meilleures performances, suivi de regex.sub puis de str.replace.
  • L'écart de performances se creuse avec l'augmentation taille de l'ensemble de données.

Considérations :

  • regex.sub et str.translate ne peuvent pas gérer les valeurs NaN dans le DataFrame.
  • str.translate nécessite un traitement spécial lorsque les données contiennent des caractères qui peuvent être exclus par l'exclusion de ponctuation par défaut.

Code :

import pandas as pd
import re

# Regex.sub
df['text'] = [re.compile(r'[^\w\s]+').sub('', x) for x in df['text'].tolist()]

# str.translate
punct = '!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~'
transtab = str.maketrans(dict.fromkeys(punct, ''))
df['text'] = '|'.join(df['text'].tolist()).translate(transtab).split('|')

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