Logo Zéphyrnet

Comment extraire des données tabulaires à partir de fichiers Doc à l'aide de Python ?

Date :

Cet article a été publié dans le cadre du Blogathon sur la science des données

Introduction

Les données sont présentes partout. Toute action que nous effectuons génère l'une ou l'autre forme de données. Mais ces données peuvent ne pas être présentes sous une forme structurée. Un débutant commençant par le champ de données est souvent formé pour les ensembles de données dans des formats standard tels que CSV, TSV ou certains fichiers texte. Les fichiers CSV sont les fichiers les plus préférés car ils peuvent être chargés dans une base de données pandas et manipulés plus facilement. Les fichiers texte peuvent être chargés à l'aide de modules de gestion de fichiers Python naïfs.

Mais dans le monde réel, n'importe quel type de document peut contenir les données nécessaires à l'analyse. Alors que je postulais pour un stage en entreprise, ma mission consistait à tirer une analyse des données présentes dans le fichier Doc. Dans cet article, j'expliquerai le processus ETL pour un fichier Doc, la différence entre les extensions Doc et Docx, la conversion de Doc en Docx, et à la fin, je vous montrerai comment j'ai créé des tracés interactifs à partir de ces données.

Extraire les données tabulaires du document
Image de l'auteur, Made in Canva

Différence entre Doc et Docx

En traitant des fichiers doc, vous rencontrerez ces deux extensions : '.doc' et '.docx'. Les deux extensions sont utilisées pour les documents Microsoft Word qui peuvent être créés à l'aide de Microsoft Word ou de tout autre outil de traitement de texte. La différence réside dans le fait que jusqu'en 2007, l'extension « doc » était largement utilisée.

Après cette version, Microsoft a introduit une nouvelle extension, "Docx", qui est un document au format Microsft Word Open XML. Cette extension permettait aux fichiers d'être plus petits, faciles à stocker et moins corrompus. Cela a également ouvert les portes à des outils en ligne comme Google Sheets qui peuvent facilement gérer ces fichiers Docx.

Conversion de Doc en Docx en Python

Aujourd'hui, tous les fichiers sont créés par défaut avec l'extension Docx mais il existe encore de nombreux anciens fichiers avec l'extension Doc. Un fichier Docx est une meilleure solution pour stocker et partager des données, mais nous ne pouvons pas négliger les données stockées dans des fichiers Doc. Cela pourrait être d'une grande valeur. Par conséquent, pour récupérer des données à partir de fichiers Doc, nous devons convertir le fichier Doc au format Docx. Selon la plate-forme, Windows ou Linux, nous avons différentes manières pour cette conversion.

Pour Windows

Manuellement, pour qu'un fichier word soit enregistré en Docx, il vous suffit d'enregistrer le fichier avec l'extension ".docx"

conversion doc en docx

Nous allons effectuer cette tâche en utilisant Python. Le Component Object Model (COM) de Windows permet aux applications Windows d'être contrôlées par d'autres applications. pywin32 est le module wrapper Python qui peut interagir avec ce COM et automatiser toute application Windows utilisant Python. Par conséquent, le code d'implémentation ressemble à ceci :

à partir du client d'importation win32com en tant que wc w = wc.Dispatch('Word.Application') doc = w.Documents.Open("file_name.doc") doc.SaveAs("file_name.docx", 16)

Répartition du code :

  1. Tout d'abord, nous importons le client à partir du package win32com qui est un module préinstallé lors de l'installation de Python.
  2. Ensuite, nous créons un objet Dispatch pour l'application Word.
  3. Ensuite, nous ouvrons ce document et l'enregistrons avec l'extension Docx.

Pour Linux

Nous pouvons directement utiliser le convertisseur intégré LibreOffice :

lowriter --convert-to docx testdoc.doc

Lire des fichiers Docx en Python

Python a un module pour lire et manipuler les fichiers Docx. Il s'appelle "python-docx". Ici, toutes les fonctions essentielles ont déjà été implémentées. Vous pouvez installer ce module via pip :

pip installer python-docx

Je n'entrerai pas dans les détails de la structure d'un document Docx, mais à un niveau abstrait, il comporte 3 parties : les objets Run, Paragraph et Document. Pour ce tutoriel, nous traiterons des objets paragraphe et Document. Avant de passer à l'implémentation réelle du code, voyons les données qui seront extraites :

extraction de données | Extraire le document de données tabulaires

Données dans le nouveau fichier Docx

