数据提取与可视化:从Doc文件到交互式图表

在数据科学领域,经常需要处理各种格式的数据。对于初学者来说,通常接触的是CSV、TSV等标准格式的数据集。这些文件因其结构化的特性,可以轻松地被加载到Pandas数据框中进行操作。然而,在现实世界中,需要分析的数据可能存储在任何类型的文档中。例如,在申请实习职位时,任务就是从Word文档中提取数据进行分析。本文将详细介绍如何对Word文档进行ETL(提取、转换、加载)处理,包括Doc和Docx文件格式的区别、Doc文件转换为Docx的方法,以及如何利用这些数据创建交互式图表。

在处理Word文档时,会遇到两种文件扩展名:'.doc'和'.docx'。这两种扩展名都用于Microsoft Word文档,但它们之间存在一些差异。在Word 2007之前,'.doc'扩展名被广泛使用。2007年之后,Microsoft引入了新的'.docx'扩展名,这是一种基于XML的文件格式,它使得文件体积更小、更易于存储,并且减少了文件损坏的风险。此外,'.docx'格式也支持在线工具如Google文档的编辑和管理。

尽管现在大多数文件默认以'.docx'格式创建,但仍有许多旧文件使用'.doc'扩展名。为了从这些旧文件中提取数据,需要将它们转换为'.docx'格式。这一转换过程在不同的操作系统上有所不同。

对于Windows系统,可以使用Python的pywin32模块来实现这一转换。以下是转换代码的示例:

from win32com import client as wc w = wc.Dispatch('Word.Application') doc = w.Documents.Open("file_name.doc") doc.SaveAs("file_name.docx", 16)

这段代码首先导入了win32com模块,然后创建了一个Word应用程序的Dispatch对象,打开指定的文档,并将其保存为'.docx'格式。

对于Linux系统,可以直接使用LibreOffice的内置转换工具:

lowriter --convert-to docx testdoc.doc

这条命令将'.doc'文件转换为'.docx'格式。

Python提供了一个名为'python-docx'的模块,用于读取和操作Docx文件。这个模块已经实现了所有基本功能,可以通过pip安装:

pip install python-docx

Docx文件在抽象层面上由三部分组成:Run、Paragraph和Document对象。在本教程中,将主要处理Paragraph和Document对象。以下是从Docx文件中提取数据的步骤:

  1. 导入模块
  2. import docx
  3. 创建一个Docx文件文档对象,并传递文件路径
  4. Text = docx.Document('file_name.docx')
  5. 创建一个空的数据字典
  6. data = {}
  7. 从文档对象创建一个段落对象,该对象可以访问文档的所有段落
  8. paragraphs = Text.paragraphs
  9. 遍历所有段落,访问文本,并将其保存到数据字典中
  10. for i in range(2, len(Text.paragraphs)): data[i] = tuple(Text.paragraphs[i].text.split('t'))
  11. 访问字典的值
  12. data_values = list(data.values())
import plotly.graph_objects as 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")
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485