0. 이 글은 누구를 위한 글인가요?
- 시간 흐름에 따라 감정의 변화를 보고 싶으신 분
- 감성 분석 결과를 시계열 데이터로 다뤄보고 싶으신 분
- 긍정/부정 변화 추세를 시각화하고 싶은 분
1. 프로젝트 개요
- 입력 파일: 인공지능_블로그_감성분석결과.csv
- 목표: 날짜별 감성 카운트 및 비율 시각화
2. 필요한 라이브러리 설치
pip install pandas matplotlib seaborn
3. 데이터 불러오기
import pandas as pd
df = pd.read_csv("인공지능_블로그_감성분석결과.csv")
print(df[['날짜', '감성']].head())
날짜 감성
0 2025.01.01 긍정
1 2025.01.02 긍정
2 2025.01.04 중립
3 2025.01.21 부정
4. 날짜 형식 통일 및 정렬
df['날짜'] = pd.to_datetime(df['날짜'], format="%Y.%m.%d", errors='coerce')
df = df.sort_values(by='날짜')
df = df.dropna(subset=['날짜', '감성'])
날짜 감성
0 2025-01-01 긍정
1 2025-01-02 긍정
2 2025-01-04 중립
3 2025-01-21 부정
5. 날짜별 감성 개수 집계
daily_sentiment = df.groupby(['날짜', '감성']).size().unstack(fill_value=0)
print(daily_sentiment.head())
날짜 감성 긍정 부정 중립
2025-01-01 5 0 1
2025-01-02 6 2 3
2025-01-03 6 5 2
2025-01-04 1 2 4
2025-01-05 8 3 2
6. 감성 비율 계산
daily_sentiment['총합'] = daily_sentiment.sum(axis=1)
daily_sentiment['긍정비율'] = daily_sentiment['긍정'] / daily_sentiment['총합']
daily_sentiment['부정비율'] = daily_sentiment['부정'] / daily_sentiment['총합']
print(daily_sentiment[['긍정비율', '부정비율']].head())
날짜 감성 긍정비율 부정비율
2025-01-01 0.833333 0.000000
2025-01-02 0.545455 0.181818
2025-01-03 0.461538 0.384615
2025-01-04 0.142857 0.285714
2025-01-05 0.615385 0.230769
7. 시각화: 날짜별 긍정/부정 비율 추세
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.family'] = 'Malgun Gothic'
plt.figure(figsize=(12, 6))
sns.lineplot(data=daily_sentiment, x=daily_sentiment.index, y='긍정비율', label='긍정 비율', color='green')
sns.lineplot(data=daily_sentiment, x=daily_sentiment.index, y='부정비율', label='부정 비율', color='red')
plt.title("날짜별 긍정/부정 비율 추세")
plt.xlabel("날짜")
plt.ylabel("비율")
plt.ylim(0, 1)
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
8. 시각화: 일일 감성 건수 비교
plt.figure(figsize=(12, 5))
daily_sentiment[['긍정', '부정', '중립']].plot(kind='bar', stacked=True, figsize=(12, 5), colormap='Pastel1')
plt.title("날짜별 감성 건수 (긍정/부정/중립)")
plt.xlabel("날짜")
plt.ylabel("게시물 수")
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
9. 분석 인사이트 예시
- 1월 1일 ~ 1월 10일
- 긍정 감성 비율이 매우 높음 (전체 감성 중 65~70%)
- 새해 시작과 함께 AI 기술 기대, 트렌드 전망 관련 긍정적 블로그 글이 다수 작성된 것으로 해석 가능
1월 15일 전후
- 부정 감성 비중이 잠시 상승
- 일자리 위협, AI 오용 사례 등에 대한 우려가 블로그 제목에 반영된 것으로 보임
→ 예: "AI가 내 일자리를 대체할까", "인공지능의 윤리적 문제"
1월 20일 ~ 1월 30일
- 다시 긍정 비율이 60% 이상으로 회복
- ChatGPT, Copilot 등 AI 활용 사례 소개가 늘어나면서 감성이 긍정적으로 이동
→ 예: "ChatGPT로 업무 효율 2배", "AI 자동화 도입 성공기"
2월 초 (2월 1일 ~ 2월 7일)
- 중립 감성 비중이 증가
- 블로그 제목이 단순 뉴스 요약/정보 공유 형태일 경우 중립으로 분류되기 쉬움
→ 예: "AI 기술 동향 발표", "2025년 AI 전망 보고서 요약"
10. 마무리 요약
단계 |
설명 |
날짜 형식 정제 |
to_datetime으로 표준화 |
감성별 집계 |
groupby(['날짜','감성']).size().unstack() |
비율 계산 |
긍정/부정 건수 ÷ 총합 |
선그래프 시각화 |
sns.lineplot() 활용 |
막대그래프 |
감성별 수량 비교 (stacked bar) |