250331_Data_6기 TIL 30일차
오늘부터 데이터 분석 입문 주차가 시작되었다. 그래서 팀도 재편성 되었다. 으으 팀 바뀔때마다 이 어색한 공기는 도저히 적응이 안된다ㅋㅋ얼른 친해져야겠다~
오늘은 못들었던 파이썬 종합반 5주차를 마무리하고 통계학 기초 1주차를 듣고 복습, 저번주에 못한 기초 프로젝트 코드 분석을 메인으로 할 예정이다.
통계학 기초 1주차
1. 데이터 분석에 있어 통계가 중요한 이유
-> 데이터 기반의 의사결정을 내릴 수 있기 때문!
☑️ 데이터를 분석하고 이를 바탕으로 결정을 내릴 수 있다.
- 데이터 분석에서 통계는 데이터를 이해하고 해석하는 데 중요한 역할을 한다.
- 데이터를 요약하고 패턴을 발견할 수 있다.
- 추론을 통해 결론을 도출하는 과정을 돕는다.
- 즉, 데이터 기반의 의사결정을 내릴 수 있다.
실제 사용 예시)
- 고객 만족도 설문조사 분석
- 고객 유형별 세그먼트 상품 추천
- 그 밖에도 다양한 상황에서 사용
- 기업의 전략 수립
- 마케팅을 진행하기 위해서
- 신제품을 개발하기 위해서
2. 기술 통계와 추론 통계
1) 기술 통계
☑️ 데이터를 요약하고 설명하는 통계 방법.
- 주로 평균, 중앙값, 분산, 표준편차 등을 사용
- 즉 데이터를 특정 대표값으로 요약
- 데이터에 대한 대략적인 특징을 간단하고 쉽게 알 수 있다.
- 단, 데이터 중 예외(이상치)라는게 항상 존재할 수 있고 데이터의 모든 부분을 확인할 수 있는 것은 아니다.
용어 정리)
1. 분산
- 분산은 데이터 값들이 평균으로부터 얼마나 떨어져 있는 지를 나타내는 척도로, 데이터의 흩어짐 정도를 측정하는 것
- 분산이 크면 데이터가 넓게 퍼져 있고, 작으면 데이터가 평균에 가깝게 모여 있음을 의미한다.
- 분산을 구하는 방법은 각 데이터 값에서 평균을 뺀 값을 제곱한 후, 이를 모두 더하고 데이터의 개수로 나누는 것이다.
2. 표준편차
- 표준편차는 데이터 값들이 평균에서 얼마나 떨어져있는지를 나타내는 통계적 척도로, 분산의 제곱근을 취하여 계산
- 표준편차는 데이터의 변동성을 측정하며, 값이 클수록 데이터가 평균으로부터 더 넓게 퍼져있음을 의미.
표준편차와 분산의 관계
- 분산과 표준편차는 동일하게 데이터의 변동성을 측정하는 두 가지 주요 척도입니다.
- 두 개념은 밀접하게 연관되어 있으며, 표준편차는 분산의 제곱근입니다.
- 분산은 데이터 값과 평균의 차이를 제곱하여 평균을 낸 값이기 때문에 제곱 단위로 표현되지만, 표준편차는 다시 제곱근을 취하여 원래 데이터 값과 동일한 단위로 변환합니다.
2) 추론 통계
☑️ 표본 데이터를 통해 모집단의 특성을 추정하고 가설을 검정하는 통계 방법.
- 주로 신뢰구간, 가설검정 등을 사용한다.
- 즉, 데이터의 일부를 가지고 데이터 전체를 추정하는 것이 핵심이다.
용어 정리)
1. 신뢰구간 (Confidence Interval)
- 신뢰구간은 모집단의 평균이 특정 범위 내에 있을 것이라는 확률을 나타낸다.
- 주로 95% 신뢰구간 사용.
2. 가설검정 (Hypothesis Testing)
- 가설 검정은 모집단에 대한 가설을 검증하기 위해 사용된다. 일반적으로 두 가지 가설이 있으며, 귀무가설(H0)은 검증하고자 하는 가설이 틀렸음을 나타내는 기본 가설이고, 대립가설(H1)은 그 반대 가설로 주장하는 바를 나타낸다. p-value를 통해 귀무가설을 기각할지 여부를 결정한다.
3. 실제 사용 예시
☑️ 기술통계
- 회사의 매출 데이터를 요약하기 위해 평균 매출, 매출의 표준편차 등을 계산
☑️ 추론통계
- 일부 고객의 설문조사를 통해 전체 고객의 만족도를 추정
3. 다양한 분석 방법
1) 위치 추정
☑️ 데이터의 중심을 확인하는 방법!
- 평균, 중앙값이 대표적인 위치 추정 방법
2) 변이추정
☑️ 데이터들이 서로 얼마나 다른지 확인하는 방법!
- 분산, 표준편차, 범위 등을 사용
3) 데이터 분포 탐색
☑️ 데이터의 값들이 어떻게 이루어져 있는지 확인하기
- 히스토그램과 상자 그림(Box plot)은 데이터의 분포를 시각적으로 표현하는 대표적인 방법
- ex) 시험 점수의 분포를 히스토그램과 상자 그림으로 표현
4) 이진 데이터와 범주 데이터 탐색
☑️ 데이터들이 서로 얼마나 다른지 확인하는 방법!
- 최빈값(개수가 제일 많은 값)을 주로 사용
- 파이그림과 막대 그래프는 이진 데이터와 범주 데이터의 분포를 표현하는 대표적 방법
5) 상관관계
☑️ 데이터들끼리 서로 관련이 있는지 확인하는 방법!
- 상관계수는 두 변수 간의 관계를 측정하는 방법
- 상관계수를 계산해서 -1이나 +1에 가까워지면 강력한 상관관계를 가진다.
- 0에 가까울수록 상관관계가 없다.
6) 인과관계와 상관관계의 차이
☑️ 인과관계는 상관관계와는 다르게 원인, 결과가 분명해야 함!
- 상관관계는 두 변수 간의 관계를 나타내며, 인과관계는 한 변수가 다른 변수에 미치는 영향을 나타냄.
- ex) 아이스크림 판매량과 익사 사고 수 간의 상관관계는 높지만 인과관계를 갖지는 않는다.
7) 두 개 이상의 변수 탐색
☑️ 여러 데이터들끼리 서로 관련이 있는지 확인
- 다변량 분석은 여러 변수 간의 관계를 분석하는 방법이다.
- ex) 여러 마케팅 채널의 광고비와 매출 간의 관계 분석 주로 히트맵이 활용됨
기초 프로젝트 코드 분석
오늘 분석할 코드는 우리 프로젝트의 핵심 중 하나였던 카테고리별 월별 매출 증감률이다.
크게 세가지로 나눠 코드 작성이 이뤄졌다.
1. 월별 매출 계산 코드
2. 매출을 증감률로 변환하는 코드
3. 월별&카테고리별 증감률 시각화
그럼 이제 자세히 알아보자.
1. 카테고리별 월별 매출 계산 코드
# 월별 매출 계산
monthly_revenue = (
merge_df
.groupby(["index_group_name", "order_month"])["price"]
.sum()
.reset_index()
.rename(columns = {
'index_group_name': '카테고리',
'order_month': '월',
'price': '매출'})
.round(2)
)
해당 코드는 카테고리별 월별 매출 계산을 위해 작성된 코드인데 차근차근 설명하자면
merge_df 데이터프레임에서 각 상품 카테고리별(index_group_name)로 월별(order_month) 총 매출(price)
1. 데이터 그룹화(groupby)
merge_df.groupby(["index_group_name", "order_month"])
2. 매출 합계 계산
["price"].sum()
각 그룹(카테고리-월)에서 가격 컬럼(price)의 합계를 계산한다.
3. 데이터프레임 변환 (reset_index)
.reset_index()
- groupby 결과는 기본적으로 멀티 인덱스 형태이기 때문에, 이를 보기 좋게 표 형태로 전환
- 새로운 데이터프레임 형태로 만들어 주는 과정
4. 컬럼명 변경 (rename)
.rename(columns={
'index_group_name': '카테고리',
'order_month': '월',
'price': '매출'
})
컬럼 이름을 한글로 바꿔주는 단계 솔직히 안해도 된다고 생각한다
5. 소수점 반올림 처리
.round(2)
매출의 소수점 아래 숫자를 2자리까지 표시하도록 반올림
2. 매출을 증감률로 변환
monthly_revenue["증감률"] = (
monthly_revenue
.groupby("카테고리")["매출"]
.pct_change() * 100
)
monthly_revenue["증감률"] = monthly_revenue["증감률"].round(2)
1. 그룹화 (groupby)
monthly_revenue.groupby("카테고리")
monthly_revenue 데이터를 카테고리별로 다시 한번 그룹화하여 각 카테고리별로만 증감률을 계산할 수 있게 함.
2. 증감률 계산 (pct_change)
["매출"].pct_change() * 100
pct_change()는 현재 값과 이전 값 간의 변화율(증감률)을 계산하는 함수
3. 소수점 정리 (round(2))
.round(2)
계산된 증감률을 소수점 둘째 자리까지 반올림
3. 월별&카테고리별 증감률 시각화
#월별&카테고리별 매출증감률 시각화
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
# 스타일 설정
sns.set(style="whitegrid", palette="muted")
# 월 데이터를 정수로 사용했기 때문에 정렬해서 표시
monthly_revenue = monthly_revenue.sort_values(by=['카테고리', '월'])
# 그래프 그리기
plt.figure(figsize=(14, 7))
sns.lineplot(
data=monthly_revenue,
x='월',
y='증감률',
hue='카테고리',
marker='o',
linewidth=2.5
)
# 제목 및 축 레이블 설정
plt.title("Monthly Revenue Growth Rate (%) by Category", fontsize=16, fontweight='bold')
plt.xlabel("Month", fontsize=13)
plt.ylabel("Growth Rate (%)", fontsize=13)
# x축 월 단위 표시 설정
plt.xticks(range(1, 13))
# 범례 위치 조정
plt.legend(title='Category', bbox_to_anchor=(1.05, 1), loc='upper left')
plt.tight_layout()
plt.show()
1. 스타일 설정
# 그래프 스타일 설정 (흰색 배경, muted 톤 색상)
sns.set(style="whitegrid", palette="muted")
2. 데이터 정렬
monthly_revenue = monthly_revenue.sort_values(by=['카테고리', '월'])
- 그래프를 그리기 전에 데이터가 카테고리와 월 기준으로 정렬되어야, 그래프가 깔끔하고 자연스럽게 표현됨
3. 시각화 코드
# 그래프의 크기 설정
plt.figure(figsize=(14, 7))
# 선 그래프(line plot) 생성
sns.lineplot(
data=monthly_revenue,
x='월', # x축은 '월'
y='증감률', # y축은 '매출 증감률(%)'
hue='카테고리', # 카테고리별로 선을 분리하여 표시
marker='o', # 각 데이터 포인트를 원형 마커로 표시
linewidth=2.5 # 선 두께를 굵게 설정하여 잘 보이게 함
)
- 그래프의 크기를 설정한 뒤
- 선 그래프를 이용한 시각화를 할 것이기 때문에 선 그래프 설정하기.
- x, y축 지정
- hue 선 분리
4. 그래프 제목 및 축 레이블 설정
plt.title("Monthly Revenue Growth Rate (%) by Category", fontsize=16, fontweight='bold')
plt.xlabel("Month", fontsize=13)
plt.ylabel("Growth Rate (%)", fontsize=13)
그래프의 제목과 축의 이름을 명확히 표시하여 데이터를 직관적으로 이해할 수 있도록 함
5. x축 설정
plt.xticks(range(1, 13))
- 월별 데이터를 1월부터 12월까지 정수로 표시하여 그래프를 명확하게 표현
6. 범례(legend) 설정
plt.legend(title='Category', bbox_to_anchor=(1.05, 1), loc='upper left')
범례 위치 조정하기
7. 레이아웃 최적화 및 출력
plt.tight_layout()
plt.show()
최종적으론 이렇게 시각화된다.
복습 해보니까 시각화 복습하고 이해하는데 좋은 것 같아서 적어도 이번주에는 매일 그래프 하나씩 복습해보려고 노력해봐야겠다.
마무리
오늘도 무사히 끝났다. 바뀐 팀원들과 새로 적응하고 통계 라이브세션 시작하면 또 바빠질 것 같으니 시작 전까지 최대한 통계 기초 같은 강의들 들어둬야겠다!
ps. 그리고 오늘 진짜 왤케 졸린지 모르겠다 끝나자마자 바로 침대에 누워야지... 잠 깨려고 블로그 조금 만지작 대봤다 ㅋㅋ
'데이터 분석 입문 주차' 카테고리의 다른 글
250407_Data_6기 TIL 35일차 - 통계학 기초 5주차 (0) | 2025.04.07 |
---|---|
250404_Data_6기 TIL 34일차 - 파이썬 스탠다드 #2 (0) | 2025.04.04 |
데이터 분석 입문 주차데이터 분석 입문 주차250403_Data_6기 TIL 33일차 - 통계학 기초, 통계 라이브세션, 파이썬 스탠다드 복습 (0) | 2025.04.03 |
데이터 분석 입문 주차250402_Data_6기 TIL 32일차 - 통계학 기초, 라이브세션 복습 (0) | 2025.04.02 |
250401_Data_6기 TIL 31일차 - 통계학 기초 2주차, 기초 프로젝트 코드 분석, 아티클 스터디 (1) | 2025.04.01 |