티스토리 뷰

시각화는 주어진 데이터를 활용하여 최대한 다양한 방법으로 데이터를 표현해 보기

 

월별  '전기'  키워드 빈도수

#월별 '전기' 키워드 빈도수 
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

 

«   2025/05   »
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
글 보관함
최근에 올라온 글
Total
Today
Yesterday