iBetter Books
수정

내장 데이터셋 활용

민서는 선배에게 물었습니다. "매번 데이터 파일을 직접 만들어야 해요?"

선배가 고개를 저었습니다. "아니, Seaborn에 연습용 데이터셋이 내장되어 있어. 한 줄이면 불러올 수 있어."

전체 목록 확인

sns.get_dataset_names()를 호출하면 사용 가능한 데이터셋 이름 목록이 반환됩니다.

import seaborn as snsdatasets = sns.get_dataset_names()print(datasets)

실행하면 anagrams, anscombe, attention, brain_networks, car_crashes 등 수십 개의 이름이 출력됩니다. 이 중에서 통계와 시각화 연습에 자주 쓰이는 것들이 있습니다.

주요 데이터셋

이름 설명 주요 컬럼
tips 미국 식당 팁 데이터 total_bill, tip, sex, smoker, day, time, size
penguins 팔머 펭귄 측정 데이터 species, island, bill_length_mm, body_mass_g, sex
iris 붓꽃 품종 측정 데이터 sepal_length, sepal_width, petal_length, petal_width, species
titanic 타이타닉 생존자 데이터 survived, pclass, sex, age, fare, embarked
flights 월별 항공 승객 수 데이터 year, month, passengers

이 교재에서는 tips 데이터셋을 주로 사용합니다. 수치형(total_bill, tip)과 범주형(sex, smoker, day, time) 컬럼이 골고루 있어서 다양한 시각화를 연습하기에 적합합니다.

데이터셋 불러오기

sns.load_dataset() 함수에 데이터셋 이름을 문자열로 전달합니다. 반환값은 Pandas DataFrame입니다.

import seaborn as snstips = sns.load_dataset("tips")print(type(tips))
<class 'pandas.core.frame.DataFrame'>

데이터 파악하기

DataFrame을 받은 다음에는 데이터를 먼저 살펴보는 것이 좋습니다.

import seaborn as snstips = sns.load_dataset("tips")# 처음 5행 확인print(tips.head())# 컬럼 정보와 결측치 확인print(tips.info())# 수치형 컬럼 기술 통계print(tips.describe())

.head()를 실행하면 다음과 같은 형태의 데이터가 보입니다.

   total_bill   tip     sex smoker  day    time  size0       16.99  1.01  Female     No  Sun  Dinner     21       10.34  1.66    Male     No  Sun  Dinner     32       21.01  3.50    Male     No  Sun  Dinner     33       23.68  3.31    Male     No  Sun  Dinner     24       24.59  3.61  Female     No  Sun  Dinner     4

.info()를 보면 tips 데이터셋에는 244개의 행이 있고, 수치형(float64, int64) 컬럼과 범주형(category) 컬럼이 섞여 있다는 것을 알 수 있습니다.

.describe()는 수치형 컬럼의 최솟값, 최댓값, 평균, 표준편차 같은 기술 통계를 한눈에 보여줍니다. 그래프를 그리기 전에 데이터의 분포와 규모를 파악하는 데 유용합니다.

인터넷 없이 사용하기

sns.load_dataset()은 처음 호출 시 GitHub에서 데이터를 다운로드하여 로컬에 캐싱합니다. 한 번 받아두면 인터넷 없이도 사용할 수 있습니다. 캐시 위치는 운영체제의 임시 폴더 안에 저장되며, cache=True(기본값)로 설정되어 있습니다.

인터넷 연결 없이 처음 사용하거나 캐시가 삭제된 경우에는 오류가 발생할 수 있습니다. 그럴 때는 직접 CSV를 다운로드하여 pd.read_csv()로 불러오는 방법을 사용할 수 있습니다.