☆ To do list ☆
- AI 진단퀴즈 5문제 풀기
- 코드카타 1문제 풀기
- 이력서 작성하기
- 개인과제 진행하기(~lever 2)
- TIL 작성 및 제출
🤖 에이타니
● info() : 데이터의 전체 구조(행/열 개수, 데이터 타입, 결측치 등)를 파악하는 경우 사용한다.
import pandas as pd
df = pd.DataFrame({'A': [1, 2, None, 4], 'B': ['a', 'b', 'c', 'd']})
result = df.info()
# 컬럼 A는 3 non-null, 컬럼 B는 4 non-null로 표시되고 데이터 타입 정보가 출력된다.
● describe() : 수치형 데이터의 통계적 분포(평균, 표준편차, 분위수 등)를 확인하는 경우 사용한다.
🔐 CodeKata
● x만큼 간격이 있는 n개의 숫자

# x간격으로 n개의 숫자 출력하기
def solution(x, n):
answer = []
for i in range(1,n+1):
answer.append(x * i)
return answer
solution(2, 5)
# [2, 4, 6, 8, 10] 출력
💻 Python
▶ Seaborn
→ Matplotilb을 기반으로 만들어진 Python의 대표적인 통계 데이터 시각화 라이브러리이다. Seaborn 라이브러리는 다양한 통계 그래프를 제공한다.
● Scatter Plot (산점도)
→ Matplotlib에서 Scatter를 구현할 때보다 코드를 간단하게 작성하여 더 많은 옵션을 부여할 수 있다.

plt.figure(figsize=(10, 6))
# x: 총 금액, y: 팁, hue: 흡연여부 (색상), style: 성별 (모양), size: 인원수 (크기)
sns.scatterplot(
data=tips,
x='total_bill',
y='tip',
hue='smoker', # 흡연 여부에 따라 색깔 다르게
style='sex', # 성별에 따라 모양 다르게 (O, X)
size='size', # 인원수에 따라 점 크기 다르게
sizes=(20, 200) # 점 크기 범위 설정
)
plt.title("팁 데이터 다차원 분석 (Seaborn)")
plt.show()
● ImPlot (회귀선이 있는 산점도)
→ 데이터 추세를 파악할 때 사용한다.

# scatter_kws={'s': 20}: 점 크기 조절
# ci=None: 신뢰구간 끄기 (켜려면 ci=95)
sns.lmplot(
data=tips,
x='total_bill',
y='tip',
hue='smoker', # 흡연자/비흡연자 추세선 따로 그리기
height=6
)
plt.title("총액과 팁의 추세선 (Linear Model Plot)")
plt.show()
● Bar Plot (평균 막대그래프)
→ ' countplot '을 사용하여 범주형 데이터의 개수를 세고, ' barplot '을 이용하여 평균을 구할 수 있다.

fig, ax = plt.subplots(1, 2, figsize=(12, 5))
# 1. 빈도 그래프 (Countplot)
# 알아서 요일별 개수를 세줍니다.
sns.countplot(data=tips, x='day', ax=ax[0], palette='pastel')
ax[0].set_title('요일별 데이터 개수 (Count Plot)')
# 2. 평균 막대 그래프 (Barplot)
# 알아서 요일별 '팁 평균'을 계산하고, 신뢰구간(검은 막대)까지 보여줍니다.
sns.barplot(data=tips, x='day', y='tip', ax=ax[1], palette='pastel')
ax[1].set_title('요일별 팁 평균 (Bar Plot)')
plt.tight_layout()
plt.show()
● Count Plot (빈도 그래프)
● Box Plot (박스 플롯)
● Violin Plot (바이올린 플롯)

fig, ax = plt.subplots(1, 2, figsize=(12, 5))
# 1. 박스 플롯
sns.boxplot(data=tips, x='day', y='total_bill', hue='smoker', ax=ax[0], palette='Set2')
ax[0].set_title('Box Plot')
# 2. 바이올린 플롯 (split=True로 흡연/비흡연을 합쳐서 보여줌)
sns.violinplot(data=tips, x='day', y='total_bill', hue='smoker', split=True, ax=ax[1], palette='Set2')
ax[1].set_title('Violin Plot (Split)')
plt.tight_layout()
plt.show()
● Heatmap (상관관계 히트맵)

# 상관계수 계산 (숫자형 데이터만)
corr = tips.corr(numeric_only=True)
plt.figure(figsize=(8, 6))
sns.heatmap(corr, annot=True, fmt='.2f', cmap='coolwarm', vmin=-1, vmax=1)
plt.title("변수 간 상관관계 히트맵")
plt.show()
● Pair Plot (변수 관계 탐색)

# 모든 수치형 변수의 관계를 보여줌 (hue로 성별 구분)
sns.pairplot(tips, hue='sex', palette='husl')
plt.show()
● Swarm Plot (개별 데이터 분포)
→ Box Plot이나 Violin Plot은 요약된 정보만을 보여주지만, Swarm Plot은 모든 데이터를 겹치지 않는 점으로 찍어 옆으로 펼쳐 보여준다. 데이터 양이 적은 경우 분포를 확인하기 가장 좋은 방법이다.

