Python-구조화되지 않은 데이터 처리

이미 행과 열 형식으로 존재하거나 나중에 데이터베이스에 잘 맞도록 쉽게 행과 열로 변환 할 수있는 데이터를 구조화 된 데이터라고합니다. 예를 들면 CSV, TXT, XLS 파일 등이 있습니다. 이러한 파일에는 구분 기호가 있으며 구분 기호 사이에 누락 된 값이 공백으로 표시되는 고정 또는 가변 너비가 있습니다. 하지만 때때로 우리는 선이 고정 된 너비가 아니거나 HTML, 이미지 또는 pdf 파일 인 데이터를 얻습니다. 이러한 데이터를 비정형 데이터라고합니다. HTML 파일은 HTML 태그를 처리하여 처리 할 수 ​​있지만 Twitter의 피드 또는 뉴스 피드의 일반 텍스트 문서에는 구분 기호없이 처리 할 태그가 없습니다. 이러한 시나리오에서 우리는 파일을 처리하기 위해 다양한 파이썬 라이브러리의 다른 내장 함수를 사용합니다.

데이터 읽기

아래 예제에서 우리는 텍스트 파일을 가져와 그 안의 각 줄을 구분하는 파일을 읽습니다. 다음으로 출력을 추가 줄과 단어로 나눌 수 있습니다. 원본 파일은 파이썬 언어를 설명하는 일부 단락이 포함 된 텍스트 파일입니다.

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

위 코드를 실행하면 다음과 같은 결과가 나옵니다.

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.

단어 빈도 계산

다음과 같이 카운터 기능을 사용하여 파일에서 단어의 빈도를 계산할 수 있습니다.

from collections import Counter

with open(r'pathinput2.txt') as f:
               p = Counter(f.read().split())
               print(p)

위 코드를 실행하면 다음과 같은 결과가 나옵니다.

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})