티스토리 뷰
시각화는 주어진 데이터를 활용하여 최대한 다양한 방법으로 데이터를 표현해 보기
월별 '전기' 키워드 빈도수
#월별 '전기' 키워드 빈도수
plt.figure(figsize=(9,6)) # 너비, 높이
x = key_df['전기']
y = key_df['발행월']
plt.scatter(x,y,alpha=0.1)
plt.show()
#가독성을 높이기 위해 일자를 월로 구분 해야겠음
월별 발행 뉴스 건수 (막대그래프)
#월별 발행 뉴스 건수 (막대그래프)
plt.figure(figsize=(9,6)) # 너비, 높이
count_m = key_df['발행월'].value_counts()
count_m = count_m.sort_index()
y = count_m.values
x = count_m.index
plt.bar(x,y,width=0.7,color='silver')
plt.title('monthly news')
plt.xlabel('Month')
plt.ylabel('number of news')
for idx, val in count_m.items():
plt.annotate(val,(idx,val),xytext=(0,2),textcoords='offset points',fontsize=10,ha='center',color='blue')
plt.show()
월별 발행 뉴스 건수 (선그래프)
#월별 발행 뉴스 건수(선그래프)
plt.figure(figsize=(9,6)) # 너비, 높이
count_m = key_df['발행월'].value_counts()
count_m = count_m.sort_index()
y = count_m.values
x = count_m.index
plt.plot(x,y,'*-b')
plt.title('monthly news')
plt.xlabel('Month')
plt.ylabel('number of news')
for idx, val in count_m[::1].items():
plt.annotate(val,(idx,val),xytext=(10,5),textcoords='offset points',fontsize=10,ha='center',color='r')
plt.show()
월별 발행 뉴스 건수 (원그래프)
#월별 발행 뉴스 건수(원그래프)
count_m = key_df['발행월'].value_counts()
count_m = count_m.sort_index()
x = count_m.index
colors = ['silver', 'gold', 'whitesmoke', 'lightgray','#d395d0','pink','yellow','lightpink']
plt.pie(x,labels=x,autopct = "%1.1f",colors = colors)
plt.title('monthly news')
plt.show()
분야를 구분하여 월별 발행 뉴스 건수 (막대그래프)
branch = key_df['분야'].value_counts()
line1 = key_df[key_df['분야']=='에너지']
line2 = key_df[key_df['분야']=='과학']
# 분야를 구분하여 월별 뉴스 발행건수 (막대그래프)
fig, ax = plt.subplots(figsize=(8,6))
count_m = line1['발행월'].value_counts()
count_m = count_m.sort_index()
count_m1 = line2['발행월'].value_counts()
count_m1 = count_m1.sort_index()
x = count_m.index
y = count_m.values
x1=count_m1.index
y1=count_m1.values
plt.bar(x,y,width=0.7,color='lightgray',label='energy')
plt.bar(x1,y1,width=0.7,color='gold',label='science')
plt.title('monthly news')
plt.xlabel('Month')
plt.ylabel('number of news')
for idx, val in count_m[::1].items():
plt.annotate(val,(idx,val),xytext=(10,2),textcoords='offset points',fontsize=10,ha='center',color='b')
for idx, val in count_m1[::1].items():
plt.annotate(val,(idx,val),xytext=(10,2),textcoords='offset points',fontsize=10,ha='center',color='r')
ax.legend()
plt.show()
월별 발행 뉴스 건수 (선그래프)
# 분야를 구분하여 월별 뉴스 발행건수 (선그래프)
fig, ax = plt.subplots(figsize=(8,6))
count_m = line1['발행월'].value_counts()
count_m = count_m.sort_index()
count_m1 = line2['발행월'].value_counts()
count_m1 = count_m1.sort_index()
x = count_m.index
y = count_m.values
x1=count_m1.index
y1=count_m1.values
plt.plot(x,y,color='b',label='energy')
plt.plot(x1,y1,color='y',label='science')
plt.title('monthly news')
plt.xlabel('Month')
plt.ylabel('number of news')
for idx, val in count_m[::1].items():
plt.annotate(val,(idx,val),xytext=(0,2),textcoords='offset points',fontsize=10,ha='center',color='b')
for idx, val in count_m1[::1].items():
plt.annotate(val,(idx,val),xytext=(0,2),textcoords='offset points',fontsize=10,ha='center',color='k')
ax.legend()
plt.show()
발행 월별 각 단어의 빈도수 (선그래프)
group_df=key_df[['발행월','전기','에너지','원자력','수력','화력']].groupby('발행월').sum()
group_df = group_df.reset_index()
#발행 월별 각 단어 빈도수 (선그래프)
key = ['에너지','전기','원자력','수력','화력']
fig, ax = plt.subplots(figsize=(8,6))
for i in key:
ax.plot(group_df['발행월'],group_df[i],label=i,marker='*')
for idx,val in group_df[i].items():
ax.annotate(val,(idx,val),xytext=(idx,val+1))
ax.set_title('Monthly frequency by sector')
ax.legend()
발행 월별 각 단어의 빈도수 (막대그래프)
#발행 월별 각 단어 빈도수 (막대그래프)
key = ['에너지','전기','원자력','수력','화력']
fig, ax = plt.subplots(figsize=(8,6))
ax.set_title('Monthly frequency by sector')
for i in key:
ax.bar(group_df['발행월'],group_df[i],width=0.5,label=i)
ax.legend()
'에너지' 의 월별 빈도수 비율 (원그래프)
#'에너지'의 월별 빈도수 비율 (원그래프)
ax.set_title('Monthly frequency by sector')
labels=key
colors = ['silver', 'gold', 'whitesmoke', 'lightgray','pink','lightblue','#8fd9b6']
wedgeprops={'width': 0.7, 'edgecolor': 'w', 'linewidth': 4}
#for i in key:
plt.title("'에너지' 키워드의 월별 빈도")
plt.pie(group_df['에너지'],labels = group_df['발행월'],autopct = "%1.1f%%",colors = colors,shadow=True,startangle=90,wedgeprops=wedgeprops)
plt
plt.show()
'전기' 의 월별 빈도수 비율 (원그래프)
#'전기'의 월별 빈도수 비율 (원그래프)
ax.set_title('Monthly frequency by sector')
labels=key
wedgeprops={'width': 0.7, 'edgecolor': 'w', 'linewidth': 4}
#for i in key:
plt.title("'전기' 키워드의 월별 빈도")
plt.pie(group_df['전기'],labels = group_df['발행월'],autopct = "%1.1f%%",shadow=True,startangle=90,wedgeprops=wedgeprops)
plt
plt.show()
[링크]
2023.09.23 - [데이터 분석] - [python] 전자신문 뉴스 크롤링하기 1. 수집하기
[python] 전자신문 뉴스 크롤링하기 1. 수집, 가공 및 처리
[수집] 전자신문 섹션 중 산업에너지 환경에서 과학, 에너지 분야 크롤링하여 다음과 같이 csv 파일을 작성한다. ================== 분야 | 발행일|제목| 내용 ================== html = urlopen(target2) bs = soup(ht
notrowing.tistory.com
2023.09.23 - [데이터 분석] - [python] 전자신문 뉴스 크롤링하기 2. 가공 및 처리
[python] 전자신문 뉴스 크롤링하기 - 전공 실습 2
2. 가공 및 처리 수집한 csv 파일에서 에너지 관련 단어의 빈도수를 도출한다 관련단어 [에너지, 전기,원자력, 수력, 화력] ================================== 분야|발행일|제목|내용|전기|에너지|수력|화력
notrowing.tistory.com
Github Repository : https://github.com/notrowing/NewsPaper.git
GitHub - notrowing/NewsPaper
Contribute to notrowing/NewsPaper development by creating an account on GitHub.
github.com
'데이터 분석' 카테고리의 다른 글
[python] 전기차 데이터를 활용한 분석 데이터 제공 1-2. 크롤링 (0) | 2023.11.18 |
---|---|
[python]전기차 데이터를 활용한 분석 데이터 제공 1-1. 크롤링 (0) | 2023.11.18 |
[python] 전자신문 뉴스 크롤링하기 2. 통계분석 (0) | 2023.09.23 |
[python] 전자신문 뉴스 크롤링하기 1. 수집, 가공 및 처리 (0) | 2023.09.23 |