본문 바로가기
Life/일상 생존기

지인 부탁으로 해보는 파이썬 - 1

by GameStudy 2024. 3. 5.

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

댓글