728x90
엘리스에서 제공하는 파이썬 실전 데이터 분석 강의 중
첫 번째 주제인 트럼프 대통령 트윗으로 시작하는 데이터 처리 리뷰 하겠습니다.
1. 주제
첫 번째 프로젝트에서는 트럼프 대통령이 2017년 1월 20일 취임 이후 1년 동안 게시한 2,500여 개의 트윗을 분석해봅니다.
- 가장 많이 사용한 #해시태그
- 가장 많이 사용한 키워드
- 가장 많이 사용한 @멘션
- 월별 트윗 통계
분석 후, 데이터의 유형에 알맞은 시각화 코드를 살펴봅니다.
- 막대그래프
- 단어 구름
2. 필자가 해야 하는 것
- preprocess_text(text) 함수 구현
- analyze_text(words) 함수 구현
- filter_by_month(tweet_data, month) 함수 구현
3. preprocess_text(text) 세부 구현 사항
- 목적 : 문자열 text를 가공하여 반환
- 모든 알파벳 대문자를 알파벳 소문자로 변경합니다.
- 특수문자를 삭제합니다.
- 가공된 텍스트를 공백을 기준으로 나누어 리스트 형태로 반환합니다.
# 데이터 전처리를 실행합니다.
def preprocess_text(text):
text = text.lower() # 소문자로 변형
# @와 #을 제외한 특수문자로 이루어진 문자열 symbols를 만듭니다.
symbols = punctuation.replace('@', '').replace('#', '')
for i in symbols: # @와 #을 제외한 특수문자 제거
text = text.replace(i, "")
return text.split() 공백을 기준으로 나눠 리스트 형태로 반환
- 실행 예시
print(preprocess_text('We will follow two simple rules: BUY AMERICAN & HIRE AMERICAN!#InaugurationDay #MAGA🇺🇸'))
- 결과
- 해시 탱크인 #과 멘션 태그인 @ 제외한 나머지 특수문자들을 삭제하고, 공백을 기준으로 나눠진 문자열이 소문자로 변환하여 리스트 형태로 저장되어 있는 것을 볼 수 있다.
4. analyze_text(words) 세부 구현 사항
- 목적 : 공백으로 나눠진 문자열 리스트를 조건에 맞게 처리
- 각각의 원소는 모두 keywords리스트에 저장하되, 단어가 @나 #로 시작한다면 첫 번째 글자는 제거하여 저장합니다. (예 : #tweet는 tweet의 값으로 저장한다.)
- # 문자로 시작하는 원소는 hashtags 리스트에, @문자로 시작하는 원소는 mentions 리스트에 각각 첫 번째 문자(#, @)를 제거하고 저장합니다.
- 함수는 keywords, hashtags, mentions를 반환해야 합니다.
- 반환 결과에서 첫 번째 리스트는 모든 키워드, 두 번째 리스트는 해쉬태그 키워드, 세 번째 리스트는 멘션 키워드를 갖고 있습니다.
def analyze_text(words):
# 키워드, 해시태그, 멘션을 저장할 리스트를 각각 생성합니다.
keywords, hashtags, mentions = [], [], []
for i in words: # 리스트의 원소를 하나씩 꺼낸다. (keywords list)
if i.startswith("#"): # 원소의 첫 문자가 # 이라면
keywords.append(i[1:]) # #제거 후 나머지 문자열 써준다
elif i.startswith("@"): # 원소의 첫 문자가 @ 이라면
keywords.append(i[1:])
else:
keywords.append(i)
for i in words: (hashtags, mentions list)
if i.startswith("#"):
hashtags.append(i[1:])
if i.startswith("@"):
mentions.append(i[1:])
return keywords, hashtags, mentions
- 실행 예시
print(analyze_text(preprocess_text('We will follow two simple rules: BUY AMERICAN & HIRE AMERICAN!#InaugurationDay #MAGA🇺🇸')))
- 결과
- startswith를 사용하여 맨 앞 글자가 그냥 문자열인지 "#"인지 "@"인지에 따라 다른 리스트에 저장하도록 구현했다.
5. filter_by_month(tweet_data, month) 세부 구현 사항
- 목적 : 트윗 데이터와 트윗이 작성된 월(정수)을 입력받아 해당 월에 게시된 트윗을 리스트에 저장한 후, 반환
def filter_by_month(tweet_data, month):
# month를 문자열로 바꾼 month_string을 선언합니다.
# 이 때 한 자리 수는 앞에 '0'을 넣어줍니다. (ex: 1 => '01')
month_string = '0' + str(month) if month < 10 else str(month)
filtered_tweets = []
# 선택한 달의 트윗을 filtered_tweets에 저장합니다.
for i in tweet_data:
if i[0][:2] == month_string:
filtered_tweets.append(i[1])
return filtered_tweets
- 실행 예시
print(filter_by_month([('01-19-2017 20:13:57', 'On my way! #Inauguration2017 https://t.co/hOuMbxGnpe'), ('02-01-2017 00:31:08', 'Getting ready to deliver a VERY IMPORTANT DECISION! 8:00 P.M.'), ('03-03-2017 02:27:29', '...intentional. This whole narrative is a way of saving face for Democrats losing an election that everyone thought they were supposed.....'), ('03-03-2017 02:35:33', '...to win. The Democrats are overplaying their hand. They lost the election and now they have lost their grip on reality. The real story...')],3))
- 결과
- 입력된 월에 맞는 트윗을 출력해준다.
6. 결과
![]() |
![]() |
※ 엘리스가 제공한 학습 자료, 콘텐츠의 저작권은 엘리스에 있습니다.
※ COPYRIGHT 2016-2022. ELICE ALL RIGHTS RESERVED.
'Data Projects > mini 데이터 분석 프로젝트' 카테고리의 다른 글
[데이터 분석 스터디/항공사 고객 만족도 예측] 항공사 고객 만족도 예측 보충 EDA + 전처리 + 학습 (0) | 2022.02.11 |
---|---|
[데이터 분석 스터디/항공사 고객 만족도 예측] 항공사 고객 만족도 예측 EDA (0) | 2022.02.08 |
[데이터 분석 스터디] 03 넷플릭스 시청 데이터로 알아보는 데이터형 변환 (0) | 2022.01.29 |
[데이터 분석 스터디] 02 영어 단어 모음으로 시작하는 텍스트 파일 분석 (0) | 2022.01.29 |
댓글