2026. 4. 13. 09:35ㆍTIL
📢 오늘의 목표
🚩코드카타를 하면서 기본적인 코딩 역량을 키운다.
🚩통계분석에 대해 배우면서 기존에 배웠던 내용과 어떻게 접목 시킬지 고민한다.
📅 TIL
❇️Code Kata
😊 문제 33
https://school.programmers.co.kr/learn/courses/30/lessons/77884
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
> 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
def solution(left, right):
answer = 0
for i in range(left,right+1):
count = 0
for s in range(1,i+1):
if i % s == 0:
count += 1
if count % 2 ==0:
answer += i
else:
answer -= i
return answer
약수의 합 떄 사용했던 공식을 이용해 보았다. 처음에 for 문 하나만 써서 풀려고 했는데 조건이 2개라 for 문 2개 돌렀다. 그리고 처음에는 약수의 합을 구하기 위해 제곱으로 풀려고 했지만 그렇게 하면 식이 복잡해질 것 같아서 제곱을 사용하지 않고 범주를 left ~ right로 잡고 count라는 변수를 투입해서, 약수의 갯수를 센 후 카운트의 갯수가 짝수면 i를 더하고, 홀수면 빼는 방식으로 코딩을 구성하였다. 그리고 return의 위치를 잘못 잡아서 출력이 0으로 나왔기 때문에 위치를 조정해서 결괏값을 도출했다!
❇️ 통계학 기초 1주차
📊 데이터 분석에서 통계가 중요한 이유
🗯️ 데이터 기반 의사결정 할 수 있다!
*️⃣ 데이터를 이해하고 해석!
*️⃣ 데이터가 적은 경우는 없다. 데이터는 굉장히 많음 근데 이걸 일일히? ㄴㄴ
*️⃣ 방대한 양의 데이터를 손 쉽게 → 통계
*️⃣ 추론을 통해서 결론을 도출
*️⃣ 데이터 기반 의사결정 → 수익 창출
*️⃣통계를 활용한 데이터 분석은 필수!
➡️결국은 통계를 이용하면 데이터를 더 쉽게 이해하고 인사이트 제공을 통해 경제적 가치를 창조 가능

🗯️고객 만족도 설문 조사

*️⃣비율을 계산해서 만족과 불만족의 비율을 파이차트로 아주 심플한 예시가 된다!
*️⃣단순한 비율 계산도 통계!
*️⃣바차트랑 다른 차트를 이용하면 어떤 장점? → 바 차트를 이용하면 여러 값의 크기를 비교 가능 하지만 비율 면에서는 파이 차트를 쓰는 것이 더 좋을 때가 많다. Ex) 점유율, 결함 비율 등
🗯️세그먼트 > 고객 유형별로 묶는다.