plt.figure(figsize=(10, 6))
# 바이올린 플롯과 함께 그리면 금상첨화!
# 1. 바이올린으로 전체 윤곽을 잡고 (색상 연하게)
sns.violinplot(data=tips, x='day', y='total_bill', color='lightgray', inner=None)
# 2. 그 위에 겹쳐서 스웜 플롯으로 실제 데이터를 찍음
sns.swarmplot(data=tips, x='day', y='total_bill', size=4, color='black', alpha=0.7)
plt.title("요일별 결제 금액 분포 (Violin + Swarm)")
plt.show()
● Joint Plot (관계 + 분포 동시 분석)
→ 산점도와 히스토그램을 합쳐놓은 그래프

# kind='hex': 데이터가 많은 곳을 육각형으로 진하게 표시 (벌집 모양)
# kind='reg'로 하면 회귀선도 그려준다.
sns.jointplot(
data=tips,
x='total_bill',
y='tip',
kind='hex',
color='#4CB391',
height=7
)
plt.suptitle("Joint Plot (Hexbin)", y=1.02) # 제목 위치 조정
plt.show()
▶ Plotly
→ 정적인 보고서를 넘어, 웹페이지나 대시보드에서 사용자와 상호작용하는 ' Interactive chart ' 차트이다.
● 반응형 산점도( Interactive Scatter)
→ 마우스를 올리면 해당 값에 대한 정보를 확인할 수 있다.
● 트리맵(Treemap)과 선버스트(Sunburst)
→ Matplotlib으로 그리기 힘들었던 계층형 데이터를 완벽하게 시각화할 수 있다.
● 트리맵(Treemap)

# path: 계층 순서 (요일 -> 시간 -> 성별)
# values: 사각형 크기 (총 금액)
fig = px.treemap(
tips,
path=['day', 'time', 'sex'],
values='total_bill',
color='total_bill', # 금액에 따라 색상 진하게
color_continuous_scale='RdBu',
title="요일 > 시간 > 성별 매출 구조 (Treemap)"
)
fig.show()
● 선버스트(Sunburst)

tips['time'] = tips['time'].astype(str)
# 전처리: None 대신 빈 문자열('')이나 특정 문자를 넣습니다.
tips.loc[tips['sex'] == 'Female', 'time'] = '(Unknown)'
# 3. 선버스트 그리기
fig = px.sunburst(
tips,
path=['day', 'sex', 'time'],
values='total_bill',
color='day',
color_discrete_sequence=px.colors.qualitative.Pastel,
title="고객층 상세 분석"
)
fig.show()
● 애니메이션 차트
→ 가상의 시나리오를 만들어 변화를 관찰할 수 있다. (ex. "손님 수(Size)가 1명인 테이블부터 6명인 테이블까지 순차적으로 보여주세요." )
▶ 그래프 시각화 시 주의할 점
→ 강조하고 싶은 부분은 진한 색, 덜 강조하고 싶은 부분은 연한 색을 사용하는 것처럼, 그래프를 시각화할 시 디자인적으로나 한눈에 보기 좋은 분석 자료를 만들기 위해 색상을 유의하여 사용하는 것이 좋다.
matplotlib을 사용하여 시각화 자료를 만드는 것보다, seaborn을 활용하여 자료를 생성하는 것이 훨씬 더 코드 입력하기에 간단하고 더 다양하게 표현할 수 있다는 것을 배우며 많이 놀랐다. Python을 이용하여 시각화 자료를 만들어봐야 간단한 그래프를 그리는 정도가 다일 것이라고 생각했는데, 생각보다 다양한 그래프와 움직이는 그래프까지 만들어낼 수 있다는 부분이 신기했다.
오늘의 TIL에 전 시간에 알아보다가 만 회귀분석에 대해 작성하려고 했는데,,,
내가 작성하던 수시 채용 공고가 사라져서 너무 당혹스럽고 멘탈이 흔들려서 못했다.
남아있는 다른 직무로 지원하자고 마음을 다잡았지만 기분이 너무 좋지 않다..ㅡㅜ
내일 이어서 알아가 봐야겠다.
'내일배움 본캠프' 카테고리의 다른 글
| [내일배움 본캠프] 프로젝트 시작! (1) | 2026.06.08 |
|---|---|
| [내일배움 본캠프]데이터 전처리&시각화 Last day.. (0) | 2026.06.05 |
| [내일배움 본캠프] 데이터 시각화 그래프, 선형회귀1 (0) | 2026.06.02 |
| [내일배움 본캠프] 결측치 제거, 채움 & K-NN (0) | 2026.06.01 |
| [내일배움 본캠프] Outlier처리하기, 속성과 메서드 (1) | 2026.05.29 |