사용 데이터
MovieLens 영화 데이터 -> ml-latest-small.zip -> movies.csv
https://grouplens.org/datasets/movielens/
import pandas as pd
movies = pd.read_csv('[파일 경로]/movies.csv', index_col='movieId')
+) year 컬럼은 title에서 추출하여 따로 추가해둔 상태
genre 분석
apply 함수를 사용해 movies 데이터의 장르를 분석해보자.
apply
apply 함수는 특정 데이터 컬럼에 특정 함수를 반복적으로 적용시킬 수 있는 함수이다.
예시를 보면 이해가 빠를 것이다.
sample_genre = movies['genres'][1]
sample_genre.split("|")
<결과>
['Adventure', 'Animation', 'Children', 'Comedy', 'Fantasy']
이렇게 각 movie들의 genre를 '|'를 기준으로 split 하고 싶다고 가정하자.
이러한 split 함수를 movie['genre'] 전체에 반복적으로 적용시켜 주는 것이 apply 함수의 핵심이다.
movies['genres'].apply(lambda x : x.split("|"))
람다를 사용하였지만 def로 지정한 함수도 사용 가능하다.
<결과>
각 genre에 대해 split함수가 적용된 것을 볼 수 있다.
flat list
지금까지는 각 movie별 genre 정보를 파악했다.
이를 조금 응용해서 movies 데이터 전체에는 어떤 장르들이 있는지 파악해보자.
genres_list = list(movies['genres'].apply(lambda x : x.split("|")))
genres_list[:3]
우선 apply를 적용한 데이터를 list로 감싼다.
<결과>
[['Adventure', 'Animation', 'Children', 'Comedy', 'Fantasy'],
['Adventure', 'Children', 'Fantasy'],
['Comedy', 'Romance']]
list of list의 형태를 unique한 값들로 하나의 리스트를 만들었을 때 ,이를 flat list라고 한다.
flat_list=[]
for sublist in genres_list:
for item in sublist:
flat_list.append(item)
genres_unique = list(set(flat_list))
genres_unique
<결과>
['Comedy',
'Documentary',
'Horror',
'(no genres listed)',
'Children',
'Sci-Fi',
'Crime',
'Thriller',
'Adventure',
'Film-Noir',
'Drama',
'Musical',
'Western',
'Romance',
'Fantasy',
'IMAX',
'Action',
'Animation',
'War',
'Mystery']
이렇게 전체 genre를 하나의 리스트로 파악할 수 있다.
'python > data analysis' 카테고리의 다른 글
[Pandas] seaborn - heatmap을 사용한 데이터 상관관계 시각화 (0) | 2021.08.26 |
---|---|
[Pandas] get_dummies를 사용한 수치화된 데이터 생성 (0) | 2021.08.26 |
[Pandas] seaborn을 사용한 데이터 시각화 (0) | 2021.08.25 |
[Pandas] str.extract를 사용한 데이터 전처리 + 결측값 핸들링하기 (0) | 2021.08.25 |
[Pandas] csv 파일 읽기 및 쓰기 (0) | 2021.08.25 |