그룹화된 데이터 탐색

Julia로 하는 데이터 조작

Katerina Zahradova

Instructor

그룹 필터링

# 여러 국가의 회사 필터링
choc_comp_france = filter(chocolates -> chocolates.company_location == "France", chocolates)

choc_comp_brazil = filter(chocolates -> chocolates.company_location == "Brazil", chocolates)

choc_comp_peru = filter(chocolates -> chocolates.company_location == "Peru", chocolates)

choc_comp_belgium = filter(chocolates -> chocolates.company_location == "Belgium", chocolates)

...
Julia로 하는 데이터 조작

groupby()가 해결합니다!

groupby 구조

Julia로 하는 데이터 조작

GroupedDataFrame

GroupedDataFrame 구조

Julia로 하는 데이터 조작

groupby() 사용 예시

# company_location으로 그룹화
groupby(chocolates, :company_location)
GroupedDataFrame with 60 groups based on key: company_location
First Group (156 rows): company_location = "France"
Row  company   bean_origin  ...
     String    String       ...
_______________________________
1    A. Morin  Agua Grande  ...
...
Last Group(4 rows): company_location = "Ireland"
Row  company           bean_origin  ...
     String            String       ...
_______________________________
1    Wilkie's Organic  Amazonas     ...
Julia로 하는 데이터 조작

여러 열에서 groupby()

groupby(chocolates, [:company_location, :cocoa])
GroupedDataFrame with 373 groups based on keys: company_location, cocoa
First Group (5 rows): company_location = "France", cocoa = 63.0
Row  company   bean_origin  ...
     String    String       ...
_______________________________
1    A. Morin  Agua Grande  ...
...
Last Group (1 row): company_location = "Ireland", cocoa = 89.0
Row  company           bean_origin  ...
     String            String       ...
_______________________________
1    Wilkie's Organic  Amazonas     ...
Julia로 하는 데이터 조작

순서가 중요합니다

여러 열로 groupby

Julia로 하는 데이터 조작

레코드 수

# 국가별 그룹화
chocolates_by_country = groupby(chocolates, :company_location)  
# 그룹당 레코드 수
combine(chocolates_by_country, nrow => :count) 
60x2 DataFrame
Row  company_location  nrow
     String31          Int64
______________________________
1    France            156
2    U.S.A.            764
3    Fiji              4
...
Julia로 하는 데이터 조작

레코드 수로 정렬

# 국가별 그룹화
chocolates_by_country = groupby(chocolates, :company_location) 
# 레코드 수로 정렬
sort(combine(chocolates_by_country, nrow => :count), :count, rev = true)
60x2 DataFrame
Row  company_location  nrow
     String31          Int64
______________________________
1    U.S.A            764
2    France           156
3    Canada           125
...
Julia로 하는 데이터 조작

벡터에서 unique()

# 고유 요소
unique(chocolates.company_location)
60-element Vector{String31}:
 "France"
 "U.S.A."
 "Fiji"
 "Ecuador"
 "Mexico"
 "Switzerland"
 "Netherlands"
...
Julia로 하는 데이터 조작

DataFrame에서 unique()

# 고유 행만 포함한 새 DF 생성
unique(chocolates)
1795×10 DataFrame
Row company  bean_origin  ...
    String   String       ...
_________________________________
1   A. Morin Agua Grande  ...
...
Julia로 하는 데이터 조작

지정 열로 unique()

# 회사별 고유 레코드
unique(chocolates, :company)
416×10 DataFrame
Row company  bean_origin  ...
    String   String       ...
_________________________________
1   A. Morin Agua Grande  ...
...
# 회사와 코코아 함량 조합의 고유값 
unique(chocolates, [:company, :cocoa])
968×10 DataFrame
Row company  bean_origin  ...
    String   String       ...
_________________________________
1   A. Morin Agua Grande  ...
...
Julia로 하는 데이터 조작

연습해 봅시다!

Julia로 하는 데이터 조작

Preparing Video For Download...