데이터 출처 : www.kaggle.com/kinguistics/election-day-tweets
Election Day Tweets
Tweets scraped from Twitter on November 8, 2016
www.kaggle.com
ipynb file : github.com/sangHa0411/DataScience/blob/main/US%20Election.ipynb
sangHa0411/DataScience
Contribute to sangHa0411/DataScience development by creating an account on GitHub.
github.com
Pandas를 이용해서 데이터를 불러오겠습니다.
데이터 구조를 확인해보겠습니다.
데이터 하나가 트위터에 대한 정보를 가지고 있습니다.
트위터 텍트스 그리고 작성 날짜 사용자 위치 등등의 정보가 있습니다.
먼저 트위터 작성 날짜에 대한 정보를 분석해보겠습니다.
작성 일자 및 시간에 따라서 히스토그램을 만들고자 합니다. 초에 대한 정보는 버리고 시 , 분에 대한 정보를 해당 시간에 작성된 트위터의 갯수를 파악합니다.
여기서 Xlabel을 모두 표기하면 Text가 겹쳐서 표기가 잘 되지 않으니 일정한 간격을 두고 정해진 index에서의 Xlabel 만을 표기합니다.
히스토그램을 살펴본 결과 해당 데이터는 2016 US 선거 날 당시의 트위터 정보를 가지고 있음을 확인할 수 있었습니다. 새벽 일찍에 트위터 갯수가 가장 많음을 확인할 수 있었고 점심 시간 그리고 저녁 시간 이렇게 3번 정도 트위터 갯수가 많은 구간이 있었습니다.
트위터 소스에 대한 데이터를 분석해보겠습니다.
아이폰에서 작성한 트위터가 가장 많았으며 그 다음 안드로이드 , 웹으로 작성한 트위터가 가장 많았습니다.
따라서 핸드폰 앱으로부터 작성된 트위터가 많은 비중을 차지했음을 알 수 있습니다.
트위터의 발생 위치에 대한 정보를 확인하겠습니다.
본래 데이터에서 사용자 위치에 대한 정보는 Null 데이터가 많아서 Type을 체크해야 합니다. 그리고 하나의 위치로 정해진 것이 아니라 사용자가 여러 위치를 정해서 트위터를 올릴 수 있기 때문에 나누어서 각각에 대해서 갯수를 셌습니다.
Key는 사용자 위치이고 Value는 트위터 갯수 입니다.
여기서 트위터 갯수에 따라서 내림차순으로 정렬합니다.
이제 상위 15개의 사용자 위치에 대한 정보를 시각화할 수 있습니다.
이제 정규표현식을 이용해서 트위터에 Text를 분석해볼려고 합니다.
위에서 예시 데이터를 보시면 알 수 있듯이 트위터는 Text 만이 존재하는 것이 아니라 @ , # 등의 특수문자가 사용되고 이 뒤에 단어가 붙음으로써 해시태그 등과 같은 특수 기능이 있습니다.
따라서 @ ,# 뒤에 적혀진 단어들과 해당 단어들의 갯수를 파악하고자 합니다.
re.findall(r'#\w+') , re.findall(r'@\w+') 등과 같은 정규 표현식을 사용함으로써 Text 안에서 #단어 및 @단어 들의 리스트를 구할 수 있습니다. 이 리스트 안에 있는 단어 각각에 대해서 언급된 횟수를 셉니다.
먼저 @단어들에 대해서 분석하겠습니다.
등장 획수를 기준으로 내림차순으로 정렬해서 저장합니다.
보면 각 2016 대선 후보인 도날드 트럼프와 힐러리 클린턴이 언급된 횟 수가 다른 @단어 에 비해서 압도적으로 많았았다는 것을 확인할 수 있습니다.
이제 #단어에 대해서 분석해보겠습니다. 위에서 한 방식과 동일하게 진행합니다.
#단어로는 #Election2016이 압도적으로 많은 것을 확인할 수 있습니다.
이제 저희는 각 @단어가 있는 트위터 혹은 #이 있는 트위터 데이터들을 모을 수 있습니다.
트위터들의 Text를 전처리하고 Word Cloud를 만듬으로써 Text 데이터 분석을 할 수 있습니다.
저는 @단어에서 많은 수를 차지하는 @realDonaldTrump , @HillaryClinton 2개가 언급된 트위터 정보를 모아서 Word Cloud를 만들어 볼려고 합니다.
먼저 정규 표현식을 이용해서 Text를 전처리하는 함수를 만듭니다.
정리하자면 아래의 과정대로 진행됩니다.
1) Election 데이터에서 text에 특정 단어 있는 트위터 정보를 모읍니다.
2) 추출된 트위터에서 @단어들의 리스트를 구합니다.
3) 입력인자로 받은 @mention이 위에서 2)에서 구한 @단어 리스트 안에 있으면 Text를 전처리합니다.
3) Text 전처리는 http와 @단어 , #단어 등을 제거하고 특수문자를 제거합니다. 그리고 제거하면서 생기는 공백의 크기가 2개 이상인 경우 1개로 조정합니다.
위의 함수를 이용해서 @realDonaldTrump 가 언급된 트위터를 전처리하고 Word Cloud를 만들어보겠습니다.
@realDonaldTrump 이 언급된 트위터를 전처리해서 저장된 리스트를 가져옵니다.
이를 이용해서 Word Cloud를 만든 결과가 위와 같습니다.
Democrat , will , vote , win 등의 단어가 가장 많이 나온 것을 확인할 수 있습니다.
어림 짐작해보면 Trump가 당선되기를 응원하는 트위터가 다수를 이루는 것으로 예상해볼 수 있습니다.
그리고 이는 Deep Learning에서 다룬 Twitter의 감정 분석 모델을 이용해서 검증을 할 수 있습니다. 이에 대해서는 Part2에서 다루도록 하겠습니다.
@HillaryClinton 이 언급된 트위터를 전처리해서 저장된 리스트를 가져옵니다.
Trump가 언급된 트위터를 분석할 때와 결과가 비슷한 것을 확인할 수 있습니다.
Part2에서는 앞서 말씀드린대로 Deep Learning에서 만든 트위터 감성 분석 모델을 이용해서 @realDonaldTrump , @HillaryClinton이 언급된 트위터에 부정 , 긍정 , 중립 감정 트위터의 비율이 각각 어떻게 되는지 확인해보겠습니다.
트위터 감성 분석 : electronicprogrammers.com/14
Deep Learning - 트위터 감정 분석하기 Part2
데이터 출처 : www.kaggle.com/cosmos98/twitter-and-reddit-sentimental-analysis-dataset?select=Twitter_Data.csv Twitter and Reddit Sentimental analysis Dataset Tweets and Comments extracted from Twitt..
electronicprogrammers.com
'Data Visualization' 카테고리의 다른 글
Data Visualization - Corona Case를 Matplotlib animation으로 그래프 그리기 (0) | 2020.10.10 |
---|---|
Data Visualization - US Corona 분석하기 Part2 (0) | 2020.10.10 |
Data Visualization - US Corona 분석하기 Part1 (0) | 2020.10.07 |
Data Visualization - Brexit 투표 결과 분석하기 Part2 (0) | 2020.10.07 |
Data Visualization - Brexit 투표 결과 분석하기 Part1 (0) | 2020.10.07 |