출처: NotebookLM 「오늘코드todaycode」 라벨 '데이터 시각화' (영상 76개, 중복 제외 75개) · 2026.10.05 생성
선택된 75개 영상(중복 제외)을 3회로 나누어 요약한 결과를 합친 것입니다.
(데이터톤 05) 파이썬 데이터 분석 02 - Pandas, seaborn 으로 시각화 하기(정부혁신 국민포럼 페이지 분석)
- 국민참여 혁신 제안 페이지 크롤링 데이터의 제안 시작일과 마감일(문자열)을
pd.to_datetime()으로 변환하여 날짜형 처리 기반을 마련했습니다. dt.weekday및apply(lambda x: ...)를 활용해 숫자로 표현된 요일 데이터를 '월~일' 문자로 매핑하여 새로운 컬럼을 생성했습니다.- 연도와 월을 조합한 파생변수를 통해 월별 제안 건수를 추적하고, 특정 시점(2018년 10월 등)에 제안 및 투표 수가 집중되는 현상을 파악했습니다.
sns.pointplot()과sns.barplot()으로 월별 평균 투표 수와 신뢰구간(편차)을 표현하고, 월요일과 수요일에 제안 건수가 상대적으로 많음을 확인했습니다.- 일자별 제안 건수를 시각화하고
rotate=60옵션을 부여하여 축 라벨 겹침을 방지하고 특정 날짜의 제안 집중 현상을 색인했습니다. - 2018년 10월 투표 수 2,000건 이상을 기록한 인기 제안(난임 지원 확대 등)의 세부 주제와 득표 양상을 별도로 추출해 분석했습니다.
sns.distplot()시각화를 통해 대부분의 제안은 투표 수가 0건에 가깝고 상위 득표 제안은 극소수에 불과하다는 편향성을 검증했습니다.sort_values(ascending=False)로 투표 수 상위 제안 및 '일반행정' 등 카테고리별 주요 제안 내용을 확인했습니다.
(데이터톤 06) 파이썬 데이터 분석 03 - 워드클라우드로 텍스트 시각화 하기(정부혁신 국민포럼 페이지 분석)
- 크롤링한 제안 데이터의 텍스트 분석을 위해 KoNLPy의 매캡(Mecab) 형태소 분석기를 로드하고 결측치는 공백 처리 후 명사만 추출했습니다.
- 추출한 명사 데이터를 기반으로 워드클라우드(WordCloud) 시각화 함수를 정의하여 주요 단어의 출현 빈도를 한눈에 파악했습니다.
- 카테고리별 분석 시 '일반행정' 분야에서는 혁신, 정부, 공무원, 문제점 등의 키워드가 자주 등장함을 확인했습니다.
- '보건복지' 분야는 장애, 복지, 육아, 주차 등이, '안전' 분야는 차량, 경찰, 주차, 인도 등의 단어가 빈번히 추출되었습니다.
- 투표 수가 가장 높았던 난임·부린·임신 관련 제안들을 정규표현식으로 필터링하고 워드클라우드를 그려 난임 부부의 고충 키워드를 관찰했습니다.
- 미세먼지, 자동차, 100표 이상 획득 제안 등 관심 키워드별로 서브셋을 구성하여 주요 이슈 단어들을 개별 추출했습니다.
- 워드클라우드는 정밀한 정량 분석보다는 전체 텍스트에 포함된 직관적인 핵심 단어 및 주제 흐름을 시각적으로 훑어보는 데 유용합니다.
[1/3] scatterplot, lineplot으로 같은 그래프를 그릴 수 있음에도 relplot 이 있는 이유는?
- Seaborn 공식 튜토리얼의
Visualizing statistical relationships문서 흐름에 따라 통계적 연관성 시각화 기법을 다룹니다. relplot은scatterplot과lineplot을 내장하고 있으며 서브플롯(FacetGrid)을 한 번에 그려주는 고수준(High-level) 인터페이스입니다.- 디폴트 설정(
kind='scatter')은 수치형 변수 간 산점도를 그리며tips데이터셋의 전체 금액과 팁 간의 양의 관계를 보여줍니다. kind='line'으로 변경하면 수치 데이터의 시간 흐름이나 연속적 변화량 추이를 선그래프로 나타낼 수 있습니다.- 단일 차트는
scatterplot이나lineplot단독으로도 작성 가능하지만, 여러 범주형 변수를 기준으로 격자형 서브플롯을 만들 때는relplot이 훨씬 유용합니다.
[1/3] 수치형 단일변수의 빈도수 분포 distplot, kdeplot, rugplot
- 수치형 단일 변수(Univariate)의 분포를 확인하기 위해
sns.distplot()을 활용하며 히스토그램과 커널 밀도 추정(KDE) 곡선을 동시에 표현합니다. kde=False옵션을 주면 커널 밀도 곡선을 제외하고 히스토그램과 빈도수 축만 깔끔하게 출력할 수 있습니다.bins파라미터 조정을 통해 구간(통)의 개수를 설정하여 데이터의 세부 분포 형태를 다각도로 탐색합니다.hist=False로 지정하거나sns.kdeplot()을 사용하면 적분값이 1이 되는 밀도 추정 곡선만 유연하게 시각화합니다.shade=True옵션으로 KDE 곡선 하단 면적에 색상을 채우고,rug=True또는sns.rugplot()으로 실제 데이터 위치를 카페트 털 모양으로 바닥 축에 표시합니다.
[1/3] 파이썬 데이터 시각화 seaborn lmplot 예제 따라하기 - 평균, 표준편차, 상관계수, 회귀값이 같은 데이터 시각화
- Seaborn 갤러리의 대표 예제인 앤스컴 쿼텟(Anscombe's Quartet)을 통해 데이터 시각화의 절대적 필요성을 설명합니다.
- 앤스컴 쿼텟은 4개의 서로 다른 데이터셋이 동일한 평균, 표준편차, 피어슨 상관계수, 선형 회귀선을 갖도록 설계되어 있습니다.
- 단순 요약 통계량만 확인하면 4개 데이터셋이 동일해 보이지만, 실제 그래프를 그리면 연속 분포, 곡선 형태, 이상치(Outlier) 영향 등 완전히 다른 패턴을 드러냅니다.
- 통계 수치 계산만으로는 발견할 수 없는 이상치나 왜곡 구조를 시각화를 통해 직관적으로 파악할 수 있음을 입증합니다.
- 알베르토 카이로의 데이터사우루스(Datasaurus Dozen) 예시를 함께 소개하며 동일 통계량에서 공룡이나 공 모양 등 다채로운 차트가 나올 수 있음을 언급합니다.
[1/4] 수치형 vs 범주형 변수를 표현하는 그래프를 서브플롯으로 그려보자
- 수치형 변수와 범주형 변수의 관계를 시각화하는
catplot계열 인터페이스와 범주형 시각화 전반의 구조를 다룹니다. - 범주형 산점도 도구로 데이터 점이 한쪽에 겹치는 것을 방지하기 위해 점을 점진적으로 흩뿌려주는
stripplot과swarmplot을 사용합니다. - 분포 표현 도구로는 4분위수와 이상치를 상자로 나타내는
boxplot, 박스플롯 단점을 보완한boxenplot, 밀도를 결합한violinplot이 제공됩니다. - 통계 추정 도구로는 평균 및 신뢰구간을 그리는
pointplot과barplot, 단순 빈도수를 세는countplot을 다룹니다. catplot은 이러한 개별 범주형 차트들을kind파라미터 지정만으로 통합 전환하고 서브플롯 작성을 용이하게 만듭니다.
[1/4] 추세 분석, 상관 분석, 회귀 계수 등을 분석할 수 있는 선형회귀 코드 한 줄로 시각화 하기
sns.regplot()은 산점도와 함께 선형 회귀선(Linear Regression Line) 및 신뢰구간을 단 한 줄의 코드로 자동 계산하여 출력합니다.- 독립변수 X와 종속변수 Y 간의 양/음의 선형 상관관계 및 회귀 추세선을 직관적으로 파악할 수 있습니다.
- 프랜시스 골턴과 칼 피어슨의 역사적 연구에서 유래한 회귀 분석의 개념 및 전체 평균으로 돌아가려는 경향성을 안내합니다.
- 선형 회귀는 추세 분석, 역학 조사, 재무/경제 예측 및 머신러닝 지도학습 등 다양한 산업·학술 분야에 광범위하게 응용됩니다.
- 더 정밀한 통계 리포트나 회귀 계수 산출이 필요한 경우
statsmodels라이브러리를 병행 사용하는 방안을 권장합니다.
[1/5] plotly 를 통한 파이썬 동적 시각화 - 쉬운 방법(express) vs 복잡한 방법(graph_objs)
- Plotly 라이브러리를 사용하면 정적 이미지 차트를 넘어 마우스 호버, 확대, 필터링이 가능한 동적(Interactive) 시각화를 구현할 수 있습니다.
plotly.express(px)는 Seaborn과 유사한 고수준 인터페이스를 제공하여 적은 코드로 손쉽게 인터랙티브 차트를 작성합니다.plotly.graph_objects(go)는 저수준(Low-level) 인터페이스로 세부 속성을 세밀하게 제어할 수 있으나 설정 코드가 다소 복잡합니다.- 금융 및 주식 데이터 분석을 위한 캔들차트(Candlestick), OHLC 차트, 3D 차트 및 지도 시각화를 강력하게 지원합니다.
cufflinks라이브러리를 활용하면 판다스 데이터프레임의plot()문법에iplot()을 붙여 Plotly 차트로 즉시 변환할 수 있습니다.
[2/20] ETF분석 종목코드의 숫자가 사라진다면?! 데이터로드와 결측치 확인 시각화
- CSV 파일 로드 시 6자리 숫자 종목코드의 앞자리 '0'이 제거되는 현상을 막기 위해
dtype={'종목코드': np.object_}로 문자열 지정하여 불러옵니다. df.shape,head(),tail(),info()를 실행하여 행·열 크기, 데이터 타입 및 메모리 사용량을 다각도로 점검합니다.isnull()또는isna()를 실행한 후sum()을 수행하여 컬럼별 결측치 개수를 집계하고,mean() * 100으로 결측치 비율(%)을 산출합니다.- 해외 지수 기초 ETF의 NAV 미제공이나 상장 3개월 미만 상품의 3개월 수익률 부재 등 결측치 발생의 원인을 데이터 특성 기반으로 해석합니다.
sns.heatmap(df.isnull(), cbar=False, cmap='gray')를 활용하여 전체 데이터프레임 내 결측치의 위치 분포를 시각적으로 확인합니다.
[2/2] 이변량, 다변량 데이터 표현하기 countplot, catplot
countplot에hue파라미터를 지정하면 특정 범주형 변수의 세부 그룹별(생존 여부, 클래스, 성별 등) 빈도수를 다른 색상의 막대로 표현합니다.- 타이타닉 데이터셋 분석 시 객실 등급(
class) 및 덱(deck) 정보별 탑승객 분포와 생존율 차이를hue옵션으로 입체적으로 비교했습니다. catplot을 사용하면col및row파라미터를 지정하여 여러 변수에 대한countplot서브플롯을 한 번에 생성할 수 있습니다.col_wrap옵션으로 한 줄에 표시할 서브플롯 개수를 제한하여 다변량 범주 데이터를 깔끔한 격자 형태로 시각화합니다.- 단일 그래프에 너무 많은
hue그룹을 넣으면 가독성이 떨어지므로catplot을 이용해 차트를 분할해 탐색하는 것이 좋습니다.
[2/3] scatterplot, lineplot으로 같은 그래프를 그릴 수 있음에도 relplot 이 있는 이유는?
scatterplot과relplot은 동일한 단일 산점도를 그릴 수 있지만,relplot은 서브플롯 분할 기능인col과row옵션을 갖추고 있습니다.relplot의hue옵션으로 색상을 다르게 표현하고,style옵션으로 점의 모양(동그라미, X 등)을 범주별로 다르게 지정합니다.size및sizes=(min, max)옵션을 부여하면 수치형 파생변수의 크기에 따라 산점도 마커 점의 크기를 동적으로 조절합니다.col='smoker',row='time'옵션을 지정하면 흡연 여부와 식사 시간대별 산점도를 격자형 서브플롯으로 깔끔하게 분리 출력합니다.- 단일 차트 스타일링에는
scatterplot을 쓰고, 복수 변수를 결합해 격자형 차트로 확장할 때는relplot을 사용하는 것이 핵심 차이점입니다.
[2/3] 수치형 2변수의 빈도수 분포 jointplot
sns.jointplot()은 두 수치형 변수 간의 이변량(Bivariate) 산점도와 각 변수의 단일변수 밀도/히스토그램 분포를 중앙과 상단·우측 축에 동시에 보여줍니다.kind='scatter'(기본값)는 두 변수 좌표를 점으로 찍고 외곽 상단/우측에 각각의 히스토그램을 배치합니다.kind='hex'로 변경하면 육각형 벌집 모양(Hexbin) 그라데이션으로 데이터 밀집도를 표현하여 대용량 점 겹침 문제를 완화합니다.kind='kde'로 설정하면 이변량 커널 밀도 등고선을 그리고 외곽에 개별 KDE 곡선을 함께 출력합니다.sns.kdeplot()으로 2D 등고선을 직접 그리고shade=True및cmap옵션을 부여하면 등고선 내부 면적을 색상 그라데이션으로 표현할 수 있습니다.
[2/3] 여러 종목의 수익률 어떻게 시각화 할까?!
- Matplotlib/Seaborn 차트에 한글 폰트(Mac
AppleGothic, WinMalgun Gothic) 및 마이너스 깨짐 방지(unicode_minus=False) 설정을 적용합니다. - 주가 스케일이 크게 다른 두 종목(예: 삼성전자와 LG화학)의 추이를 비교할 때
secondary_y옵션으로 2축 그래프를 구성해 기울기를 비교합니다. - 주가 금액 스케일 차이를 극복하기 위해 첫 번째 거래일 종가 가격으로 전체 행을 나눈 뒤 1을 빼주어 기간별 상대 수익률(%)로 표준화합니다.
plt.subplots(1, 2)로 1행 2열 서브플롯 공간을 만들고 좌측에는 2축 주가 차트, 우측에는 기준일 대비 상대 수익률 차트를 나란히 배치해 비교합니다.- 수익률 데이터프레임의
hist(bins=50)를 호출하여 0%를 중심으로 한 종목별 일단위 수익률 분포와 변동성 폭을 시각적으로 검증합니다.
[2/3] 파이썬 데이터 시각화 - seaborn lmplot 같은 통계적 수치를 가지는 데이터셋의 요약을 pandas의 describe와 corr으로 보기
- 앤스컴 쿼텟 데이터셋을 판다스 데이터프레임으로 로드하고
describe()를 실행하여 전체 44개 데이터의 요약 통계량을 구합니다. dataset컬럼 기준(I, II, III, IV)으로 서브셋을 분리하여 각 데이터셋별describe()를 산출하면 X·Y의 평균 및 표준편차가 서로 동일함을 확인합니다.df.corr()메소드로 피어슨 상관계수를 구하면 4개 데이터셋 모두 소수점 셋째 자리까지 거의 같은 상관계수(~0.816)를 반환합니다.- 수치적 수치와 상관계수가 완전히 동일함에도 불구하고, 데이터를 그래프로 옮기기 전까지는 세부 구조적 차이를 인지할 수 없음을 수치 데이터로 입증합니다.
[2/4] 선형회귀 다변수 시각화
sns.lmplot()은regplot과 달리hue,col,row옵션을 지원하여 범주형 그룹별 회귀선 서브플롯을 생성할 수 있습니다.hue='smoker'를 지정하면 흡연자와 비흡연자 그룹별로 색상과 선형 회귀선 기울기를 각각 다르게 추정하여 시각화합니다.col='day'옵션으로 요일별 서브플롯을 나누고col_wrap=2로 한 줄에 2개씩 배치하여 다변량 조건부 회귀 분석 차트를 구성합니다.truncate=False옵션을 지정하면 데이터 분포 범위를 넘어 회귀선 축 끝까지 선을 연장하여 표시합니다.- 수치 데이터 컬럼에
jitter옵션을 주어 겹친 점을 퍼뜨리거나,x_estimator=np.mean및ci=95를 주어 이산 구간별 평균과 신뢰구간 밴드를 표시할 수 있습니다.
[2/4] 수치형 vs 범주형 변수의 서브플롯 쉽게 그리기 - stripplot, swarmplot
stripplot은 범주형 축 위에 수치 점들을 흩뿌려 나타내며,jitter=False로 설정하면 일직선상에 겹쳐진 스캐터 형태로 출력됩니다.swarmplot은 점들이 서로 겹치지 않도록 중심축에서 좌우로 비집고 확장 배치되어 범주별 데이터 밀도와 개수를 직관적으로 표현합니다.catplot의kind='strip'또는kind='swarm'으로 호출하면col옵션을 통해 식사 시간대(time)별 서브플롯으로 용이하게 분할할 수 있습니다.hue파라미터로 성별이나 흡연 여부 색상을 구분하고,order=['Sat', 'Sun', 'Thur', 'Fri']를 통해 축 라벨 표시 순서를 맞춤 지정합니다.orient='h'또는 X·Y 축 변수 위치를 맞바꿔 지정하면 가로형 범주 산점도 차트로 변환할 수 있습니다.
[2/5] 대한민국 인구통계 point lineplot으로 그리기
- 위키피디아 '대한민국의 인구' 문서에서 1925년부터 2019년까지의 추계인구, 출생자 수, 사망자 수 데이터를 파싱해 시각화에 활용했습니다.
- Matplotlib 한글 폰트 설정 및
set_matplotlib_formats('retina')를 선언해 라벨 깨짐을 막고 선명도를 확보했습니다. sns.pointplot()으로 연도별 추계인구 변화를 그려 1,000만 명대에서 5,000만 명대로 꾸준히 증가한 흐름을 관찰했습니다.plt.xticks(rotation=60)옵션으로 연도 라벨 기울기를 조절하여 축 라벨 겹침 현상을 해결했습니다.sns.lineplot()으로 출생자 수 추이를 그려 1950~1970년대 100만 명대이던 출생아 수가 최근 30만 명대로 급감하는 구조적 인구 변화를 확인했습니다.
[3/20] ETF분석 어떤 종류의 상품이 많을까? - 한 개의 변수 분석과 시각화
- 범주형 데이터 요약을 위해
df.describe(include='object')또는exclude='number'를 활용해 유일값 개수(unique), 최다 빈도 항목(top), 빈도수(freq)를 파악합니다. df.nunique()를 실행하여 스칼라 수치형으로 표기된 컬럼이라도 유일값 개수가 적으면 범주형 변수로 가공·판단하는 기준을 제시합니다.df['유형'].value_counts()로 각 ETF 상품 카테고리별 개수를 집계하고,normalize=True를 부여해 백분율 비중(%)을 구합니다.sns.countplot(data=df, y='유형')을 작성해 카테고리별 빈도수를 횡방향 막대그래프로 정돈하여 출력합니다.order=df['유형'].value_counts().index로 오더 인덱스를 전달하여 최다 빈도순으로 카테고리 막대를 깔끔하게 정렬합니다.
[3/3] scatterplot, lineplot으로 같은 그래프를 그릴 수 있음에도 relplot 이 있는 이유는?
fmri데이터셋을 활용해 시간 흐름(timepoint)에 따른 신호 변화량(signal)의 평균과 신뢰구간 밴드를relplot(kind='line')으로 구현합니다.ci=None옵션을 지정하면 선 주변의 신뢰구간 투명 그림자를 제거하고 중앙 추세선만 깔끔하게 표시합니다.ci='sd'옵션을 설정하면 신뢰구간 대신 표준편차(Standard Deviation) 범위를 그림자로 변경하여 표현합니다.estimator=None으로 설정하면 평균 집계를 하지 않고 각 데이터 포인트 전체의 생 파형을 겹쳐서 그립니다.col='region',row='event'옵션을 적용하여 뇌 부위 및 자극 이벤트 조건별 2차원 격자형 서브플롯으로 수월하게 확장합니다.
[3/3] 일별 시세 시각화 2축 그래프, 과학적 표기법?!
- 종목명 입력 시 상장 종목 목록에서 코드를 조회하여
FinanceDataReader로 일별 시세를 수집하는 자동화 함수를 작성했습니다. - 종가(
Close) 시리즈에plot()을 적용하여 주가 추이 선그래프를 빠르게 생성했습니다. - 데이터프레임 전체 컬럼에
plot(subplots=True, figsize=(10, 8))를 적용하여 시가, 고가, 저가, 종가, 거래량 차트를 개별 서브플롯으로 분할했습니다. hist(bins=20)를 호출하여 주가 및 거래량 변수의 구간별 도수분포 히스토그램을 검증했습니다.- 주가와 거래량을 단일 차트에 그릴 때 스케일 차이로 종가가 바닥에 붙는 현상을
secondary_y='Volume'옵션으로 2축 분리하여 해결했습니다. - 차트 축이나 기술통계 출력 시 \\(1e6\\) (\\(1 \times 10^6\\)) 형태로 표기되는 지수 표기법(Scientific Notation)의 의미와 읽는 법을 설명했습니다.
[3/3] 수치형 다변수의 분포 PairGrid, pairplot
sns.pairplot()은 데이터프레임 내 모든 수치형 변수 쌍(Pair) 간의 이변량 산점도와 대각선 위치의 단일변수 분포를 대칭 격자로 보여줍니다.- 아이리스(
iris) 데이터셋을 전달하여 꽃잎·꽃받침의 길이와 너비 간 산점도 매트릭스를 단 한 줄로 시각화했습니다. hue='species'파라미터를 부여하면 품종별 데이터가 다른 색상으로 구분되며 대각선 그래프가 자동 KDE 밀도 곡선으로 전환됩니다.sns.PairGrid()를 사용하면 대각선(map_diag), 상단 산점도(map_upper), 하단 등고선(map_lower)에 각각 다른 차트 종류를 직접 매핑할 수 있습니다.
[3/3] 파이썬 데이터 시각화 - seaborn lmplot과 regplot의 차이 신뢰구간의 의미와 hue 등 다양한 옵션 사용하기
lmplot은regplot과 달리hue파라미터를 통해 그룹별 선형 회귀선과 신뢰구간 밴드를 개별 색상으로 분리 표현할 수 있습니다.ci=None으로 신뢰구간 밴드를 숨기거나ci=95(기본값) 및ci=50등으로 신뢰구간 범위를 가조정합니다.col='dataset'및col_wrap=2옵션을 활용해 앤스컴 쿼텟 4개 데이터셋의 회귀선 차트를 2x2 격자 서브플롯으로 시각화합니다.scatter_kws={'s': 50, 'alpha': 0.8}파라미터를 내장하여 산점도 마커의 크기, 투명도 및 색상을 자유롭게 커스텀 스타일링합니다.
[3/4] 비선형 회귀, 국소회귀, 잔차 시각화로 표현하기
- 직선 선형 회귀가 부적합한 데이터 분포에
order=2파라미터를 부여하여 2차 다항식 비선형 회귀 곡선을 맞춤 추정합니다. - 극단적 이상치가 존재할 때
robust=True옵션을 설정하여 이상치의 영향을 배제한 로버스트 회귀선을 도출합니다. - 종속변수가 0과 1의 범주형 이진 데이터인 경우
logistic=True파라미터를 부여하여 시그모이드 형태의 로지스틱 회귀 곡선을 시각화합니다. lowess=True옵션을 지정하면 국소 가중 회귀(LOESS/LOWESS)를 적용하여 데이터의 비선형 흐름을 유연하게 추적합니다.sns.residplot()을 사용해 예측 회귀선으로부터의 잔차(Residuals) 분포를 시각화하여 회귀 모형의 가정 적합성을 검증합니다.
[3/4] 수치형 vs 범주형 변수의 서브플롯 - boxplot, boxenplot, violinplot
boxplot은 1·2·3 사분위수 상자, IQR, 위스커(수염) 및 IQR 1.5배 범위를 벗어난 점 형태의 이상치를 나타냅니다.- 판다스
groupby('day')['total_bill'].describe()로 요일별 25%, 50%, 75% 값 및 최소/최댓값을 산출하고 박스플롯 지표와 상호 검증했습니다. boxenplot은 대용량 데이터 분포를 세분화된 구간 상자로 나타내어 박스플롯보다 풍부한 사분위 분포 정보를 제공합니다.violinplot은 박스플롯 내부에 커널 밀도 곡선(KDE)을 대칭으로 결합하여 연속적 데이터 밀도 모양을 직관적으로 보여줍니다.violinplot에split=True및hue옵션을 지정하면 하나의 바이올린 반쪽씩 서로 다른 범주 그룹 데이터를 합성해 비교할 수 있습니다.
[3/5] 대한민국 인구통계 출생사망자수를 같은 그래프에서 그리기
- 위키피디아 인구 데이터에서 출생자 수와 사망자 수 컬럼을 선택하여 단일 좌표계 위에 겹쳐서 시각화했습니다.
sns.pointplot()으로 출생자 수와 사망자 수를 각각 그리고,color='orange'등 색상을 다르게 지정하여 두 지표의 교차 추이를 나타냈습니다.- 1950년대 6.25 전쟁 시기 사망자 수 급증과 그 이후 출생아 수의 가파른 증가(베이비붐)를 한눈에 파악했습니다.
- 1970년대 이후 출생아 수는 급감하고 사망자 수는 점진적으로 늘어나며 최근 두 곡선이 교차(데드크로스)하는 구조적 저출산·고령화 현상을 시각적으로 입증했습니다.
- 판다스
df.set_index('연도')[['출생자수', '사망자수']].plot(figsize=(15, 4))로 동일한 이중 선그래프를 간편하게 작성하는 방법도 함께 실습했습니다.
[통계청X오늘코드] 파이썬 활용 강좌 ⑥ MDIS를 활용한 경제활동인구조사 데이터 시각화 하기
- MDIS(마이크로데이터 통합서비스)에서 추출하여 전처리한 연령별 구직단념자 현황 데이터를 매트플롯립(Matplotlib)과 플롯리(Plotly)로 시각화했습니다.
- Matplotlib의
plt.pie()함수를 사용하여 10대부터 60대 이상까지 연령대별 구직단념자 비율을 파이 차트로 구현했습니다. startangle=90및counterclock=False옵션을 지정하여 12시 방향부터 시계방향 순서로 연령대가 차례대로 배치되도록 정돈했습니다.autopct='%1.1f%%'파라미터를 설정해 각 연령대 항목별 퍼센트 비중을 소수점 첫째 자리까지 표기했습니다.- Plotly Express의
px.pie()를 활용하여 마우스 호버 시 세부 인원수와 비율이 노출되는 인터랙티브 파이 차트를 생성했습니다. update_traces()의textinfo및direction='clockwise'옵션으로 시계방향 정렬과 표시 스타일을 커스텀했습니다.color_discrete_sequence파라미터로 핑크·옐로우 계열 그라데이션 컬러를 적용해 뉴스 기사 스타일의 시각화를 완성했습니다.
mermaid를 활용하여 Gantt chart를 활용해 프로젝트의 타임라인을 시각화하는 방법을 소개합니다. AI 모델 서비스 출시 일정은 덤으로 알아봅니다.
- 퍼플렉시티(Perplexity) RAG 검색을 통해 GPT-1부터 GPT-4o, o1-preview, 클로드, 트랜스포머 논문까지 주요 AI 모델의 출시 타임라인을 수집했습니다.
- 디자인 도구 없이 텍스트 다이어그램 코드로 간트 차트(Gantt Chart)를 자동 생성해 주는 머메이드(Mermaid) 오픈소스 문법을 활용했습니다.
- 머메이드 간트 차트 스크립트를 작성하여 AI 모델별 출시 시점과 프로젝트 마일스톤을 시각적 타임라인으로 구현했습니다.
- 간트 차트 코드 내의 날짜 수치를 수정하여 모델 간 출시 시기와 유지 기간을 자유롭게 커스텀 조절했습니다.
- 구글의 트랜스포머(Transformer) 논문 발표(2017년) 항목을 코드 맨 위로 끌어올려 AI 혁신의 시작점으로 재배치했습니다.
- 머메이드 간트 차트를 활용하면 AI 모델 출시 일정뿐만 아니라 다양한 프로젝트 타임라인을 장표나 보고서용으로 신속하게 시각화할 수 있습니다.
1년치 시계열 데이터 변화량을 선그래프로 그리기
- 2016년 1월 1일부터 12월 30일까지 365일간의 난수를 고정(
random_state) 생성하여 4개 컬럼(A, B, C, D)을 갖는 데이터프레임을 구축했습니다. pd.date_range()함수로 일 단위(freq='D') 365일 시계열 날짜 인덱스를 생성해 데이터프레임에 적용했습니다.df.rolling(window=7).mean()기능을 활용하여 7일(1주일) 이동평균을 산출하고 단기 변동성 노이즈를 부드럽게 완화했습니다.- X축과 Y축을 별도로 지정하지 않고 이동평균 데이터프레임 전체를
sns.lineplot()에 전달해 4개 컬럼의 추이를 한 번에 그렸습니다. - Seaborn의
palette='tab10'옵션을 설정하여 각 변수(A, B, C, D) 컬럼별로 명확히 구분되는 선 색상을 부여했습니다. - 와이드 폼(Wide-form) 구조의 데이터프레임을 내장 시각화 함수에 그대로 입력하여 시계열 변화량을 효율적으로 비교했습니다.
박스플롯과 분포도를 합친 그래프가 있다고? 바이올린? violin plot을 tips 데이터로 그려보기
sns.violinplot()은 박스플롯(Boxplot)의 요약 통계량과 커널 밀도 추정(KDE) 곡선을 결합하여 데이터 분포 모양을 바이올린 형태로 시각화합니다.tips데이터셋의 요일별(day) 전체 식사 금액(total_bill) 분포를 바이올린 플롯으로 그려 요일별 편차와 밀집 구간을 파악했습니다.- X축과 Y축 변수의 위치를 바꾸어 지정함으로써 가로형 바이올린 플롯 형태로 유연하게 전환했습니다.
hue='smoker'파라미터를 추가하여 흡연자와 비흡연자 그룹별 바이올린 곡선을 개별 색상으로 비교했습니다.split=True옵션을 부여하여 하나의 바이올린 양쪽 반쪽에 서로 다른 범주(흡연/비흡연) 데이터를 통합해 직관적으로 비교했습니다.inner='quartile'옵션을 설정해 바이올린 내부 면적에 사분위수(25%, 50%, 75%) 지점 선을 점선 형태로 명확히 표시했습니다.
planets 데이터로 scatterplot 산점도, 상관계수, 상관분석 이해하기
- Seaborn의 내장
planets외계 행성 데이터셋을 로드하여 관측 거리(distance)와 궤도 주기(orbital_period) 간의 산점도를 그렸습니다. hue='year'옵션을 지정하여 관측 연도 수치 데이터에 따라 마커 점의 색상을 그라데이션으로 표현했습니다.size='mass'및sizes=(20, 200)옵션을 설정해 행성 질량 수치에 따라 산점도 마커 크기를 동적으로 조절했습니다.df.corr()로 두 변수 간 피어슨 상관계수를 산출하여 -0.034 수준의 상관관계가 거의 없는 상태임을 검증했습니다.sns.lmplot()으로 회귀선을 그렸을 때 극단적 이상치(Outlier)로 인해 전체 차트 스케일과 회귀선이 왜곡되는 현상을 확인했습니다.- 산점도 시각화를 통해 극단 이상치의 존재 위치를 직관적으로 탐색하고 조건부 색인으로 이상치를 필터링하는 전처리를 수행했습니다.
[4/5] 최근50간 데이터를 슬라이싱으로 나눠서 시각화하기
- 위키피디아 인구 통계 데이터프레임에서 파이썬 슬라이싱 문법(
df[-50:])을 적용해 최근 50년간(1970~2019년)의 데이터만 추출했습니다. - 추출한 서브셋을 판다스 내장
plot()함수에 전달하고figsize=(15, 8)로 크기를 조절하여 출생자 수 및 사망자 수 추이를 시각화했습니다. sns.lineplot()에도 동일하게 최근 50년 슬라이싱 데이터(df[-50:])를 전달하여 최근 인구 변화 흐름을 선명하게 부각시켰습니다.- 1970년대 이후 급격히 감소하는 출생자 수와 점진적으로 증가하는 사망자 수의 추이를 또렷하게 대비시켰습니다.
- 전체 시계열 중 특정 분석 기간만을 슬라이싱으로 추출함으로써 저출산·고령화 데드크로스 경향성을 가독성 높게 분석했습니다.
21 넘파이 NumPy 로 이런 것도 만들 수 있다고?! 시각화에 빠져든다~
- 넘파이(NumPy) 배열 데이터를 매트플롯립(
plt)과 연동하여 다차원 그래프로 시각화하는 방법론을 다뤘습니다. - 1차원 넘파이 배열을
plt.plot()에 전달하여 인덱스 대비 수치 데이터의 상승 및 하강 추이를 선그래프로 출력했습니다. np.linspace()로 0부터 5까지 균등 분할된 배열을 생성하고 마커 색상(red), 선 스타일, 점 모양(동그라미, 삼각형)을 설정했습니다.np.meshgrid()를 활용해 2차원 격자 좌표 배열을 생성하고plt.imshow()및cmap='coolwarm'으로 수치 밀도 이미지를 시각화했습니다.- 3차원 공간 생성을 위해
plt.figure()에서projection='3d'서브플롯 축을 생성했습니다. - 2차원 메시그리드와
np.sin(),np.sqrt()연산 결과를ax.plot_surface()에 전달해 입체적인 3D 수곡면 그래프를 구현했습니다.
[인프런 리뉴얼][6/9] folium 으로 Marker, CircleMarker 로 그려보기
- 폴리움(Folium) 라이브러리를 사용해 서울시 스타벅스와 이디야 매장 위치 데이터를 대화형 지도 위에 시각화했습니다.
- 데이터프레임 내 위도(
lat)와 경도(lng)의 평균값(mean())을 구하여folium.Map(location=[...], zoom_start=12)의 중심 좌표로 지정했습니다. tiles='Stamen Toner'옵션을 설정하여 매장 마커가 도드라지도록 깔끔한 흑백 톤의 지도 배경 스타일을 적용했습니다.for반복문과 인덱스 색인을 활용해 매장 좌표를 순회하며folium.CircleMarker를 생성했습니다.- 조건문(
if/else)을 작성하여 이디야 매장은 파란색(blue), 스타벅스 매장은 초록색(green) 원형 마커로 구분하여 표시했습니다. - 마커의
tooltip파라미터에 매장 상호명과 도로명 주소를 결합한 f-string 문자열을 전달해 마우스 호버 시 정보를 띄웠습니다. - 지도 확대 탐색을 통해 스타벅스는 주로 큰 대로변에, 이디야는 대로변 안쪽 이면도로 상권에 입지해 있음을 시각적으로 검증했습니다.
다이아몬드 데이터셋으로 박스플롯을 보완한 boxenplot 으로 boxplot, violinplot 과 비교해 보기 - seaborn diamonds boxen
- Seaborn의
diamonds데이터셋을 활용해 박스플롯의 한계를 보완한sns.boxenplot()의 시각적 특징을 다뤘습니다. - 기존
boxplot은 1·2·3 사분위수와 이상치만 표시되어 수염(Whisker) 구간 내부의 세부 데이터 분포를 확인하기 어렵습니다. boxenplot은 사분위수를 넘어선 사분위 구간 상자들을 여러 단계로 겹쳐 나타내어 대용량 데이터의 수염 구간 밀도를 정밀하게 보여줍니다.scale='linear'옵션을 부여하면 이상치 영역 끝까지 분위수 상자가 선형 스케일로 정밀하게 확장되어 표현됩니다.- 동일한 다이아몬드 투명도(
clarity) 및 캐럿(carat) 변수로boxplot,boxenplot,violinplot을 비교 시각화했습니다. - 요약 통계량이 동일하더라도 실제 데이터 분포 형태가 크게 다를 수 있음을 시각화를 통해 직접 확인했습니다.
PairGrid 서브플롯을 한 번에 그려주는 pairplot 과 비슷하지만 다르다?!
sns.PairGrid()는 데이터프레임 내 여러 수치형 변수 간의 서브플롯 격자를 세밀하게 제어하는 고수준 클래스입니다.sns.pairplot()이 단 한 줄로 산점도 매트릭스를 자동 생성하는 반면,PairGrid는 대각선·상단·하단 영역별 차트를 개별 지정할 수 있습니다.g = sns.PairGrid(df, hue='species')객체를 생성하고g.map_diag(sns.kdeplot)을 호출해 대각선 위치에 품종별 밀도 곡선을 그렸습니다.g.map_upper(sns.scatterplot)을 호출하여 대각선 기준 상단 그리드에는 품종별 산점도를 배치했습니다.g.map_lower(sns.kdeplot)을 지정하여 대각선 기준 하단 그리드에는 2차원 밀도 등고선(KDE) 그래프를 출력했습니다.- 대각선을 경계로 상단과 하단에 서로 다른 시각화 도구를 매핑함으로써 다변량 수치 데이터를 다각도로 분석했습니다.
seaborn 선그래프, 산포도, 회귀선을 그리는 서브플롯 쉽게 그리기relplot lmplot
sns.relplot()과sns.lmplot()은 FacetGrid 기반으로 작동하여 서브플롯 분할과 범주형 구분을 수월하게 수행합니다.relplot()에kind='line'을 지정하고x='time',y='firing_rate'를 설정해 시간 흐름에 따른 선그래프 서브플롯을 그렸습니다.hue='coherence'로 선의 색상을 구분하고size='choice'를 주어 범주별 선의 굵기를 다르게 표현했습니다.col='align'파라미터를 설정해 조건 그룹별 가로 격자 서브플롯으로 깔끔하게 분할 시각화했습니다.height=3,aspect=0.75파라미터를 조절하여 각 서브플롯의 높이와 가로 비율을 맞춤 스타일링했습니다.sns.lmplot()을 사용해 스모커 데이터에 대한 산점도 위에 그룹별 회귀선과 신뢰구간 밴드를 동시에 출력했습니다.
[통계청X오늘코드] 파이썬 활용 TIP_②국가통계포털(KOSIS)자료로 소비자물가지수 꺾은선 그래프 그리기
- KOSIS 소비자물가지수 데이터에서 총지수 항목만을 필터링하고
pct_change(12) * 100연산을 적용해 전년 동월 대비 물가 변동률(%)을 산출했습니다. - 전년도 비교 대상이 없어 발생한 초기 12개월 분량의
NaN결측치를dropna()로 제거했습니다. plt.figure(figsize=(15, 5))로 가로가 긴 도화지를 생성하고plt.plot()에 시점과 물가 변동률 데이터를 전달하여 꺾은선 그래프를 그렸습니다.marker='o'옵션을 지정하여 각 시점별 데이터 포인트 위치에 동그라미 마커를 명시적으로 표시했습니다.for문을 돌며plt.text(x, y, s)메소드를 호출해 그래프 각 마커 포인트 위에 실제 물가 변동률 수치를 텍스트로 출력했습니다.f"{val:.1f}"f-string 포맷팅을 적용해 수치를 소수점 첫째 자리로 반올림 표기하고, Y축 좌표 offset(y + 0.07)을 주어 선과 글자가 겹치지 않게 배치했습니다.
[통계청X오늘코드] 파이썬 활용 TIP_③국가통계포털(KOSIS)자료로 소비자물가지수 주요 품목 막대 그래프 그리기
- 달걀, 상추, 마늘, 돼지고기, 라면, 경유, 휘발유, 전세 등 주요 품목을 추출하여
groupby('품목별').pct_change(12) * 100으로 품목별 물가 상승률을 계산했습니다. - 2021년 9월 시점의 품목별 전년 동월 대비 데이터만 슬라이싱하여 상승률 기준 내림차순 정렬했습니다.
sns.barplot()을 사용하고y='품목별',x='전년동월대비'로 지정하여 품목별 상승률을 가로 막대그래프로 구현했습니다.order파라미터에 품목 리스트를 지정하여 달걀(43.4%), 상추(35.3%) 순으로 막대 순서를 정돈했습니다.palette='Oranges_r'옵션을 설정하여 상승률이 높은 품목일수록 진한 오렌지색으로 표현되는 그라데이션을 적용했습니다.ax.patches개체를 순회하며ax.text()로 막대 끝 지점 좌표(width + 0.5)에 해당 품목의 상승률 수치를 텍스트로 표기했습니다.
3.1 [2/3 연합뉴스 토픽 분석] DACON KLUE 텍스트 단어개수와 길이 분포 displot으로 시각화하기
- 연합뉴스 기사 제목 데이터에서
df['title'].apply(len)을 적용하여 기사 제목의 문자 길이 파생변수(leng)를 생성했습니다. df['title'].apply(lambda x: len(x.split()))를 통해 띄어쓰기 기준 단어 개수 파생변수(word_count)를 생성했습니다.set(x.split())으로 중복 단어를 제거한 후 길이를 세어 고유 단어 개수 파생변수(unique_word_count)를 추가했습니다.sns.histplot()을 사용하여 문자 길이 분포를 히스토그램으로 출력하고bins=30으로 구간 막대 개수를 조절했습니다.sns.displot()을 활용해col='topic',hue='topic'파라미터를 부여함으로써 7개 뉴스 카테고리별 제목 길이 분포 서브플롯을 작성했습니다.height=3,aspect=1.5,col_wrap=2파라미터로 서브플롯의 크기와 배치 레이아웃을 정돈하여 기사 제목 분포 특성을 분석했습니다.
[4/4] FacetGrid와 PairGrid를 통한 lmplot, pairplot 으로 서브플롯 그리기
sns.lmplot()내부에 FacetGrid가 구현되어 있어 코드 한 줄로 다변량 조건부 회귀선 서브플롯을 그릴 수 있음을 다뤘습니다.tips데이터셋에서x='total_bill',y='tip',hue='smoker'를 지정해 흡연 여부별 회귀선과 신뢰구간을 다르게 시각화했습니다.truncate=False옵션을 부여하여 회귀선이 데이터 영역에 끊기지 않고 차트 축 끝까지 확장되도록 설정했습니다.col='day',col_wrap=2파라미터를 설정하여 요일별 서브플롯을 2열 격자로 배치했습니다.row='time',col='smoker'를 동시에 지정하여 식사 시간대와 흡연 여부 조합에 따른 2차원 회귀선 격자를 구현했습니다.sns.jointplot(..., kind='reg')를 통해 두 변수 간의 회귀선과 외부 축의 단일 변수 히스토그램을 결합 시각화했습니다.
[4/4] 수치형 vs 범주형 변수의 서브플롯 barplot, pointplot, countplot
- 타이타닉 데이터셋을 활용해 범주형 변수의 통계 추정 차트인
barplot,pointplot,countplot의 특징을 다뤘습니다. sns.barplot()은 기본적으로 Y축 수치 변수의 평균값(estimator=mean)을 막대 높이로 그리고 95% 신뢰구간(ci=95)을 검은색 선으로 표시합니다.ci=None으로 설정하면 신뢰구간 선을 숨겨 차트를 깔끔하게 정돈하고 연산 속도를 대폭 향상시킵니다.sns.countplot()은 단순 데이터 빈도수(개수)를 세어 막대로 표현하며 단일 범주형 변수 탐색에 특화되어 있습니다.sns.pointplot()은 점과 선으로 평균 추정치와 신뢰구간을 표현하여 범주 간 변화 기울기를 직관적으로 나타냅니다.sns.catplot()인터페이스를 사용하고kind='bar',kind='count',kind='point'를 지정하여 동일한 서브플롯 격자로 가공했습니다.log_scale=True옵션을 부여하여 수치 스케일 차이가 큰 요금(fare) 데이터를 로그 스케일 축으로 변환하여 분포를 탐색했습니다.
[5/6] seaborn으로시각화는 pandas plot과 시각화 할 때 어떤점이 다를까?
- 판다스 내장
plot()은 사용자가 GroupBy 연산이나 피봇 테이블로 수치를 미리 집계한 후 X축과 Y축을 지정해 그려야 합니다. - Seaborn 시각화 라이브러리는 가공되지 않은 타이디 데이터(Tidy Data)를 그대로 입력받아 내부에서 통계 연산(평균, 신뢰구간)을 자동으로 처리합니다.
sns.barplot(data=df, x='연도', y='출생아수')를 실행하면 각 연도 내 1~12월 출생아 수의 평균값과 95% 신뢰구간을 알아서 연산해 출력합니다.sns.lineplot()에hue='월'을 지정하는 것만으로 12개 월별 시계열 변화 추이 곡선을 개별 색상 그라데이션으로 분리 시각화합니다.- 복잡한 연산 코드를 직접 작성할 필요 없이 데이터프레임과 컬럼명 지정만으로 집계와 시각화가 동시에 완성되는 Seaborn의 편의성을 다뤘습니다.
[4/6] 통계청 출생아수 pandas plot으로 그리기
- 통계청 전국 출생아 수 데이터를 로드하여
df.set_index(['연도', '월'])['출생아수']로 복합 인덱스를 설정했습니다. - 판다스 내장
plot(figsize=(15, 4))메소드를 호출해 1997년부터 2017년까지 전체 기간의 출생아 수 추이를 선그래프로 나타냈습니다. - 전체 시계열 차트를 통해 연도별 출생아 수가 지속적으로 감소하는 가운데 매년 특정 주기로 상하 요동치는 계절성(Seasonality)이 존재함을 파악했습니다.
- 판다스 슬라이싱(
df[-36:],df[-48:])을 적용하여 최근 3년 및 4년간의 월별 출생아 수 데이터만 별도로 시각화했습니다. - 최근 데이터 슬라이싱 분석을 통해 매년 1월과 3월에 출생아 수가 가장 많고, 12월에 출생아 수가 가장 적게 나타나는 계절적 패턴을 입증했습니다.
다변량 데이터 시각화 - pairplot 으로 서브플롯 쉽게 그리기, iris, tips, mpg 다양한 데이터셋으로 그려보기
sns.pairplot()은 데이터프레임 내 모든 수치형 컬럼 간의 대칭 산점도 매트릭스를 단 한 줄의 코드로 자동 생성합니다.- 아이리스(
iris), 팁(tips), 연비(mpg) 등 다양한 데이터셋을pairplot()에 전달하여 다변량 변수 간의 관계를 탐색했습니다. hue='origin'파라미터를 추가하여 제조국(미국, 유럽, 일본) 범주별 데이터 포인트를 서로 다른 색상으로 분리 시각화했습니다.hue파라미터 적용 시 대각선 위치의 그래프가 기존 히스토그램에서 커널 밀도 추정(KDE) 곡선으로 자동 전환되었습니다.corner=True옵션을 부여하면 대각선 기준 상단 중복 영역을 제외하고 하단 삼각 행렬만 출력하여 가독성과 계산 속도를 높였습니다.- 결측치(
NaN)가 존재할 경우pairplot실행 시 에러가 발생하므로dropna()전처리를 사전에 수행하는 원칙을 다뤘습니다.
다원변량 분산분석(MANOVA) three-way ANOVA, catplot 으로 서브플롯 그리기 FacetGrid와의 차이점
- 3개 이상의 독립 범주형 변수가 종속 수치 변수에 미치는 영향을 분석하는 3원 분산분석(Three-way ANOVA) 개념을 설명했습니다.
- 운동 데이터셋(
exercise)을 로드하여 식습관(diet), 운동 종류(kind), 시간(time)에 따른 맥박수(pulse) 변화를 시각화했습니다. sns.catplot()인터페이스를 활용하여x='time',y='pulse',hue='kind',col='diet'를 지정해 3차원 범주 결합 서브플롯을 생성했습니다.kind='point'를 설정하여 시간 경과에 따른 맥박수 평균의 변화 기울기를 선과 점으로 표현했습니다.capsize=0.2파라미터를 부여하여 포인트 플롯 오차 범위 상하단에 모자 모양의 캡(Cap)을 씌워 표준편차 범위를 명확히 했습니다.sns.catplot()은 내부적으로 FacetGrid를 가동하므로plt.gcf()스타일 지정 대신height와aspect파라미터로 서브플롯 크기를 직접 조절합니다.
[인프런 리뉴얼] [7/15] 이변량 수치형 데이터 분석하기 - 상관계수를 구해보고 회귀선 그려보기
- 두 수치형 변수 간의 선형 관련성을 나타내는 피어슨 상관계수(Pearson Correlation Coefficient)의 수식적 원리와 해석 기준을 다뤘습니다.
df.corr()메소드를 호출하여 위도, 경도, 건물본번지 등 전체 수치 컬럼 간의 상관계수 행렬을 산출했습니다.sns.heatmap(df.corr(), annot=True, cmap='Blues')를 실행하여 수치 표기와 함께 파란색 그라데이션 히트맵을 생성했습니다.np.triu()마스크를 적용해 상대적으로 중복되는 상단 대각선 영역을 하얗게 가리고 하단 상관계수만 깔끔하게 출력했습니다.sns.scatterplot()에 경도(x)와 위도(y)를 전달하고 데이터 1,000건 샘플링(df.sample(1000))을 적용해 속도를 최적화했습니다.sns.regplot()및sns.lmplot(..., hue='시도명')을 활용해 음의 상관관계(-0.99)를 갖는 위도·경도 데이터 위에 지도 회귀선을 추정했습니다.
[jointplot] 산점도+회귀+도수분포+밀도를 하나의 그래프로 표현하기 seaborn reg kde hex
sns.jointplot()은 두 수치 변수의 산점도와 외곽 축의 단일 변수 히스토그램을 단일 그래프로 결합 표현합니다.tips데이터셋의 전체 금액(total_bill)과 팁(tip) 데이터를 전달하여 기본 산점도와 히스토그램 축을 구성했습니다.kind='reg'옵션을 부여하여 중앙 산점도 위에 선형 회귀선과 신뢰구간을 추가하고 외곽 축에 KDE 곡선을 결합했습니다.kind='kde'로 설정하면 중앙 영역을 2차원 밀도 등고선으로 변환하고 외곽 축에 부드러운 1차원 KDE 밀도 곡선을 출력했습니다.kind='hex'로 변경하면 육각형 벌집 모양(Hexbin) 그리드 그라데이션으로 데이터 점 밀집도를 표현하여 점 겹침을 방지했습니다.color='m'파라미터를 부여해 차트 전체 색상을 자줏빛으로 커스텀하고 피어슨 상관계수를 상호 검증했습니다.
[4/13] 질문번호로 빈도수 그래프를 그려주는 함수를 만들어보자 - kaggle survey2020
- 캐글 설문조사 단일 선택 문항 번호(Q1, Q2, Q3 등)를 파라미터로 받아 빈도수 차트를 출력하는
show_count_plot(qno)사용자 정의 함수를 제작했습니다. sns.countplot()에 Y축 문항 컬럼을 지정하고df[qno].value_counts().index를order에 전달하여 최다 응답순 정렬을 자동화했습니다.question_dict[qno]딕셔너리 맵핑을 활용해ax.set_title()로 설문 질문 원문 텍스트를 차트 상단 제목에 자동으로 표기했습니다.figsize=(10, 6)파라미터를 기본값으로 설정하고 필요한 경우figsize를 인자로 전달받아 그래프 크기를 가변 조정하도록 구현했습니다.palette='Blues_r'옵션을 적용하여 최다 응답 항목일수록 진한 색상이 칠해지도록 시각적 그라데이션을 적용했습니다.- 연령대(Q1), 성별(Q2), 거주국가(Q3), 학력(Q4), 직업(Q5), 코딩 경력(Q6) 문항에 만든 함수를 재사용하여 빠르게 빈도수를 탐색했습니다.
[5/5] plotly express를 통한 여러가지 시각화 하기
- Plotly Express(
px) 라이브러리를 활용해 마우스 호버, 확대/축소, 선택 필터링이 가능한 동적 차트를 구현했습니다. - FAANG(페이스북, 아마존, 애플, 넷플릭스, 구글) 5개 종목의 주가 데이터를 로드하고 기준일 대비 일별 수익률(%) 변환을 수행했습니다.
px.line()에 일별 수익률 데이터프레임을 전달하여 5개 종목의 수익률 추이를 선그래프로 나타냈습니다.facet_col='company',facet_col_wrap=2파라미터를 설정해 종목별 수익률 추이를 동적 서브플롯으로 분할 시각화했습니다.px.scatter()에 X·Y 종목을 지정하고marginal_x='histogram',marginal_y='violin'을 설정해 동적 조인트 플롯을 구현했습니다.px.box()및px.violin(..., points='all')을 사용하여 범주별 분포와 전체 데이터 포인트를 대화형으로 탐색했습니다.
다양한 범주형 변수에 따라 생존률은 어떻게 달라질까? - seaborn PairGrid
sns.PairGrid()클래스를 범주형 데이터 시각화에 적용하여 다변량 조건별 생존율 차트를 구축했습니다.- Y축 변수로 생존 여부(
survived, 0 또는 1)를 지정하고, X축 변수 리스트(x_vars)에 객실 등급(class), 성별(sex), 탑승자 유형(who), 혼자 탑승 여부(alone)를 설정했습니다. g.map(sns.pointplot)을 호출하여 각 범주별 평균 생존율과 신뢰구간을 점과 선으로 한눈에 비교 시각화했습니다.g.set(ylim=(0, 1))옵션을 설정해 모든 서브플롯의 Y축 범위를 0(0%)부터 1(100%)까지 동일하게 고정했습니다.- 1등급 객실, 여성, 어린이 그룹일수록 생존율이 높고, 3등급 객실 및 성인 남성 그룹은 생존율이 낮음을 다차원적으로 검증했습니다.
g.map(sns.barplot)및g.map(sns.violinplot)으로 매핑 함수만 변경하여 동일한 서브플롯 구조를 막대 및 바이올린 차트로 전환했습니다.
수치형 VS 수치형 데이터 표현에 적합한 seaborn scatterplot
sns.scatterplot()은 X축과 Y축 데이터가 모두 수치형(Quantitative)일 때 데이터의 전체적 분포와 경향을 파악하기에 적합합니다.- 다이아몬드(
diamonds) 데이터셋에서 캐럿(carat)과 가격(price) 수치 간의 관계를 산점도로 표현하여 수치적 비례 관계를 시각화했습니다. hue='clarity'옵션을 지정하면 다이아몬드 투명도 범주에 따라 마커의 색상을 다르게 분리하여 세부 특성을 다차원 분석할 수 있습니다.hue_order파라미터를 사용하면 범주형 범례의 정렬 순서를 명시적으로 변경하여 원하는 차원 순서대로 색상을 매핑할 수 있습니다.size='depth'파라미터로 다이아몬드 깊이 수치에 따라 마커 원의 크기를 조절하고sizes=(1, 8)로 동적 마커 크기 범위를 제한했습니다.palette옵션으로 전체 마커 색상 그라데이션을 스타일링하고,sns.despine()을 적용해 테두리 선을 지워 깔끔한 차트를 구현했습니다.- 단일 산점도 그래프 위에 색상, 마커 크기 등 다양한 차원을 동시에 표현할 수 있으나, 너무 많은 변수를 시각화하면 가독성이 떨어지므로 적절한 데이터 선별이 중요합니다.
판다스 공식문서 시각화 튜토리얼 따라하기 pandas tutorial plotting
- 판다스(Pandas) 내장 시각화 기능은 internal API를 통해 매트플롯립(Matplotlib)을 엔진으로 사용하여 데이터프레임을 바로 시각화합니다.
- 공기질(
air_quality) 데이터셋의 웹 URL 데이터를 직접 로드하면서index_col=0및parse_dates=True로 시계열 날짜 인덱스를 자동 구축했습니다. - 데이터프레임 전체에
df.plot()을 호출하면 각 위치별 측정값의 시계열 변화 곡선이 한 번에 그려집니다. - 특정 컬럼(예: 파리 측정소)만 지정하여
df['station_paris'].plot()을 실행하면 해당 단일 시계열 데이터만 추출하여 시각화할 수 있습니다. df.plot.scatter(x='...', y='...')로 파리와 런던의 공기질 수치 간 상관관계를 산점도로 표현하고alpha=0.5옵션으로 투명도를 조절해 점 겹침을 방지했습니다.df.plot.box()를 호출해 사분위수 및 이상치를 상자수염그림으로 확인하고,df.plot.hist(bins=50, alpha=0.5)로 구간별 도수분포 히스토그램을 작성했습니다.subplots=True파라미터를 부여하면 컬럼별 시계열 및 분포 차트를 개별 서브플롯 격자로 분할하여 한눈에 비교할 수 있습니다.plt.subplots(nrows, ncols, figsize=...)로 도화지 그리드를 먼저 생성한 뒤ax파라미터로 지정하여 원하는 위치에 판다스 차트를 자유롭게 매핑할 수 있습니다.
파이썬 시각화 - 씨본 자동차 사고 데이터로 음주운전과 전체사고를 비교해 보기, seaborn sns barplot
- Seaborn의 내장 데이터셋인
car_crashes를 활용하여 지역별 자동차 사고 건수와 음주운전 사고 비율을 비교 분석했습니다. sort_values('total', ascending=False)를 적용하여 전체 사고 건수가 가장 많은 지역 순서대로 데이터프레임을 내림차순 정렬했습니다.sns.barplot()의y='abbrev',x='total'을 설정해 사고 발생 건수를 횡방향(Horizontal) 막대그래프로 구현했습니다.color='b'및sns.set_color_codes('pastel')를 활용하여 파스텔 톤 파란색 막대로 전체 자동차 사고 건수를 먼저 시각화했습니다.- 동일한 X축 상에
x='alcohol'및sns.set_color_codes('muted')를 적용해 진한 파란색 막대를 겹쳐 그려 전체 사고 중 음주운전 사고의 비중을 입체적으로 나타냈습니다. ax.legend()옵션으로 전체 사고와 음주운전 사고 범례를 우측 하단에 배치하고sns.despine()으로 상단·우측 테두리를 제거했습니다.- 시각화를 통해 특정 지역(ND 등)이 전체 사고 발생 수 대비 음주운전 사고 비율이 상대적으로 매우 높다는 인사이트를 도출했습니다.
수치, 카테고리 데이터로 시각화 하기 - 행성 거리와 측정방법에 따라 box, swarm plot 그리기
- 외계 행성 데이터셋(
planets)을 다루며 범주형 관측 방법(method)과 수치형 관측 거리(distance) 간의 관계를 시각화했습니다. - 관측 거리 수치의 편차가 매우 커서 차트 스케일이 왜곡되는 문제를 해결하기 위해
ax.set_xscale('log')또는np.log()를 적용해 로그 스케일로 정규화했습니다. sns.boxplot()을 활용해 관측 방법별 관측 거리 데이터의 중앙값, 사분위수 및 이상치(Outlier) 분포를 횡방향 박스플롯으로 표현했습니다.sns.swarmplot()을 박스플롯 위에 중첩(Overlay)하여 개별 행성 데이터 포인트의 실제 위치와 밀집도를 점으로 함께 나타냈습니다.size=3,color='.3',linewidth=0파라미터로 스웜 플롯 마커 점의 크기와 색상을 정밀하게 조절하여 박스플롯 가독성을 높였습니다.- 박스플롯의 요약 통계량과 스웜 플롯의 실제 점 분포를 결합함으로써 데이터 수염 구간 내부의 밀도와 이상치 패턴을 다각도로 검증했습니다.
파이썬 시각화 - tips 데이터 요일별, 시간대별 상자수염그림 boxplot 그리기
tips데이터셋을 활용해 요일(day) 및 식사 시간대별 전체 식사 금액(total_bill)의 분포를 상자수염그림(boxplot)으로 표현했습니다.sns.boxplot(x='day', y='total_bill', data=tips)를 실행하여 요일별 중앙값(50%), 사분위수(25%, 75%) 및 이상치를 한눈에 파악했습니다.hue='smoker'파라미터를 추가하여 흡연자와 비흡연자 그룹별 지출 금액 분포를 각각 다른 색상의 상자로 비교했습니다.palette옵션에m및g커스텀 컬러를 부여하거나set_theme(style='ticks')스타일을 지정해 박스플롯 분위기를 커스텀했습니다.hue='time'으로 변경하거나order=['Dinner', 'Lunch']를 지정하여 점심과 저녁 식사 시간대별 팁 및 결제 금액 차이를 비교했습니다.sns.catplot(kind='box', col='time')인터페이스를 사용하여 점심과 저녁 시간대별 박스플롯을 서브플롯으로 깔끔하게 분할 시각화했습니다.
파이썬 데이터 시각화 - 막대그래프 python seaborn grouped barplots
sns.catplot()인터페이스를 활용하여 범주형 데이터 시각화 도구인 막대그래프(Barplot)의 그룹화 및 서브플롯 생성을 실습했습니다.- 타이타닉(
titanic) 데이터셋을 로드하여 객실 등급(class) 및 성별(sex)에 따른 생존율(survived) 변화를 그룹화 막대그래프로 나타냈습니다. kind='bar'옵션을 부여하고 Y축에 이진 수치 변수(survived, 0 또는 1)를 입력하면 Seaborn이 내부에서 자동으로 평균 생존율을 연산해 막대 높이로 그립니다.- 막대 상단에 자동으로 생성되는 검은색 세로선은 95% 신뢰구간(
ci=95)을 의미하며,ci=None으로 숨기거나ci='sd'로 표준편차 범위를 표기할 수 있습니다. palette파라미터에muted등 색상 팔레트를 부여하고sns.despine(left=True)를 적용해 그래프 테두리 선을 말끔히 정리했습니다.sns.barplot()단독 함수로도 동일한 막대그래프를 그릴 수 있지만,catplot()을 사용하면col파라미터를 통해 다변량 서브플롯으로 수월하게 확장할 수 있습니다.
시계열 데이터 시각화하기 [4/4] -statmodels
- 시계열 데이터의 추세(Trend), 계절성(Seasonality), 잔차(Residual) 분석을 위한
statsmodels라이브러리의 시계열 분해(seasonal_decompose) 기법을 다뤘습니다. - 항공 승객 데이터셋(
flights)의date컬럼을 판다스 인덱스로 설정(set_index('date'))하여 시계열 분석 전용 데이터프레임을 생성했습니다. from statsmodels.tsa.seasonal import seasonal_decompose모듈을 불러온 뒤seasonal_decompose(df['passengers'])를 실행했습니다.- 기본 모형인 가법 모형(
model='additive')을 적용하면 관측 데이터, 연도별 지속 상승 추세, 매년 반복되는 계절성, 무작위 잔차 그래프를 4개 축으로 분할 출력합니다. - 승객 수가 시간이 지남에 따라 변동 폭이 커지는 데이터 특성에 맞추어 승법 모형(
model='multiplicative')을 지정하여 정밀하게 분해했습니다. - 승법 모형 분석 결과 잔차(Residuals) 수치가 1 부근에 안정적으로 수렴함을 확인하고, 여름철 및 연말 성수기 승객 집중 현상을 통계적으로 검증했습니다.
파이썬 시각화 - 바이올린플롯을 그라데이션으로 숫자의 크기를 표현하고 싶다면?
- 바이올린 플롯(
violinplot)에 그라데이션 색상을 적용하여 데이터 수치의 크기 변화를 시각적으로 강조하는 테크닉을 다뤘습니다. np.random.default_rng()기반의 난수 생성기로 다차원 배열 데이터를 생성하고 판다스 데이터프레임으로 변환했습니다.sns.cubehelix_palette()또는 커스텀 컬럼 팔레트를 사용해 수치가 커지거나 작아짐에 따라 점진적으로 옅어지거나 진해지는 그라데이션 컬러맵을 생성했습니다.sns.violinplot(data=df, palette=palette)을 실행하여 컬럼별 수치 분포 밀도 곡선과 함께 그라데이션 색상을 다채롭게 출력했습니다.inner='quartiles'파라미터를 설정하여 바이올린 내부 면적에 25%, 50%, 75% 사분위 지점을 점선으로 표기했습니다.inner='point'또는inner='box'로 내부 요약 형태를 가공함으로써 데이터 밀도 모양과 사분위수 지표를 단일 차트에서 효과적으로 전달했습니다.
분산분석-분산과 표준편차 구하기, catplot 과 FacetGrid 의 차이점
- 3원 분산분석(Three-way ANOVA) 개념과 운동(
exercise) 데이터셋의 조건별 맥박수(pulse) 분산(var()) 및 표준편차(std(),np.sqrt()) 계산을 실습했습니다. - 조건별(휴식
rest, 걷기walking, 뛰기running)로 데이터프레임을 쿼리(query()) 색인하여 운동 강도가 높아질수록 맥박수의 분산과 표준편차가 급격히 커짐을 확인했습니다. sns.kdeplot()으로 휴식, 걷기, 뛰기 조건의 맥박수 밀도 곡선을 하나의 도화지에 겹쳐 그려 분포의 퍼짐 정도(분산)를 시각적으로 검증했습니다.sns.FacetGrid(df, col='diet')객체를 직접 생성하고.map(sns.kdeplot, 'pulse')을 호출해 서브플롯을 수동으로 구성하는 방식을 다뤘습니다.sns.catplot(data=df, x='time', y='pulse', hue='kind', col='diet', kind='point')를 사용하면 FacetGrid를 따로 선언하지 않고 단 한 줄로 범주형 서브플롯을 완성할 수 있습니다.FacetGrid는 사용자가 매핑 함수를 자유롭게 커스텀할 때 유용하고,catplot은 완성된 시각화 함수를 빠르게 분할 생성할 때 유용함을 비교 정리했습니다.
파이썬으로도 엑셀처럼 그래프에 값을 표시할 수 있다? 자동차 생산 데이터로 막대그래프를 그리고 값을 표현해 보기
- 엑셀 차트처럼 막대그래프 상단에 실제 수치 텍스트 라벨을 직접 표기하는 방법론을 다뤘습니다.
- 자동차 데이터셋(
mpg)에서 제조국(origin) 컬럼의value_counts()를 산출하여 국가별 생산 대수(USA 249대, Japan 79대, Europe 70대)를 집계했습니다. sns.countplot(data=mpg, x='origin')으로 막대그래프를 생성하고 해당 차트 객체를g변수에 할당했습니다.for반복문과mpg['origin'].value_counts()집계 결과를 이용해 각 막대의 X축 인덱스와 Y축 수치 위치 좌표를 계산했습니다.g.text(x, y, s, ha='center')메소드를 호출하여 각 막대 중앙 상단 좌표에 실제 데이터 수치를 텍스트로 표기했습니다.ha='center'(Horizontal Alignment) 옵션을 부여하여 글자가 막대 중앙에 정렬되도록 조정하고 폰트 크기 및 색상을 커스텀 스타일링했습니다.
파이썬 데이터 시각화 막대그래프 서브플롯 그리기와 스타일 지정하기 seaborn - barplot subplot palette
sns.barplot()과 커스텀 팔레트(palette) 옵션을 결합하여 막대그래프 서브플롯을 작성하는 기법을 다뤘습니다.np.arange()와 문자열 배열을 생성하여 예제 수치 데이터를 구축하고plt.subplots(1, 3, figsize=...)로 1행 3열 서브플롯 공간을 마련했습니다.- 첫 번째 서브플롯에는 연속형 색상 팔레트(
palette='Blues_d')를 적용해 수치가 커질수록 진해지는 단색 막대그래프를 그렸습니다. - 두 번째 서브플롯에는 발산형 팔레트(
palette='vlag')를 지정하고 기준선(ax.axhline(0, color='k'))을 그어 양수/음수 변화량을 대칭 색상으로 나타냈습니다. - 세 번째 서브플롯에는 범주형 팔레트(
palette='deep')를 부여하고ax.set_ylabel()로 축 라벨을 부여했습니다. sns.despine(bottom=True)를 적용해 하단 축을 지우고plt.tight_layout()을 실행해 서브플롯 간 여백 겹침을 정돈했습니다.
시계열데이터 시각화에 좋은 선그래프 lineplot 그리기
- 시계열 및 연속형 수치 변화 관찰에 최적화된
sns.lineplot()의 핵심 기능과 파라미터를 다뤘습니다. - 뇌파 측정 데이터셋(
fmri)을 로드하여 시간 흐름(timepoint)에 따른 신호 변화량(signal) 추이를 선그래프로 시각화했습니다. - 동일한 시간대에 복수의 데이터 관측치가 존재할 경우 Seaborn이 자동으로 평균값을 중앙 선으로 그리고 95% 신뢰구간을 그림자 밴드로 표시합니다.
hue='region'파라미터를 지정하여 정수리 및 전두엽 등 측정 뇌 부위별 신호 변화 곡선을 다른 색상으로 분리 시각화했습니다.style='event'옵션을 추가하여 자극 이벤트 종류에 따라 점선, 실선 등 선 스타일을 다르게 부여했습니다.sns.pointplot()과 비교 실행하여 라인 플롯은 신뢰구간이 연속적인 면적 그림자로 표현되고 포인트 플롯은 점과 세로선으로 표기되는 차이를 확인했습니다.
회귀선의 잔차(residuals)를 시각화 하고 scatterplot vs regplot vs residplot 과 비교하기
- 선형 회귀 모형의 오차 및 적합성을 검증하기 위한 잔차 시각화 도구인
sns.residplot()을 다뤘습니다. sns.scatterplot()은 순수 좌표점만 그리고,sns.regplot()은 좌표점 위에 추정된 선형 회귀선과 신뢰구간을 함께 그립니다.sns.residplot(x=x, y=y)를 실행하면 각 데이터 지점이 선형 회귀선으로부터 떨어진 거리(잔차, \\(y - \hat{y}\\))를 Y=0 기준선 위에 산점도로 표시합니다.lowess=True(LOESS) 옵션을 부여하면 잔차점들의 국소 가중 회귀 곡선을 빨간색 점선으로 표시하여 잔차의 무작위성 패턴을 검증합니다.- 잔차들이 Y=0 기준선을 중심으로 위아래에 무작위로 고르게 분포하면 선형 회귀 모형이 적합하고, 특정 곡선 패턴을 띠면 비선형 모형 도입이 필요함을 해석했습니다.
서브플롯으로 회귀선 그리기 seaborn iris lmplot - multiple regression
sns.lmplot()을 사용하여 범주형 조건별 선형 회귀선 서브플롯을 구축하는 방법론을 다뤘습니다.- 붓꽃(
iris) 데이터셋을 로드하고sns.regplot()단독 실행 시에는 전체 데이터를 통틀어 하나의 회귀선만 그려짐을 확인했습니다. sns.lmplot(x='sepal_length', y='sepal_width', hue='species', data=iris)를 실행하여 3개 품종별로 분리된 회귀선과 신뢰구간 밴드를 구현했습니다.- 전체 데이터 회귀선과 품종별 회귀선의 기울기가 서로 반대로 나타나는 심프슨의 역설(Simpson's Paradox) 현상을 시각적으로 입증했습니다.
col='species'파라미터를 추가하여 품종별 회귀선 차트를 3개의 가로 서브플롯으로 깔끔하게 분할 시각화했습니다.ci=None으로 신뢰구간 그림자를 지우거나truncate=False로 회귀선을 축 끝까지 연장하는 맞춤 스타일링을 적용했습니다.
항공수송 인원 수 pivot 으로 표형태로 변환 뒤에 수치의 많고 적음에 따라 표현하기 seaborn heatmap airpassenger
- 2차원 표 형태 데이터를 색상 그라데이션으로 시각화하는
sns.heatmap()기법을 다뤘습니다. - 항공 승객 데이터셋(
flights)을df.pivot(index='month', columns='year', values='passengers')로 재구조화하여 월x연도 2차원 매트릭스를 생성했습니다. sns.heatmap(df_pivot)을 실행하여 승객 수가 많을수록 옅은 색, 적을수록 진한 색으로 표현되는 기본 히트맵을 생성했습니다.annot=True및fmt='d'옵션을 설정하여 각 히트맵 셀 내부에 실제 정수 승객 수 수치를 명시적으로 출력했습니다.cmap='Blues'파라미터를 지정하여 승객 수가 많을수록 파란색이 진해지는 직관적인 색상 스케일로 전환했습니다.linewidths=0.5를 지정해 셀 간 경계선을 만들고, 연도가 지날수록 승객 수가 늘어남과 동시에 매년 7·8월에 승객이 집중되는 패턴을 파악했습니다.
카테고리 형태의 데이터를 산점도로 표현한다면? swarmplot 과 violinplot 비교하기
- 범주형 축 위에 수치 데이터를 표현하는 산점도 도구인
sns.swarmplot()과sns.violinplot()의 특성을 비교했습니다. - 범주형 데이터에 일반
scatterplot을 적용하면 점들이 일직선상에 가려져 밀도를 파악할 수 없는 한계가 발생합니다. pd.melt()로 가로형 데이터를 세로형 타이디 데이터로 변환한 후sns.swarmplot()을 적용하여 데이터 포인트들이 겹치지 않게 옆으로 펼쳐지도록 시각화했습니다.sns.violinplot()을 함께 그려 커널 밀도 추정 곡선 모양과 스웜 플롯 점들의 분포가 완벽히 일치함을 시각적으로 검증했습니다.sns.violinplot()차트 위에sns.swarmplot(color='k', alpha=0.5)을 중첩해 그려 밀도 곡선과 개별 데이터 점 위치를 동시에 나타냈습니다.
파이썬 Python으로 다양한 시각화 라이브러리 사용하기 - matplotlib, seaborn, pandas, ggplot, plotnine, plot.ly, Bokeh
- 파이썬 생태계의 다양한 데이터 시각화 라이브러리들의 특성과 장단점을 비교 정리했습니다.
- Matplotlib: 가장 기초가 되는 저수준(Low-level) 라이브러리로 세밀한 커스텀이 가능하지만 코드 길이가 길고 문법이 복잡합니다.
- Seaborn: Matplotlib 기반의 고수준(High-level) 라이브러리로 적은 코드로 아름다운 통계 차트와 자동 집계 기능을 제공합니다.
- Pandas Plotting: 데이터프레임에서
.plot()으로 직접 호출하며 전처리 후 빠르고 간편하게 차트를 생성합니다. - Plotnine (ggplot): R 언어의
ggplot2그래픽 문법(Grammar of Graphics,+연산자 체이닝)을 파이썬에 이식한 라이브러리입니다. - Plotly & Bokeh: 자바스크립트 기반의 동적(Interactive) 시각화 도구로 마우스 호버, 확대, 필터링 기능을 지원합니다.
수치 데이터의 분포, 히스토그램 표현하기 - seaborn distplot subplots
- 수치형 단일 변수의 빈도 분포를 나타내는
sns.distplot()과 서브플롯 배치 기법을 다뤘습니다. np.random.default_rng()로 정규분포 데이터셋을 생성하고sns.distplot(df)을 실행하여 히스토그램과 커널 밀도 추정(KDE) 곡선을 동시에 표현했습니다.hist=False로 설정해 부드러운 KDE 밀도 곡선만 남기거나,kde=False로 지정해 순수 도수분포 히스토그램만 출력했습니다.rug=True파라미터를 추가하여 데이터 포인트의 실제 위치를 바닥 축 위에 카페트 털 모양(Rug)으로 표시했습니다.bins=30옵션으로 막대 구간 개수를 조절하고,plt.subplots(2, 2)도화지 공간에ax=axes형태로 4개의 분포 차트 서브플롯을 완성했습니다.
범주형 값에 따라 서브플롯그리기, pivot_table, crosstab 으로 시각화 내용 확인하기 seaborn fatcetgrid
sns.FacetGrid를 활용하여 범주형 조건별 서브플롯 격자를 만들고 데이터 수치를 검증했습니다.g = sns.FacetGrid(tips, row='sex', col='time')객체를 생성하고.map(plt.hist, 'total_bill')을 실행해 2x2 서브플롯 히스토그램을 구현했습니다..map(sns.scatterplot, 'total_bill', 'tip')으로 변경하여 성별 및 식사 시간대별 산점도 격자를 시각화했습니다.- 시각화 결과를 검증하기 위해
pd.pivot_table(tips, index='sex', columns='time', values='total_bill', aggfunc='count')를 실행했습니다. pd.crosstab(tips['sex'], tips['time'])및sns.heatmap()을 결합하여 교차표 빈도 수치를 색상 히트맵으로 완벽히 상호 검증했습니다.
파이썬 시계열 데이터 시각화 [2/4] - pivot으로 형태 바꿔서 표현하기, heatmap, subplot 표현하기
- 시계열 데이터를
pivot()으로 피봇 변환하여 히트맵 및 서브플롯으로 시각화했습니다. - 항공 승객 데이터셋(
flights)을df.pivot(index='month', columns='year', values='passengers')으로 재구조화했습니다. sns.heatmap(df_pivot, annot=True, fmt='d', cmap='Blues')를 실행하여 연도별·월별 승객 수의 가파른 증가 추세를 히트맵으로 한눈에 파악했습니다.sns.pairplot(df)으로 시계열 변수 간 관계를 탐색하고,sns.relplot(data=df, x='month', y='passengers', hue='year', kind='line')을 구현했습니다.sns.relplot(..., col='year', col_wrap=4, kind='line')을 적용하여 12개 연도별 승객 변화 곡선을 4열 격자 서브플롯으로 깔끔하게 분할 시각화했습니다.
수치vs수치형 데이터의 밀도함수 그래프 - seaborn iris kdeplot bivariable
- 두 개의 수치형 변수 간의 이변량(Bivariate) 밀도 분포를 나타내는
sns.kdeplot()을 다뤘습니다. - 붓꽃(
iris) 데이터셋에서setosa및virginica품종 서브셋을 쿼리로 분리 추출했습니다. sns.kdeplot(x=df['sepal_width'], y=df['sepal_length'], shade=True)를 실행하여 꽃받침 너비와 길이에 따른 2차원 밀도 등고선을 시각화했습니다.shade=True(또는fill=True) 옵션을 지정해 등고선 내부 면적을 색상 그라데이션으로 채우고cmap='Reds',cmap='Blues'를 적용했습니다.- 하나의 차트 위에 두 품종의 2D 밀도 등고선과
sns.scatterplot()좌표를 중첩하여 등고선 중심축과 밀집 영역의 뚜렷한 차이를 검증했습니다.
시계열 데이터 시각화하기 [3/4] - 데이터를 datetime 으로 변환해서 보기
- 문자열로 분리된 연도(
year)와 월(month) 컬럼을 판다스 날짜형(datetime)으로 통합 전환하여 시계열 차트를 그리는 기법을 다뤘습니다. datetime.strptime()또는 판다스apply()사용자 정의 함수를 작성하여 '1949' 연도와 'January' 월 문자열을 '1949-01-01' 형태 날짜 문자열로 변환했습니다.pd.to_datetime()을 적용하여 오브젝트 타입을datetime64[ns]시계열 타입으로 완벽히 형변환했습니다.sns.lineplot(data=df, x='date', y='passengers')를 실행하여 1949년부터 1960년까지 전체 12년 시계열 연속 변화 곡선을 구현했습니다.plt.figure(figsize=(15, 4))로 도화지 크기를 확장하고, 매년 지속 상승하는 추세(Trend)와 여름 성수기에 폭발하는 계절성(Seasonality)을 직관적으로 시각화했습니다.
파이썬 데이터 시각화 도구 씨본의 변화들 seaborn - distplot이 없어졌다?!
- Seaborn 버전 업데이트에 따른 주요 API 변경점과 신규 시각화 함수들을 비교 다뤘습니다.
- 레거시 단일 함수였던
sns.distplot()이 향후 Deprecated(폐지) 예정임을 안내하고 이를 대체하는 전용 함수들을 소개했습니다. sns.histplot(): 순수 히스토그램 전용 함수로kde=True옵션을 통해 밀도 곡선을 결합할 수 있습니다.sns.displot(): Figure-level 고수준 분포 인터페이스로kind='hist',kind='kde',kind='ecdf'및hue,col서브플롯 분할을 지원합니다.sns.ecdfplot(): 누적 분포 함수(Empirical Cumulative Distribution Function)를 시각화하는 신규 함수입니다.- 신규 API 도입으로
hue파라미터를 통해 여러 범주형 그룹의 분포를 단일 차트나 서브플롯에 손쉽게 비교 표현할 수 있게 되었음을 정리했습니다.
파이썬 시계열 데이터 시각화 [1/4] - 항공 수송 인원 데이터를 다양한 형태의 그래프로 표현하기
- 항공 승객 데이터셋(
flights)을 활용해 동일한 시계열 데이터를 다채로운 Seaborn 차트 종류로 비교 탐색했습니다. sns.barplot(data=df, x='year', y='passengers')로 연도별 평균 승객 수와 신뢰구간을 막대로 나타냈습니다.sns.lineplot()으로 전환하여 연도별 연속 추이 곡선과 신뢰구간 밴드를 표현하고,hue='month'를 추가해 12개 월별 곡선을 개별 분리했습니다.sns.boxplot(data=df, x='year', y='passengers')및sns.boxenplot()을 적용해 연도별 승객 분포의 사분위수 범위를 구했습니다.sns.violinplot()으로 밀도 모양을 확인하고,sns.swarmplot()을 실행해 연도별 12개 월 데이터 포인트의 실제 위치를 산점도로 검증했습니다.
피어슨 상관 계수(Pearson correlation coefficient)를 구하고 히트맵으로 표시하기
- 수치형 변수 간의 선형 관련성을 나타내는 피어슨 상관계수(Pearson Correlation)를 산출하고 히트맵으로 시각화했습니다.
- 판다스 데이터프레임의
df.corr()메소드를 호출하여 전체 수치 컬럼 간의 -1 ~ +1 상관계수 행렬을 계산했습니다. sns.heatmap(df.corr(), annot=True, fmt='.2f', cmap='coolwarm', vmin=-1, vmax=1)을 실행하여 상관계수 수치가 적힌 히트맵을 생성했습니다.np.triu(np.ones_like(df.corr(), dtype=bool))마스크를 생성하고mask=mask옵션을 전달하여 중복되는 상단 대각선 영역을 깔끔하게 가렸습니다.- 자동차 데이터셋(
mpg)에 적용하여 연비(mpg)와 차중(weight), 배기량(displacement) 간의 강한 음의 상관관계(-0.83)를 히트맵으로 시각 검증했습니다.
라벨 종합 정리
파트 1/3 종합
단순한 요약 통계량(평균, 상관계수 등)만으로는 데이터의 숨겨진 분포와 패턴을 파악하기 어렵기 때문에 적절한 데이터 시각화 과정이 필수적입니다.
Seaborn과 Pandas, Plotly를 활용하면 수치형·범주형 데이터의 빈도와 밀도, 선형/비선형 회귀선 및 다변량 관계를 단 한 줄의 고수준 코드와 격자형 서브플롯으로 손쉽게 구현할 수 있습니다.
결측치 정제, 표준화(2축 그래프 및 수익률 변환), 형태소 분석(KoNLPy)과 워드클라우드를 결합하여 공공데이터·인구통계·금융 ETF 등 현실 데이터에 숨겨진 구조적 인사이트를 명확히 도출할 수 있습니다.
파트 2/3 종합
본 영상 모음은 파이썬 시각화의 핵심인 Matplotlib, Seaborn, Folium, Plotly, Mermaid 및 NumPy를 활용해 공공·금융·사회·텍스트 데이터를 다차원적으로 시각화하는 방법론을 다룹니다.
Seaborn의 고수준 인터페이스(relplot, catplot, lmplot, pairplot, PairGrid)를 사용하면 가공되지 않은 타이디 데이터(Tidy Data)만으로 평균, 신뢰구간, 회귀선, 서브플롯 격자를 코드 한 줄로 자동 연산하고 구현할 수 있습니다.
시계열 꺾은선 그래프, 수치·범주형 데이터의 빈도 및 밀도 분포(boxenplot, violinplot, jointplot), 공간 지리 마커(Folium), 동적 차트(Plotly), 프로젝트 타임라인(Mermaid Gantt)을 결합하여 데이터에 숨겨진 구조적 인사이트를 명확하게 도출할 수 있습니다.
파트 3/3 종합
본 영상 모음은 파이썬 시각화 라이브러리인 Seaborn과 Pandas, Matplotlib을 활용하여 수치형 및 범주형 데이터, 시계열, 상관계수를 다각도로 분석하는 실무 기법을 다룹니다.
scatterplot, lineplot, barplot, boxplot, violinplot, swarmplot, kdeplot, heatmap 등 데이터 타입과 목적에 알맞은 차트 선택 기준을 제시합니다.
catplot, relplot, lmplot, displot, FacetGrid 등 고수준 인터페이스를 통해 복잡한 다변량 데이터를 한 줄의 코드와 격자형 서브플롯으로 손쉽게 가공·시각화할 수 있습니다.
pivot() 변환, datetime 날짜 형변환, statsmodels 시계열 분해, 텍스트 라벨 표기(text), 상관계수 마스크(np.triu()) 정제를 결합하여 데이터에 숨겨진 구조적 인사이트를 정밀하게 추출합니다.