Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- loop 문
- 막대그래프
- 회귀분석
- Sum
- Intersect
- 순위출력
- difftime
- 히스토그램 그리기
- 그래프 생성 문법
- max
- 빅데이터분석
- 총과 카드만들기
- 여러 데이터 검색
- 팀스파르타
- 단순회귀 분석
- 상관관계
- Dense_Rank
- merge
- if문 작성법
- 회귀분석 알고리즘
- 불순도제거
- 데이터분석가
- sql
- 정보획득량
- %in%
- count
- 그래프시각화
- 데이터분석
- 빅데이터
- sqld
Archives
- Today
- Total
ch0nny_log
[빅데이터분석] Python_42. 데이터 시각화 1. (언급량 분석) 본문
특정 키워드가 많이 발생한 시기가 언제 인지
트랜드 분석 하기 위해서 언급량 분석 시각화가 필요함
※ 언급량 분석 실습
1. 중앙일보에서 인공지능으로 모은 데이터를 c://data 에 넣기
2. 언급량 분석 시각화를 위해 필요한 모듈을 불러오기import pandas as pd import matplotlib.pyplot as plt from collections import Counter # 텍스트 데이터에서 단어를 카운트하는 모듈 # 텍스트 파일 열기 (with 절을 써서 열면 파이썬이 알아서 파일을 닫습니다.) with open("c:\\data\\joongang.txt", "r", encoding="utf-8") as file: text = file.read() # 텍스트를 엔터로 분리합니다. lines = text.split('\n') # Couter 모듈을 객체화 합니다. date_counts = Counter() current_date = None # 2024년으로 시작하는 라인만 추출(기사 날짜와 제목을 추출) for line in lines: if line.startswith('2024-'): current_date = line[:10] # 날짜만 추출 if current_date and '인공지능' in line: # 현재 날짜이면서 인공지능을 포함하기 #print( line.count('인공지능')) date_counts[current_date] += line.count('인공지능') #print(date_counts) # {'2024-08-13': 19, '2024-08-14': 12, '2024-08-12': 4} # 판다스 데이터 프레임으로 구성 df = pd.DataFrame(list(date_counts.items()), columns=['date','count']) # 날짜를 datetime 형식으로 변환 df['date'] = pd.to_datetime(df['date']) df
3. 시각화 하기# 시각화 import matplotlib.pyplot as plt from matplotlib import font_manager, rc # 한글 폰트 깨지지 않게 # 한글 폰트 설정 plt.rcParams['font.family'] = 'Malgun Gothic' # 시각화 하기 plt.figure(figsize=(10,6) ) # 가로 10, 세로 6으로 그래프 사이즈 설정 plt.plot( df['date'], df['count'], marker='o', color='b') plt.fill_between(df['date'], df['count'], color="gray", alpha=0.3) plt.title('날짜별 인공지능 언급량') plt.xlabel('날짜') plt.ylabel('언급량') plt.grid(True) plt.xticks(rotation=45) plt.show()
4. 오늘 기준 중앙일보에서 '인공지능' 웹 스크롤링 후 시각화 하기
chj.ja('인공지능',20)
5. 피크값의 날짜를 가져오게 코드 수정하기import pandas as pd import matplotlib.pyplot as plt from collections import Counter # 텍스트 데이터에서 단어를 카운트하는 모듈 # 텍스트 파일 열기 (with 절을 써서 열면 파이썬이 알아서 파일을 닫습니다.) with open("c:\\data\\joongang.txt", "r", encoding="utf-8") as file: text = file.read() # 텍스트를 엔터로 분리합니다. lines = text.split('\n') # Couter 모듈을 객체화 합니다. date_counts = Counter() current_date = None # 2024년으로 시작하는 라인만 추출(기사 날짜와 제목을 추출) for line in lines: if line.startswith('2024-'): current_date = line[:10] # 날짜만 추출 if current_date and '인공지능' in line: # 현재 날짜이면서 인공지능을 포함하기 #print( line.count('인공지능')) date_counts[current_date] += line.count('인공지능') #print(date_counts) # {'2024-08-13': 19, '2024-08-14': 12, '2024-08-12': 4} # 판다스 데이터 프레임으로 구성 df = pd.DataFrame(list(date_counts.items()), columns=['date','count']) # 날짜를 datetime 형식으로 변환 df['date'] = pd.to_datetime(df['date']) # 시각화 import matplotlib.pyplot as plt from matplotlib import font_manager, rc # 한글 폰트 깨지지 않게 # 한글 폰트 설정 plt.rcParams['font.family'] = 'Malgun Gothic' # 시각화 하기 plt.figure(figsize=(10,6) ) # 가로 10, 세로 6으로 그래프 사이즈 설정 plt.plot( df['date'], df['count'], marker='o', color='b') plt.fill_between(df['date'], df['count'], color="gray", alpha=0.3) # 피크 값의 날짜를 가져오기 peak_indics = df[df['count'] == df['count'].max()].index for i in peak_indics: plt.text(df['date'][i], df['count'][i]+ 0.5, df['date'][i].strftime('%Y-%m-%d'), color='red', fontsize= 12) plt.title('날짜별 인공지능 언급량') plt.xlabel('날짜') plt.ylabel('언급량') plt.grid(True) plt.xticks(rotation=45) plt.show()
+ 추가문제) GPT 언급량이 많았던 날이 언젠지 확인하기import pandas as pd import matplotlib.pyplot as plt from collections import Counter # 텍스트 데이터에서 단어를 카운트하는 모듈 # 텍스트 파일 열기 (with 절을 써서 열면 파이썬이 알아서 파일을 닫습니다.) with open("c:\\data\\joongang.txt", "r", encoding="utf-8") as file: text = file.read() # 텍스트를 엔터로 분리합니다. lines = text.split('\n') # Couter 모듈을 객체화 합니다. date_counts = Counter() current_date = None # 2024년으로 시작하는 라인만 추출(기사 날짜와 제목을 추출) for line in lines: if line.startswith('2024-'): current_date = line[:10] # 날짜만 추출 if current_date and 'GPT' in line: # 현재 날짜이면서 GPT을 포함하기 #print( line.count('인공지능')) date_counts[current_date] += line.count('GPT') #print(date_counts) # {'2024-08-13': 19, '2024-08-14': 12, '2024-08-12': 4} # 판다스 데이터 프레임으로 구성 df = pd.DataFrame(list(date_counts.items()), columns=['date','count']) # 날짜를 datetime 형식으로 변환 df['date'] = pd.to_datetime(df['date']) # 시각화 import matplotlib.pyplot as plt from matplotlib import font_manager, rc # 한글 폰트 깨지지 않게 # 한글 폰트 설정 plt.rcParams['font.family'] = 'Malgun Gothic' # 시각화 하기 plt.figure(figsize=(10,6) ) # 가로 10, 세로 6으로 그래프 사이즈 설정 plt.plot( df['date'], df['count'], marker='o', color='b') plt.fill_between(df['date'], df['count'], color="gray", alpha=0.3) # 피크 값의 날짜를 가져오기 peak_indics = df[df['count'] == df['count'].max()].index for i in peak_indics: plt.text(df['date'][i], df['count'][i]+ 0.5, df['date'][i].strftime('%Y-%m-%d'), color='red', fontsize= 12) plt.title('날짜별 GPT 언급량') plt.xlabel('날짜') plt.ylabel('언급량') plt.grid(True) plt.xticks(rotation=45) plt.show()
문제1. 언급량 분석 코드 전체를 함수로 만들어서 다음과 같이 실행되게 하시오.
함수명: relation_word_ja(keyword)
1) "c:\\data\\joongang.txt" 가 있다는 가정
import pandas as pd import matplotlib.pyplot as plt from collections import Counter # 텍스트 데이터에서 단어를 카운트하는 모듈 def relation_word_ja(keyword): # 텍스트 파일 열기 (with 절을 써서 열면 파이썬이 알아서 파일을 닫습니다.) with open("c:\\data\\joongang.txt", "r", encoding="utf-8") as file: text = file.read() # 텍스트를 엔터로 분리합니다. lines = text.split('\n') # Counter 모듈을 객체화 합니다. date_counts = Counter() current_date = None # 2024년으로 시작하는 라인만 추출(기사 날짜와 제목을 추출) for line in lines: if line.startswith('2024-'): current_date = line[:10] # 날짜만 추출 if current_date and keyword in line: # 현재 날짜이면서 키워드가 포함된 경우 date_counts[current_date] += line.count(keyword) # 판다스 데이터 프레임으로 구성 df = pd.DataFrame(list(date_counts.items()), columns=['date', 'count']) # 날짜를 datetime 형식으로 변환 df['date'] = pd.to_datetime(df['date']) # 시각화 from matplotlib import font_manager, rc # 한글 폰트 깨지지 않게 # 한글 폰트 설정 plt.rcParams['font.family'] = 'Malgun Gothic' # 시각화 하기 plt.figure(figsize=(10, 6)) # 가로 10, 세로 6으로 그래프 사이즈 설정 plt.plot(df['date'], df['count'], marker='o', color='b') plt.fill_between(df['date'], df['count'], color="gray", alpha=0.3) # 피크 값의 날짜를 가져오기 peak_indices = df[df['count'] == df['count'].max()].index for i in peak_indices: plt.text(df['date'][i], df['count'][i] + 0.5, df['date'][i].strftime('%Y-%m-%d'), color='red', fontsize=12) plt.title(f'날짜별 {keyword} 언급량') plt.xlabel('날짜') plt.ylabel('언급량') plt.grid(True) plt.xticks(rotation=45) plt.show() # 예제 호출 relation_word_ja('사람')
2) "c:\\data\\joongang.txt" 가 없고 스크롤링 까지 한다는 가정
나중에 배워요~
'빅데이터 분석(with 아이티윌) > python' 카테고리의 다른 글
[빅데이터분석] Python_44. 데이터 시각화 3. (감정 분석_긍정, 부정) (0) | 2024.08.27 |
---|---|
[빅데이터분석] Python_43. 데이터 시각화 2. (연관어 분석) (2) | 2024.08.27 |
[빅데이터분석] Python_41. 파이썬 웹 스크롤링 (youtube text) (0) | 2024.08.26 |
[빅데이터분석] Python_40. 파이썬 이미지 스크롤링 2 (Bing ) (0) | 2024.08.26 |
[빅데이터분석] Python_38. 파이썬 웹스크롤링10(유튜브) (4) | 2024.08.23 |