*️⃣ 같은 그룹끼리 이벤트 추천 등등 맞춤 서비스 → 머신 러닝을 이용해서~~~
*️⃣ 같은 그룹에 있는 고객에게 같은 이벤트, 혜택 등등 제공
*️⃣ 예를 들어 A그룹에서는 할인 쿠폰을 선호하고 B그룹에서는 사은품을 선호한다면 비슷한 가치의 할인 쿠폰과 사은품을 선호하는 그룹에 줌으로써 고객의 충성도 높일 수 있음!
🗯️ 그 밖에도 여러 상황에 이용 가능
*️⃣ 통계를 제대로 배우면 이런 과정을 수행할 수 있다! 많은 인사이트를 도출 할 수 있다.
*️⃣ 기업의 전략, 마케팅, 신제품 개발 등에 이용 가능
📊 기술 통계? 추론 통계?
🗯️기술 통계
*️⃣ 데이터를 요약하고 설명 → 데이터를 특정 대표값으로 요약!
*️⃣ 데이터의 대략적인 특징을 알 수 있다.
*️⃣ 다만 이상치가 존재하므로 항상 모든 데이터를 대표하는 건 아님
*️⃣주로 평균, 중앙값, 분산, 표준 편차 등 사용
⭐평균
*️⃣ 데이터의 중앙값
*️⃣ 70, 80, 90, 100, 60점의 평균 → (70 + 80 + 90 + 100 + 60) / 5 = 80
*️⃣ 일반적인 경향성 파악 가능
⭐ 중앙값
*️⃣ 데이터셋을 크기 순서대로 정렬했을 때 중앙에 위치한 값
*️⃣ 이상치(예외적인 값들)에 영향을 덜 받기 때문에 데이터의 중심 경향을 나타내는 또 다른 방법 → 이상치의 영향을 많이 받는 자료에서는 평균 보다는 중앙값을 사용!(평균과 같을 수도 있고 다를수도 있다!)
*️⃣ 60, 70, 80, 90, 100일 때, 중앙값은 80 → 자료 갯수가 짝수일경우 중앙값은 중앙에 있는 2개 값
⭐분산
*️⃣ 데이터 값들이 평균으로부터 얼마나 떨어져 있는지를 나타내는 척도
*️⃣ 크면 데이터가 넓게 퍼져 있고, 작으면 데이터가 평균에 가깝게
*️⃣ 데이터 값에서 평균을 뺀 값을 제곱한 후, 이를 모두 더하고 데이터의 개수로 나누는 것
*️⃣시험점수가 70, 80, 90, 100
평균 (70 + 80 + 90 + 100) / 4 = 85|
(70 - 85)^2 = 225, (80 - 85)^2 = 25, (90 - 85)^2 = 25, (100 - 85)^2 = 225
이 값을 모두 더한 후 데이터의 개수로 나누면, 분산 = (225 + 25 + 25 + 225) / 4 = 125
⭐표준 편차
*️⃣데이터 값들이 평균에서 얼마나 떨어져 있는지를 나타내는 통계적 척도
*️⃣데이터의 변동성을 측정하며, 값이 클수록 데이터가 평균으로부터 더 넓게 퍼져 있음
*️⃣표준편차는 분산의 제곱근이므로 분산에 루트(root)를 씌워 약 11.18
⭐분산과 표준 편차
*️⃣ 분산은 데이터 값과 평균의 차이를 제곱하여 평균을 낸 값이기 때문에 제곱 단위로 표현되지만, 표준편차는 다시 제곱근을 취하여 원래 데이터 값과 동일한 단위로 변환
🗯️추론 통계
*️⃣ 표본 데이터를 이용해서 모집단의 특성을 추정하고 가설을 검정
*️⃣신뢰구간, 가설 검정을 사용
*️⃣ 일부의 데이터 > 전체의 데이터
⭐신뢰구간
*️⃣모집단의 평균이 특정 범위 내 있을 확률
*️⃣일반적으로 95% 신뢰 구간 사용 > 모집단의 평균이 95% 구간 내 있을 확률
⭐가설 검정(Hypothesis Testing)
*️⃣ 가설 검정은 모집단에 대한 가설을 검증하기 위해 사용
➡️귀무가설과 대립 가설
*️⃣귀무 가설(H0): 검증하고자 하는 가설이 틀렸음을 나타내는 기본 가설(변화가 없다, 효과가 없다 등)
*️⃣대립 가설(H1): 그 반대 가설로 주장하는 바를 나타냄(변화가 있다, 효과가 있다 등)
*️⃣ p-value를 통해 기각할지 여부를 결정
✨p-value: 귀무가설(차이가 없다)이 맞다는 전제하에, 관찰된 결과가 우연히 나타날 확률
*️⃣예를 들어 새로운 교육 프로그램이 학생에게 영향을 끼치는 지 알고 싶으면 귀무 과설은 프로그램이 영향을 끼치지 않는다. 대립 가설은 영행을 끼친다!
🌈기술 통계와 추론 통계 각각 언제 쓰는 지 궁금해서 찾아봄

