
레고의 데이터셋을 분석하면서 판다스에서 데이터를 집계하고 병합하기
🔍 유의 사항
- 마크다운(텍스트) 셀 안에 셀 스타일을 지정하기
- 이미지 추가
- 구글 콜랩의 경우 이미지의 URL로 HTML
<img>태그 사용- 로컬에서 주피터 노트북을 실행하는 경우
assets폴더의 이미지 파일 연결하기<h1>태그 또는#기호로 섹션 제목 추가 가능
🔍 유의 사항
colors.csv파일을 읽고 고유한 색상의 총 개수를 찾기
- .nunique() 메소드로 'name' 열의 모든 항목이 고유한지 여부 확인
- 데이터프레임의 행 개수와 .nunique()의 값이 일치하면 중복되는 항목이 없다는 의미
- 불투명한 색상 개수 대비 투명한 색상 개수를 알아보는 방법 2가지
- .groupby() 메소드와 .count() 메소드를 결합하여 특정 열로 그룹화하고 항목을 계산
- .value_counts() 메소드로 각 범주에 몇 개의 항목이 들어있는지 빠르게 찾을 수 있음
🔍 유의 사항
sets.csv파일 읽기- 최초의 레고 세트가 출시된 연도와 이 세트의 이름 찾기
- 레고 운영 첫해에 판 제품의 개수
- 부품 수가 가장 많은 레고 세트 상위 5개
🔍 유의 사항
- 레고 회사가 매해 전년 대비 얼마나 많은 세트를 더 출시해왔는지 살펴보기
- 연도를 인덱스로, 세트의 개수를 그 값으로 하는 새로운 시리즈 생성
- 맷플롯립으로 결과를 시각화
- 데이터의 최근 2년은 모든 월이 들어있지 않으므로 차트가 극적으로 하락세를 보임
- 슬라이싱으로 최근 2년치를 없애기
🔍 유의 사항
- 연도별로 데이터를 그룹화한 다음, 해당 연도 고유 테마의 수를 계산하기
- .groupby() 메소드에 .agg()를 연결하여 특정 데이터프레임 열에 기반한 작업 실행하기
- .agg()는 인자에서 딕셔너리 역할을 수행
- 그룹별로 theme_id를 추출해 Series로 만들기
- Series 객체에 .nunique() 메소드로 theme_id 열에 있는 고유 항목 수를 계산
- 맷플롯립으로 연도별로 출시된 테마 수를 꺾은선 차트로 표시
(전체 달만 들어간 연도만 포함)
🔍 유의 사항
- 한 차트에 테마의 수와 세트의 수를 함께 표시하기
- 두 항목의 단위가 매우 다르기 때문에 그대로 합치면 안 됨
- 동일한 차트 안에서 두 개의 개별 축으로 데이터를 구성하고 표시해야 함
- 맷플롯립에서 두 개의 별도 축 만들기
- 현재 축 개체를 가져와서 변수
ax1에 저장- 또 다른 축 개체
ax2생성
( .twinx() 메소드로ax1와ax2가 동일한 x축을 사용하도록 만들기)- 축 개체에 데이터 표시
- 선의 색 구분, 축의 색 구분, 레이블 추가로 두 데이터를 구분하기 쉽게 바꾸기
🔍 유의 사항
- 레고 세트당 평균 부품 개수 계산하기
- 연도를 인덱스로 하고 해당 연도의 레고 세트당 평균 부품 수를 내용으로 하는 판다스 시리즈 생성
- .groupby()와 .agg() 메소드를 함께 사용
- 맷플롯립으로 산점도 차트 생성하기
- .scatter() 메소드로 산점도 차트 호출
- 마지막 두 연도 제외하기
🔍 유의 사항
- 레고 테마 당 세트의 수 분석하기
- theme_id 열에 .value_counts() 메소드 사용하기
- 테마의 이름은
themes.csv에 있기 때문에 알 수 없음- 스키마
- 데이터베이스가 운영되는 방식
- 개별 테이블로 쪼개진 데이터베이스는 테이블의 키를 통해 서로 연결되는 구조
sets.csv의 'theme_id' 열은themes.csv의 'id' 열과 연결됨
- 'theme_id'는
sets.csv에서 외래키- 'id'는
themes.csv에서 고유한 기본키- 'Star Wars'라는 이름의 테마에 해당하는 세트의 개수 검색하기
- themes.csv에서 찾은 id로 sets.csv에서 제품 검색
- 동일한 테마를 가진 레고 세트가 많음을 알 수 있음
🔍 유의 사항
set_theme_count시리즈에 '테마 아이디'와 '테마별 세트 개수' 열의 이름 변경
- .DataFrame() 메소드로 판다스 시리즈를 판다스 데이터프레임으로 변환하기
- 데이터프레임에 딕셔너리를 제공(키가 열 이름이 됨)
- '테마 아이디' 열의 이름을 'id'로 바꿔서 통일시키기
- '테마별 세트 개수' 열의 이름을 'set_count'로 바꾸기
- 테마당 세트 수와 테마 이름 데이터를 결합하기
- .merge() 메소드로 별개의 두 데이터프레임을 하나로 결합
- 두 데이터프레임 및 병합할 열 이름을 전달
- 양쪽의 데이터프레임에서 같은 이름을 가진 열에 적용됨 (
on='열 이름옵션)- 맷플롯립으로 상위 10개 테마를 표시하는 막대 차트 생성하기
- x축의 테마 이름이 길어서 겹치는 현상 발생
- 범주 이름을 회전시켜서 겹치지 않도록 조정하기