Python: procesamiento de datos no estructurados
Los datos que ya están presentes en un formato de fila y columna o que se pueden convertir fácilmente en filas y columnas para que luego puedan caber bien en una base de datos se conocen como datos estructurados. Algunos ejemplos son archivos CSV, TXT, XLS, etc. Estos archivos tienen un delimitador y un ancho fijo o variable donde los valores faltantes se representan como espacios en blanco entre los delimitadores. Pero a veces obtenemos datos donde las líneas no tienen un ancho fijo, o son solo archivos HTML, de imagen o pdf. Estos datos se conocen como datos no estructurados. Si bien el archivo HTML se puede manejar procesando las etiquetas HTML, una fuente de Twitter o un documento de texto sin formato de una fuente de noticias, sin tener un delimitador, no tiene etiquetas para manejar. En tal escenario, usamos diferentes funciones integradas de varias bibliotecas de Python para procesar el archivo.
Leer datos
En el siguiente ejemplo, tomamos un archivo de texto y leemos el archivo separando cada una de las líneas que contiene. A continuación, podemos dividir la salida en más líneas y palabras. El archivo original es un archivo de texto que contiene algunos párrafos que describen el lenguaje Python.
filename = 'path\input.txt'
with open(filename) as fn:
# Read each line
ln = fn.readline()
# Keep count of lines
lncnt = 1
while ln:
print("Line {}: {}".format(lncnt, ln.strip()))
ln = fn.readline()
lncnt += 1
Cuando ejecutamos el código anterior, produce el siguiente resultado.
Line 1: Python is an interpreted high-level programming language for general-purpose programming. Created by Guido van Rossum and first released in 1991, Python has a design philosophy that emphasizes code readability, notably using significant whitespace. It provides constructs that enable clear programming on both small and large scales.
Line 2: Python features a dynamic type system and automatic memory management. It supports multiple programming paradigms, including object-oriented, imperative, functional and procedural, and has a large and comprehensive standard library.
Line 3: Python interpreters are available for many operating systems. CPython, the reference implementation of Python, is open source software and has a community-based development model, as do nearly all of its variant implementations. CPython is managed by the non-profit Python Software Foundation.
Contando la frecuencia de palabras
Podemos contar la frecuencia de las palabras en el archivo usando la función de contador de la siguiente manera.
from collections import Counter
with open(r'pathinput2.txt') as f:
p = Counter(f.read().split())
print(p)
Cuando ejecutamos el código anterior, produce el siguiente resultado.
Counter({'and': 3, 'Python': 3, 'that': 2, 'a': 2, 'programming': 2, 'code': 1, '1991,': 1, 'is': 1, 'programming.': 1, 'dynamic': 1, 'an': 1, 'design': 1, 'in': 1, 'high-level': 1, 'management.': 1, 'features': 1, 'readability,': 1, 'van': 1, 'both': 1, 'for': 1, 'Rossum': 1, 'system': 1, 'provides': 1, 'memory': 1, 'has': 1, 'type': 1, 'enable': 1, 'Created': 1, 'philosophy': 1, 'constructs': 1, 'emphasizes': 1, 'general-purpose': 1, 'notably': 1, 'released': 1, 'significant': 1, 'Guido': 1, 'using': 1, 'interpreted': 1, 'by': 1, 'on': 1, 'language': 1, 'whitespace.': 1, 'clear': 1, 'It': 1, 'large': 1, 'small': 1, 'automatic': 1, 'scales.': 1, 'first': 1})