본문 바로가기

Data Analysis/Exploratory Data Analysis

Pandas (5) Method Chaining

DataFrame method chain으로 묶기

  • Series와 달리 DataFrame에 대한 method chaining은 각 단계에서 반환되는 객체 유형을 정확히 숙지해야 함
 
In [66]:
movie = pd.read_csv(r'C:\Users\user\jupyterpractice\EDA\Pandas-Cookbook-master\data\movie.csv')
movie.isnull().head()
 
Out[66]:
  color director_name num_critic_for_reviews duration director_facebook_likes actor_3_facebook_likes actor_2_name actor_1_facebook_likes gross genres actor_1_name movie_title num_voted_users cast_total_facebook_likes actor_3_name facenumber_in_poster plot_keywords movie_imdb_link num_user_for_reviews language country content_rating budget title_year actor_2_facebook_likes imdb_score aspect_ratio movie_facebook_likes
0 False False False False False False False False False False False False False False False False False False False False False False False False False False False False
1 False False False False False False False False False False False False False False False False False False False False False False False False False False False False
2 False False False False False False False False False False False False False False False False False False False False False False False False False False False False
3 False False False False False False False False False False False False False False False False False False False False False False False False False False False False
4 True False True True False True False False True False False False False False True False True False True True True True True True False False True False

 

 

In [56]:
# sum()은 isnull() Boolean 값에 대해 True = 1, False = 0으로 계산하여 합산함
movie.isnull().sum().head()

# 반환 값이 Series 형태임에 주목!
 
Out[56]:
color                       19
director_name              102
num_critic_for_reviews      49
duration                    15
director_facebook_likes    102
dtype: int64
 
 
In [57]:
# 한 번 더 sum() method를 사용하면 전체 누락값(결측치)의 개수를 알려줌
movie.isnull().sum().sum()
 
Out[57]:
2654
 
 
In [58]:
# 누락값의 존재 여부를 파악하는 다른 방법. any method를 두번 사용하였음
# isnull().any() 까지는 각 열에 하나라도 True값이 있으면 True로 반환함. 여기까지는 Series로 반환됨
# 마지막 any() method를 적용하면 True/False로 된 Series에 적용되어 다시 한번 True가 1개라도 있으면 True를 반환하게 되는 것임
# 결과적으로 isnull().any().any()가 True라면 전체 DataFrame 중에서 최소한 1개 이상의 누락값(결측치)이 있다는 의미가 됨
movie.isnull().any().any()
 
Out[58]:
True
 

 

isnull method의 작동원리

  • boolean 형태의 데이터 형식을 반환함
 
In [59]:
movie.isnull().dtypes.value_counts()
 
Out[59]:
bool    28
dtype: int64
 

 

object type column에 대한 누락값(결측치) 살펴보기

 
In [62]:
# object type의 column을 선택한 후(누락값 존재) max, min 등의 기술 통계 메서드를 적용 시 아무것도 반환하지 않음
movie[['color', 'movie_title', 'color']].max() # 왜 때문에 나는 결과가 나왔는가.....???
 
Out[62]:
movie_title    Æon Flux
dtype: object
 
 
In [65]:
# 빈 문자열로 결측치(누락값)을 채운 뒤, 기술 통계 메서드 적용
movie.select_dtypes(['object']).fillna('').max()
 
Out[65]:
color                                                          Color
director_name                                          Étienne Faure
actor_2_name                                           Zubaida Sahar
genres                                                       Western
                                         ...                        
movie_imdb_link    http://www.imdb.com/title/tt5574490/?ref_=fn_t...
language                                                        Zulu
country                                                 West Germany
content_rating                                                     X
Length: 12, dtype: object
 
 
In [69]:
# 가독성을 높이는 방법으로 백슬래시를 사용할 수 있음
movie.select_dtypes(['object']) \
                    .fillna('') \ # 요렇게 하면 각 단계 별로 주석달기도 가능. 가독성 상승!
                    .max()
 
Out[69]:
color                                                          Color
director_name                                          Étienne Faure
actor_2_name                                           Zubaida Sahar
genres                                                       Western
                                         ...                        
movie_imdb_link    http://www.imdb.com/title/tt5574490/?ref_=fn_t...
language                                                        Zulu
country                                                 West Germany
content_rating                                                     X
Length: 12, dtype: object
 

'Data Analysis > Exploratory Data Analysis' 카테고리의 다른 글

Pandas (4) Dataframe 연산  (0) 2021.09.28
Pandas (3) Column 네이밍  (0) 2021.09.27
Pandas (2) Column 조작  (0) 2021.09.24
Pandas (1) 데이터 정보 확인  (0) 2021.09.23