250x250
Link
나의 GitHub Contribution 그래프
Loading data ...
Notice
Recent Posts
Recent Comments
관리 메뉴

Data Science LAB

[Python] 데이터 에듀 ADP 실기 모의고사 3회 3번 파이썬 ver. (비정형 데이터마이닝) 본문

adp 실기/기출문제

[Python] 데이터 에듀 ADP 실기 모의고사 3회 3번 파이썬 ver. (비정형 데이터마이닝)

ㅅ ㅜ ㅔ ㅇ 2022. 9. 7. 01:34
728x90

사용 데이터 : 공구 블로그 댓글.txt, 사전.txt

1. '공구 블로그 댓글.txt' 파일을 읽어 들여 숫자, 특수 문자 등을 제거하는 전처리 작업을 시행하시오.

import pandas as pd
import numpy as np

f = open('../data/공구 블로그 댓글.txt', 'r')
data = f.read()
data

 

 

 

import re
text = re.sub('[^A-Za-z가-힣\\s]',' ',data)
text

 

 

 

2. '사전.txt'를 사전에 추가하고 문서에서 형용사를 추출하라

f = open('../data/사전.txt', 'r')
dictionary = f.read()
dictionary

 

 

from konlpy.tag import *
hannanum = Hannanum()
kkma = Kkma()
komoran = Komoran()
okt = Okt()

hannanum.morphs(text)

 

 

 

# 부착되는 품사 태그의 기호와 의미 확인
okt.tagset

 

 

 

kkma.tagset

 

 

 

word = okt.pos(text)
word = pd.DataFrame(word, columns=['term', 'pos'])
word.head()

 

 

 

adj = []
for i in range(len(word)):
    if word['pos'][i] == 'Adjective':
        adj.append(word['term'][i])
    else:
        continue

adj

 

형용사만 데이터프레임에 추가

 

 

 

3. 2월에 게시된 댓글의 명사를 추출하고 빈도수를 시각화하시오.

import pandas as pd
df = pd.read_table('../data/공구 블로그 댓글.txt', sep='\t', engine='python', encoding='euc-kr')
df

 

 

 

df['Date'] = pd.to_datetime(df['Date'])
df = df[df['Date'].dt.month == 2]
df

 

 

 

content = df['Content'].values.astype('str')
text = ' '.join(s for s in content)
text

content를 하나의 텍스트(문단)으로 연결해줌

 

 

text = re.sub('[^A-Za-z가-힣\\s]',' ',text)
text

 

 

 

 

from collections import Counter
okt = Okt()
nouns = okt.nouns(text)
count_dict = Counter(nouns)

top10 = pd.DataFrame({'terms':count_dict.keys(), 'freq':count_dict.values()}).sort_values(by='freq', ascending=False).iloc[:10,]
top10 = top10.set_index('terms').sort_values(by='freq', ascending=False)
top10

명사를 추출하여 상위 10개의 단어만을 데이터프레임 형식으로 저장

 

 

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

#matplotlib 패키지 한글 폰트 설정 시작
plt.rcParams["font.family"] = 'Malgun Gothic'
plt.rcParams['figure.figsize'] = (10,6)
plt.rcParams['font.size'] = 16
plt.rcParams['axes.unicode_minus'] = False

fig, ax = plt.subplots(1,1)
plt.title("2월 댓글 빈출 명사")
top10.plot.bar(ax = ax,rot=45)
plt.show()

728x90
Comments