20260413 TIL(🎂)

2026. 4. 13. 09:35TIL

📢 오늘의 목표

🚩코드카타를 하면서 기본적인 코딩 역량을 키운다.

🚩통계분석에 대해 배우면서 기존에 배웠던 내용과 어떻게 접목 시킬지 고민한다.


📅 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()

 

 

박스 플롯 위: 상위 25%
 
박스플롯 아래: 하위 35%
 
박스 플롯 맨 위: 데이터 최댓값
 
박스 플롯 맨 아래: 데이터 최솟값

🗯️상관관계

*️⃣ 상관 계수는 두 변수 간의 관계를 측정하는 방법

*️⃣ 상관 계수를 계산해서 -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()
상관 관계 계수는 1인 것으로 판명됨!

🗯️두 개 이상의 변수 탐색

*️⃣ 여러 데이터들끼리 서로 연관 있는지 확인

*️⃣  다변량 분석은 여러 변수 간의 관계를 분석하는 방법

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