Débarrassez-vous des données sales avec Python et les expressions régulières

Préface

Je fais généralement du prétraitement des données. La plupart des données fonctionnent bien si vous pouvez les lire avec des pandas, mais vous pouvez rencontrer des données illisibles, alors gardez une trace de votre combat avec eux.

Quel genre de données

--Le délimiteur est une virgule "," et chaque donnée est placée entre guillemets "" ". --Un code de saut de ligne est inclus dans les données (entre "et").

↓ Si vous le comparez comme ça

"a","b"
"1","Ho\n""
"2","Fu,Ou'"

Objectifs

--Créez un fichier csv qui peut être lu par read.csv () de pandas, qui est une bibliothèque Python. ――Comme il s'agit de la première partie du prétraitement, je souhaite en faire un DataFrame pour le traitement ultérieur.

↓ En d'autres termes, je souhaite créer ce type de DataFrame.

a b
1 Hoke"
2 Fu,'Ou'

Exemple d'échec

Essayez de lire comme avec les pandas

import pandas as pd

df = pd.read_csv('hoge.csv')
print(df)

résultat

a b
1 Ho\n"\n2" Fu,Ou'

Manière réussie

scénario

import re
import pandas as pd

#Lire sous forme de texte
with open('hoge.csv', 'r') as f:
    text = f.read()

tmp_text = re.sub('([^"])\n([^"])', r'\1\2', text) #Code de saut de ligne au milieu des données(\n)Se débarrasser de
tmp_text = re.sub('","', '\t', tmp_text)           #Convertir les délimiteurs en onglets
tmp_text = re.sub('(^"|"$)', '', tmp_text)         #Supprimez les premier et dernier guillemets du fichier
tmp_text = re.sub('"\n"', '\n', tmp_text)          #Supprimer la citation au milieu

#Cracher une fois dans un fichier
with open('data.csv', 'w') as f:
    f.write(tmp_text)

#Confirmer
df = pd.read_csv('data.csv', sep='\t')
print(df)

production


   a     b
0 1"
1 2,Ou'

Je lis.

Fichier

Le contenu du fichier ressemble à ceci

data.csv


a	b
1"
2 Fu,Ou'

Préoccupations

Si les données contenaient \ t, ce code ne fonctionnerait bien sûr pas. La même chose s'applique lorsque le code de saut de ligne est différent. Vous devez vérifier quels caractères sont inclus et comment les remplacer. → Créer une méthode de contrôle et paramétrer les délimiteurs?

Je le ferai quand j'en aurai envie. Si vous le traitez sur jupyter, vous pouvez facilement vérifier les données et changer la source, donc cela peut ne pas être nécessaire ...?

Conclusion

Si vous le lisez avec des pandas, il est déjà là. Il devrait être utilisable non seulement pour les pandas, mais également avant d'être mangé par les outils de BI.

** Les expressions régulières sont pratiques! !! ** **

Recommended Posts

Débarrassez-vous des données sales avec Python et les expressions régulières
[Python] Débarrassez-vous de la datation avec des expressions régulières
Obtenez des données Youtube avec python
À propos de Python et des expressions régulières
Obtenez une grande quantité de données Twitter de Starba avec python et essayez l'analyse de données Partie 1
[Python] Obtenez des données économiques avec DataReader
Exemple d'analyse HTTP GET et JSON avec Pepper Python
Coexistence de Python2 et 3 avec CircleCI (1.0)
Gestion des expressions régulières par PHP / Python
Obtenez des données supplémentaires vers LDAP avec python (Writer et Reader)
Obtenez des données de VPS MySQL avec Python 3 et SQL Alchemy
Chevauchement d'expressions régulières en Python et Java
Obtenez des données supplémentaires vers LDAP avec python
Construction de pipeline de données avec Python et Luigi
[Note] Obtenir des données de PostgreSQL avec Python
Remplacer non-ASCII par des expressions régulières en Python
Recommandation d'Altair! Visualisation des données avec Python
Python: analyse morphologique simplifiée avec des expressions régulières
Débarrassez-vous des images DICOM en Python
[Python] Expressions régulières Expressions régulières
J'ai 0 ans d'expérience en programmation et je défie le traitement des données avec python
Obtenez des visites d'articles et des likes avec l'API Qiita + Python
Obtenez des images de la carte OpenStreetMap et de l'Institut géographique avec Python + staticmap
Obtenez et estimez la forme de la tête en utilisant Dlib et OpenCV avec python
Distinguer les chiffres et les lettres avec des expressions régulières
J'ai essayé d'obtenir des données CloudWatch avec Python
Obtenez le nom de la branche git et le nom de la balise avec python
Implémentation de l'arbre TRIE avec Python et LOUDS
Obtenez des informations sur le processeur de Raspberry Pi avec Python
J'ai essayé d'obtenir et d'analyser les données statistiques de la nouvelle Corona avec Python: données de l'Université John's Hopkins
Obtenez l'objet et le corps de Gmail avec Python et l'API Gmail
Poursuite du développement multi-plateforme avec Electron et Python
Exemple de lecture et d'écriture de CSV avec Python
J'ai comparé la vitesse des expressions régulières en Ruby, Python et Perl (version 2013)
Obtenez le cours de l'action d'une entreprise japonaise avec Python et faites un graphique
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Obtenez date avec python
Analyse de données avec Python
Obtenez des images et des vidéos de la chronologie des médias avec Python + Tweepy
Traitement pleine largeur et demi-largeur des données CSV en Python
Liste des bibliothèques Python pour les data scientists et les data ingénieurs
Obtenez des données financières avec python (puis un peu de bricolage)
Téléchargez facilement et partiellement mp4 avec python et youtube-dl!
Visualisez la gamme d'insertions internes et externes avec python
Défiez l'analyse des composants principaux des données textuelles avec Python
Obtenez des commentaires sur youtube Live avec [python] et [pytchat]!
Obtenez des commentaires et des abonnés avec l'API de données YouTube
Recevoir des e-mails de Gmail et étiqueter avec Python3
Étudiez l'échange de données Java et Python avec Apache Arrow
Obtenez l'état de fonctionnement de JR West avec Python
[Python] Obtenez des informations sur les utilisateurs et des articles sur l'API de Qiita
Obtenez une compréhension abstraite des modules et des packages Python
[Bases de la science des données] Collecte de données depuis RSS avec python
Obtenir des données de la base de données via ODBC avec Python (Access)
Comparaison de CoffeeScript avec la grammaire JavaScript, Python et Ruby
Gestion des versions de Node, Ruby et Python avec anyenv
[CGI] Exécutez le programme Python du serveur avec Vue.js + axios et obtenez les données de sortie
Obtenez le code du pays avec python
Exemple de données créées avec python
Programmation avec Python et Tkinter