📊다양한 분석 방법
🗯️위치 추정
*️⃣ 데이터의 중심을 확인하는 법
*️⃣ 평균, 중앙값 등
Ex) 학생들 시험 점수에서 평균 점수, 중간 점수를 계산
#데이터 분석에서 자주 사용되는 라이브러리
import pandas as pd
#다양한 계산을 빠르게 수행하게 돕는 라이브러리
import numpy as np
#시각화 라이브러리
import matplotlib.pyplot as plt
#시각화 라이브러리2
import seaborn as sns
data = [85, 90, 78, 92, 88, 76, 95, 89, 84, 91]
mean = np.mean(data)
median = np.median(data)
print(f"평균: {mean}, 중앙값: {median}")
# 평균: 86.8, 중앙값: 88.5
🗯️변이 추정
*️⃣데이터가 얼마나 다른지 확인하는 법
*️⃣ 분산, 표준 편차, 범위
⭐범위
*️⃣ 데이터셋에서 가장 큰 값과 가장 작은 값 사이의 차이를 나타내는 간단한 분포
*️⃣ 범위를 통해 데이터가 어느 정도 변동성을 가지는 지 쉽게 파악
*️⃣ 범위는 계산이 간단! → 기본적인 데이터 분석에서 많이 사용
*️⃣ 범위(R) = 최대값 - 최소값
Ex) 최고값 100, 최소값 60
범위 100-60 = 40
variance = np.var(data)
std_dev = np.std(data)
data_range = np.max(data) - np.min(data)
print(f"분산: {variance}, 표준편차: {std_dev}, 범위: {data_range}")
# 분산: 33.36, 표준편차: 5.775811631277461, 범위: 19
🗯️데이터 분포 탐색
*️⃣ 데이터들이 서로 얼마나 다른지 확인하는 방법!
*️⃣ 최빈값(개수가 제일 많은 값)을 주로 사용
*️⃣ 파이그림과 막대 그래프는 이진 데이터와 범주 데이터의 분포를 표현하는 대표적 방법
Ex) 고객 만족도에 설문에서 만족도/불만족도
plt.hist(data, bins=5)
plt.title('histogram')
plt.show()
plt.boxplot(data)
plt.title('boxplot')
plt.show()

🗯️상관관계
*️⃣ 상관 계수는 두 변수 간의 관계를 측정하는 방법
*️⃣ 상관 계수를 계산해서 -1이나 1에 가까워지면 강력한 상관 관계
-0.5, 0.5면 중간의 상관 관계
0에 가까울수록 상관 관계 없음
*️⃣ 인과관계는 상관관계와는 다르게 원인, 결과가 분명해야 함!
*️⃣상관관계는 두 변수 간의 관계를 나타내며, 인과관계는 한 변수가 다른 변수에 미치는 영향을 나타낸다.
*️⃣ 인과관계면 상관관계지만 상관 관계라고 인과 관계는 아님!
*️⃣ 여름에 아이스크림 판매량과 익사 사고 수 간의 상관 관계는 더운 날씨라는 요인 때문에 상관 관계가 있지만 아이스크림이 많이 팔린다고 익사자가 늘어나는 건 아님

study_hours = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
exam_scores = [95, 90, 85, 80, 75, 70, 65, 60, 55, 50]
correlation = np.corrcoef(study_hours, exam_scores)[0, 1]
print(f"공부 시간과 시험 점수 간의 상관계수: {correlation}")
plt.scatter(study_hours, exam_scores)
plt.show()

🗯️두 개 이상의 변수 탐색
*️⃣ 여러 데이터들끼리 서로 연관 있는지 확인
*️⃣ 다변량 분석은 여러 변수 간의 관계를 분석하는 방법
Ex) 여러 마케팅 체널의 광고비와 매출 관계 분석
data = {'TV': [230.1, 44.5, 17.2, 151.5, 180.8],
'Radio': [37.8, 39.3, 45.9, 41.3, 10.8],
'Newspaper': [69.2, 45.1, 69.3, 58.5, 58.4],
'Sales': [22.1, 10.4, 9.3, 18.5, 12.9]}
df = pd.DataFrame(data)
sns.pairplot(df)
plt.show()
df.corr()
# heatmap까지 그린다면
sns.heatmap(df.corr())


🌈 히트맵을 분석한 결과 티비를 통한 판매 전략이 가장 효과적!
오늘 강의를 듣고 분석한 결과 분석의 용도에 따라 다양한 분석 방법이 사용되고 그 결과를 적절한 시각화 방법을 통해 설득력을 높일 수 있다!!!
'TIL' 카테고리의 다른 글
| 202060415 TIL (1) | 2026.04.15 |
|---|---|
| 20240414 TIL (2) | 2026.04.14 |
| 20260410 TIL (0) | 2026.04.10 |
| 20260409 TIL (0) | 2026.04.09 |
| 20260408 TIL (0) | 2026.04.08 |