Le nouveau fichier Docx contient le niveau de glucose d'un patient après plusieurs intervalles. Chaque ligne de données a un identifiant, un horodatage, un type et une lecture de niveau de glucose. Pour préserver l'anonymat, j'ai effacé le nom du patient. Procédure pour extraire ces données :

1. Importez le module

importer docx

2. Créez un objet de document de fichier Docx et transmettez le chemin d'accès au fichier Docx.

Texte = docx.Document('nom_fichier.docx')

3. Créez un dictionnaire de données vide

données = {}

4. Créez un objet paragraphe à partir de l'objet document. Cet objet peut accéder à tous les paragraphes du document

paragraphes = Texte.paragraphes

5. Maintenant, nous allons parcourir tous les paragraphes, accéder au texte et les enregistrer dans un dictionnaire de données

for i in range(2, len(Text.paragraphs)): data[i] = tuple(Text.paragraphs[i].text.split('t'))

Ici, j'ai dû diviser le texte en "t" comme si vous regardiez l'une des lignes, elle avait le séparateur de tabulation.

6. Accéder aux valeurs du dictionnaire

data_values ​​= liste(data.values())

Maintenant, ces valeurs sont transformées en liste et nous pouvons les transmettre dans une base de données pandas. Selon mon cas d'utilisation, j'ai dû suivre quelques étapes supplémentaires telles que la suppression des colonnes inutiles et la conversion de l'horodatage. Voici la trame de données pandas finale que j'ai obtenue du fichier Doc initial :

données | Extraire le document de données tabulaires

Il y a beaucoup de choses qui peuvent être faites en utilisant le module python-docx. Outre le chargement du fichier, on peut créer un fichier Docx à l'aide de ce module. Vous pouvez ajouter des titres, des paragraphes, mettre du texte en gras, en italique, ajouter des images, des tableaux et bien plus encore ! Voici le lien vers le documentation complète du module.

Étape bonus : tracer avec Plotly

L'objectif principal de cet article était de vous montrer comment extraire des données tabulaires d'un fichier doc dans une base de données pandas. Terminons le cycle ELT et transformons ces données en belles visualisations en utilisant le Plotly bibliothèque! Si vous ne le savez pas, Plotly est une bibliothèque de visualisation étonnante qui aide à créer des tracés interactifs.

Ces parcelles ne nécessitent pas beaucoup d'efforts car la plupart des choses peuvent être personnalisées. Il existe de nombreux articles sur Analytics Vidhya décrivant l'utilisation de cette bibliothèque. Pour mon cas d'utilisation, voici la configuration de l'intrigue :

importez plotly.graph_objects comme go fig = go.Figure() fig.add_trace(go.Scatter(x=doc_data.index, y=doc_data['Historic Glucose (mg/dL)'].rolling(5).mean() , mode='lines', marker=dict( size=20, line_width=2, colorscale='Rainbow', showscale=True, ), name = 'Historic Glucose (mg/dL)' )) fig.update_layout(xaxis_tickangle= -45, font=dict(size=15), yaxis={'visible' : True}, xaxis_title='Dates', yaxis_title='Glucose', template='plotly_dark', title='Glucose Level Over Time' ) fig .update_layout(hovermode="x")

parcelle
Image par auteur

Conclusion

Dans cet article, j'ai expliqué ce que sont les fichiers doc, la différence entre les extensions de fichiers Doc et Docx, la conversion des fichiers Doc en fichiers Docx, le chargement et la manipulation des fichiers Docx, et enfin comment charger ces données tabulaires dans une dataframe pandas.

Si vous voulez lire/explorer chacun de mes articles, rendez-vous sur mon liste des articles principaux qui est mis à jour chaque fois que je publie un nouvel article sur n'importe quelle plateforme !

Pour des doutes, des questions ou des opportunités potentielles, vous pouvez me contacter via :

1. Linkedin — dans / kaustubh-gupta /

2. Twitter — @ Kaustubh1828

3. GitHub — kaustubhgupta

4. Moyen — @ kaustubhgupta1828

Les médias présentés dans cet article sur Interactive Dashboard utilisant Bokeh n'appartiennent pas à Analytics Vidhya et sont utilisés à la discrétion de l'auteur.

PlatonAi. Web3 réinventé. L'intelligence des données amplifiée.
Cliquez ici pour y accéder.

Source : https://www.analyticsvidhya.com/blog/2021/09/how-to-extract-tabular-data-from-doc-files-using-python/

spot_img

Dernières informations

spot_img

Discutez avec nous

Salut! Comment puis-je t'aider?