iBetter Books
수정

"데이터셋은 어디서 구해요? 매번 CSV 찾아서 불러오기 귀찮아서요."

지윤의 질문에 강주원 선배가 바로 답했다.

"Plotly에 내장 데이터셋이 여러 개 있어. px.data. 치고 탭 눌러봐."

자동완성 목록이 쭉 떴다. gapminder, iris, tips, stocks, wind, election... 생각보다 많았다.

"연습하거나 예제 만들 때 파일 없어도 바로 쓸 수 있어서 편해. 어떤 차트 타입에 뭐가 어울리는지도 같이 배울 수 있고."


주요 내장 데이터셋

plotly.express.data 모듈에는 여러 예제 데이터셋이 내장되어 있습니다. 모두 pandas DataFrame으로 반환됩니다.

px.data.iris()

붓꽃(아이리스) 데이터셋입니다. 150개 샘플, 3종(setosa, versicolor, virginica)의 꽃받침(sepal)과 꽃잎(petal) 크기를 담고 있습니다.

  • 주요 컬럼: sepal_length, sepal_width, petal_length, petal_width, species
  • 적합한 차트: 산점도, 히스토그램, 박스플롯

px.data.gapminder()

1952년부터 2007년까지 5년 단위로 기록된 세계 각국의 인구, GDP, 기대수명 데이터입니다. 142개국, 1704개 행으로 구성됩니다.

  • 주요 컬럼: country, continent, year, lifeExp, pop, gdpPercap
  • 적합한 차트: 산점도(버블), 라인 차트, 애니메이션

px.data.tips()

레스토랑 팁 데이터셋입니다. 244개 행으로 총 식사 금액, 팁 금액, 요일, 시간대 등을 담고 있습니다.

  • 주요 컬럼: total_bill, tip, sex, smoker, day, time, size
  • 적합한 차트: 산점도, 박스플롯, 바 차트

px.data.stocks()

IT 기업 주가 데이터셋입니다. GOOG, AAPL, AMZN, FB, NFLX, MSFT의 일별 주가를 담고 있습니다.

  • 주요 컬럼: date, GOOG, AAPL, AMZN, FB, NFLX, MSFT
  • 적합한 차트: 라인 차트, 영역 차트

데이터셋 확인하기

어떤 컬럼이 있는지 바로 확인하는 방법입니다.

# 파일: check_datasets.pyimport plotly.express as px# iris 데이터셋df_iris = px.data.iris()print(df_iris.head())print(df_iris.columns.tolist())# gapminder 데이터셋df_gap = px.data.gapminder()print(df_gap.head())print(df_gap.columns.tolist())

gapminder로 버블 차트 만들기

gapminder 데이터셋은 버블 차트 예제로 자주 등장합니다. GDP와 기대수명의 관계를 대륙별로 색구분하고, 인구를 버블 크기로 표현할 수 있습니다.

# 파일: gapminder_bubble.pyimport plotly.express as pxdf = px.data.gapminder()df_2007 = df[df["year"] == 2007]fig = px.scatter(    df_2007,    x="gdpPercap",    y="lifeExp",    size="pop",    color="continent",    hover_name="country",    log_x=True,    size_max=60,    title="2007년 GDP vs 기대수명")fig.show()

실행 결과

log_x=True는 x축을 로그 스케일로 표시합니다. GDP처럼 값의 범위가 매우 넓을 때 사용합니다. size_max는 버블의 최대 크기를 픽셀 단위로 제한합니다.

마우스를 버블 위에 올리면 나라 이름(hover_name="country")과 함께 GDP, 기대수명, 인구 값이 표시됩니다.

"이걸 캡스톤 프로젝트에서 쓸 수 있겠다." 지윤이 혼잣말했다.

강주원 선배의 메시지가 바로 왔다.

"그게 핵심이야. 데이터 가져오면 일단 이 코드 틀에 넣어서 탐색해봐. 어떤 컬럼을 x, y, size, color에 쓸지 정하는 것 자체가 분석의 절반이거든."


자주 묻는 질문

Q: 내장 데이터셋 말고 CSV 파일을 불러오려면 어떻게 하나요?

pandas로 CSV를 읽어서 DataFrame을 만들면 됩니다. px.scatter(df, x="컬럼명", y="컬럼명")처럼 컬럼명만 바꿔주면 됩니다. 내장 데이터셋과 사용 방법이 동일합니다.

Q: gapminder 데이터에서 특정 연도만 사용하려면 어떻게 하나요?

pandas 필터링을 사용합니다. df[df["year"] == 2007]처럼 조건을 걸면 해당 연도 데이터만 추출됩니다.

Q: size_max를 너무 크게 하면 어떻게 되나요?

버블이 겹쳐서 아래 데이터가 보이지 않을 수 있습니다. 일반적으로 40~80 사이 값을 사용합니다. 너무 작으면 크기 차이를 구분하기 어렵습니다.