0. 지인이 간단한 데이터 분석을 부탁해서 파이썬을 오랜만에 켜보았다.
대학생때 학부 연구실 했던 때 이후로 정말 오랜만..ㅎ
1. 파이썬과 Visual Studio Code 설치
[유튜브링크]
Visual Studio Code 설치 하실 때 아래 그림처럼 다 체크 필요합니다.
2. 시작 > PowerShell 우클릭 > 관리자로 실행 > "pip install --upgrade pip"
3. Java, JPype, KoNPLy 설치
[설치설명링크]
4. 시작 > PowerShell 우클릭 > 관리자로 실행 > "pip install numpy", "pip install pandas"
5. 엑셀 파일 > 다른 이름으로 저장 > txt 파일로 저장
6. txt 파일 > 다른 이름으로 저장 > 우하단 인코딩을 UTF-8로 지정 후 저장
7. Visual Studio Code > main.py 파일 생성 후 아래 코드 작성. 우상단 세모 버튼 클릭.
<hide/>
#이 코드를 실행하기 전, 분석하고자 하는 엑셀파일이 txt 파일로 변환되어 있어야 합니다.
#변환된 파일이름은 testfile.txt이어야 합니다.(변경하셔도 됩니다.)
#파일을 읽어들이는 코드입니다. 이 파일은 제목 + 상담내용 모두 들어있습니다.
original_file = open("testfile.txt",'rt',encoding='utf-8')
customer_complaints = original_file.readlines()
original_sentences = []
for line_number in range(len(customer_complaints)):
original_sentences.append(customer_complaints[line_number])
original_file.close()
#print(original_sentences)
#중간점검입니다. 여기까지만 적으시고, 위 print() 함수 앞 #을 지우고 실행해보세요.
#잘 나온다면 다시 print() 함수 앞 #을 붙혀서 주석처리 후 아래 내용 진행하시면 됩니다.
#읽은 파일 속 불필요한 기호(띄어쓰기나 특수문자, ...)를 모두 제거하고, 한글만 남겨주는 코드입니다.
import re
compile = re.compile("[^ ㄱ-ㅣ가-힣]+")
for sentence_number in range(len(original_sentences)):
original_sentences[sentence_number] = compile.sub("", original_sentences[sentence_number])
filtered_worlds = ["제", "분", "롯데리아", "문의", "것", "점", "확인", "말", "시", "저",
"때", "일", "안", "수", "더", "이", "후", "좀", "좆", "씨발", "거", "왜", "개"]
#문장 중에서 의미 없는 문장들을 제거합니다.
processed_sentences = []
for original_sentence in original_sentences:
if (original_sentence not in filtered_worlds):
processed_sentences.append(original_sentence)
#print(processed_sentences)
#중간점검입니다. 여기까지만 적으시고, 위 print() 함수 앞 #을 지우고 실행해보세요.
#잘 나온다면 다시 print() 함수 앞 #을 붙혀서 주석처리 후 아래 내용 진행하시면 됩니다.
#한글에서 명사만 추출하고, 추출된 명사들에서 사용하지 않을 단어를 제거 합니다.
from konlpy.tag import Okt
okt = Okt()
lines_of_nouns = []
for processed_sentence in processed_sentences:
lines_of_nouns.append(okt.nouns(processed_sentence))
original_nouns = []
for line_of_nouns in lines_of_nouns:
for noun in line_of_nouns:
original_nouns.append(noun)
processed_nouns = []
for original_noun in original_nouns:
if (original_noun not in filtered_worlds):
processed_nouns.append(original_noun)
#print(processed_nouns)
#중간점검입니다. 여기까지만 적으시고, 위 print() 함수 앞 #을 지우고 실행해보세요.
#잘 나온다면 다시 print() 함수 앞 #을 붙혀서 주석처리 후 아래 내용 진행하시면 됩니다.
#가장 높은 빈도수의 단어들을 보여줍니다.
import pandas as pd
top_20_nouns = pd.Series(processed_nouns).value_counts().head(20)
print("\n")
print("가장 자주 등장한 단어[제목 + 상담내용]")
print(top_20_nouns)
#중간점검입니다. 여기까지만 적으시고 실행해보세요. 잘 나온다면 다시 아래 내용 진행하시면 됩니다.
print("..... 분석중 .....")
#상담 내용만 따로 떼서 새로운 파일에 저장합니다.
except_title_file = pd.read_csv('testfile.csv', names=["상담 내용"])
except_title_file.to_csv('OnlyContentsExceptTitles.txt', index=False, encoding='utf-8-sig')
#중간점검입니다. 여기까지만 적으시고 실행해보세요.
#main.py가 있는 폴더로 가시면 OnlyContentsExceptTitles.txt가 있습니다. 열어서 확인 해봅시다.
#정상적으로 파일이 생성되었다면 아래 내용 진행하시면 됩니다.
#아래 내용은 지금까지 해온 내용의 반복입니다!
#파일을 읽어들이는 코드입니다. 이 파일은 상담내용만 모두 들어있습니다.
original_file = open("OnlyContentsExceptTitles.txt",'rt',encoding='utf-8')
customer_complaints = original_file.readlines()
original_sentences = []
for line_number in range(len(customer_complaints)):
original_sentences.append(customer_complaints[line_number])
original_file.close()
#읽은 파일 속 불필요한 기호(띄어쓰기나 특수문자, ...)를 모두 제거하고, 한글만 남겨주는 코드입니다.
import re
compile = re.compile("[^ ㄱ-ㅣ가-힣]+")
for sentence_number in range(len(original_sentences)):
original_sentences[sentence_number] = compile.sub("", original_sentences[sentence_number])
#문장 중에서 의미 없는 문장들을 제거합니다.
filtered_worlds = ["제", "분", "롯데리아", "문의", "것", "점", "확인", "말", "시", "저",
"때", "일", "안", "수", "더", "이", "후", "좀", "좆", "씨발", "거", "왜", "개"]
processed_sentences = []
for original_sentence in original_sentences:
if (original_sentence not in filtered_worlds):
processed_sentences.append(original_sentence)
#한글에서 명사만 추출하고, 추출된 명사들에서 사용하지 않을 단어를 제거 합니다.
from konlpy.tag import Okt
okt = Okt()
lines_of_nouns = []
for processed_sentence in processed_sentences:
lines_of_nouns.append(okt.nouns(processed_sentence))
original_nouns = []
for line_of_nouns in lines_of_nouns:
for noun in line_of_nouns:
original_nouns.append(noun)
processed_nouns = []
for original_noun in original_nouns:
if (original_noun not in filtered_worlds):
processed_nouns.append(original_noun)
#가장 높은 빈도수의 단어들을 보여줍니다.
import pandas as pd
top_20_nouns = pd.Series(processed_nouns).value_counts().head(20)
print("\n")
print("가장 자주 등장한 단어[상담내용]")
print(top_20_nouns)
print("..... 분석 끝 .....")
8. 위 코드를 실행시킨 결과입니다.
'Life > 일상 생존기' 카테고리의 다른 글
지인 부탁으로 해보는 파이썬 - 2 (0) | 2024.03.06 |
---|---|
LH 전세임대주택 재계약 하기 (0) | 2023.04.21 |
P Vs. NP (0) | 2022.04.15 |
중고나라 사기 당하고 인생 수업 받기 (0) | 2022.01.27 |
Who am I (0) | 2021.01.21 |
댓글