이번에는 데이터 인덱싱 중 특정 열 부터 특정 행 까지 출력하는 방법에 대해서 알아보겠습니다. 사실 인덱싱을 여러 군데에서 하게되면 그 정보를 담는 데이터를 또 다른 변수에 지정하기도 하고, 원래 데이터를 변형하기도 하는데요. 이따가 예시도 적겠지만, 그러한 경우에 내가 필요한 정보를 남겨두고 , 혹은 따로 빼두고 남은 데이터 부분을 변형하는 경우가 많습니다. 그렇기에 데이터 프레임에 부분에 대한 인덱싱이 매우 !! 중요하다고 생각합니다. 이거 이전에 포스팅 한 글을 보셨다면 '이거 왠지 여기서부터 여기까지 이렇게 코딩하면 되지 않을까' 생각이 드실 수도 있습니다. 한 줄 정도 시리즈 단위로는 물론 그 방법으로 인덱싱 해주어도 되지만, 그렇게 말고 지금 이 글에서는 다수의 시리즈를 지정하여 복사 혹은 분리 하는 경우를 말한 것입니다. 서두가 너~무 길었네요 예시로 한번 살펴 보시죠 !
1. 판다스를 불러오기 & 기본 데이터 프레임 불러오기
import pandas as pd
#데이터 불러오기(로우(행) 기본 번호 지정 x)
challenge_df = pd.read_csv('무한도전.csv',encoding = 'cp949', index_col = 0)
challenge_df
우선 우리가 이용할 판다스(pandas) 라이브러리를 먼저 불러와줍니다. 혹시나 설치가 안 되셨거나 에러코드가 뜨신다면 install 과정을 거치신 후 위 과정을 거쳐주시면 되겠습니다. 제가 사용하는 데이터는 임의로 규모가 조금 작은 데이터 프레임으로 편집을 거쳐봤습니다.
두번째 줄에서는 무한도전 멤버들의 데이터를 엑셀파일로 저장되어있는 정보를 'challenge_df' 라는 변수에 저장하여 한번 출력해봤습니다.
2. 서로 떨어져있는 로우(행) 데이터를 뽑아내고 싶어요.
이런 경우가 많이 생기실 것 같습니다. 내가 원하는 데이터의 행이나 열이 사이가 좀 있어서 거리가 있는 경우 !! 바로 이럴 때, 데이터 인덱싱을 이용해주어야 합니다. 우리가 정해놓은 예시에서는 '박명수' 데이터와 '정형돈' 데이터는 거리가 좀 있습니다. 그렇기 때문에 서로 인덱싱을 따로 해주어서 값을 불러서 봐야합니다.
? 서로 붙어있지 않는 '박명수' & '정형돈' 로우(행) 데이터를 불러보기.
#서로 떨어져있는 로우(행) 정보를 받아오기
challenge_df.loc[['박명수','정형돈']]
서로 붙어있지 않는 데이터를 부를 때는 이렇게 [[ '행(로우) 이름']]을 입력해주면 됩니다. 세개의 정보를 불러오는 경우에는 이와 마찬가지로 콤마(,)를 추가로 붙여주면 됩니다.
? 서로 붙어있지 않는 '박명수' & '길성준' &'정형돈' 로우(행) 데이터를 불러보기.
#서로 떨어져있는 로우(행) 정보를 받아오기
challenge_df.loc[['박명수', '길성준', '정형돈']]
그리고 어디서 부터 어디까지 해당 정보를 얻고 싶다면 어떻게 해야할까요?
예를 들면 우리가 정해준 데이터프레임에서
? '유재석' 부터 ~ '박명수' 행(로우) 까지 데이터를 다 불러내보고 싶다면?
#'유재석' ~ '박명수' 로우(행) 정보를 받아오기
challenge_df.loc['유재석':'박명수']
이 경우에서는 위의 정보와는 다르게, [[ ]] 대괄호를 두개를 씌워주지 않습니다. [ ] 한개만 씌워주고, : 콜론을 통해서 범위를 지정해줍니다.
3. 서로 떨어져있는 열(칼럼) 데이터를 뽑아내려면 어떻게 해야할까요?
이제까지는 행(로우)를 기준으로 우리가 계속 살펴봤었는데요, 이번엔 판다스 로우 기준이 아닌 열 기준으로 살펴보도록 하겠습니다. 위의 예시처럼 이제까지 행 예시 말고, '별명'과 'sns유무'같은 열 예시로 보겠습니다. 사실 행 예시와 크게 다르지 않습니다.
? 서로 붙어있지 않는 '별명' & 'sns유무' 열(칼럼) 데이터를 뽑아내려면 어떻게 해야할까요?
#서로 붙어있지 않는 'SNS유무' ~ '별명' 칼럼(열) 정보를 받아오기
challenge_df[['SNS유무','별명']]
? 서로 붙어있지 않는 '별명' & 'sns유무' & '출생년월' 열(칼럼) 데이터를 뽑아내려면 어떻게 해야할까요?
이렇게 붙어있지도 않고, 순서도 서로 다른 세개의 컬럼(열)의 데이터를 뽑아내려면, loc 를 기준으로 하는 것이 아닌 우리가 처음에 봤듯이 [[ ]] 대괄호 두개 안에 그것을 가두고 지정해주면 됩니다.
#서로 붙어있지 않는 'SNS유무' ~ '별명' 칼럼(열) 정보를 받아오기
challenge_df[['SNS유무','별명','출생년월']]
4. 각각 붙어있지 않는 행 (로우) & 열 (칼럼) 데이터를 뽑아내려면 어떻게 해야할까요 ?
사실 이 글 포스팅에서 두가지 정보를 응용하여 코딩하는 경우입니다. 이걸 사용하면 전체 데이터에서 각각 떨어져있는 값인 행(로우)와 열(칼럼)을 하나로 붙여서 출력할 수 있습니다. 이미 위에서 우리가 사용했던 코드에 다 답이 나와있습니다. 그걸 응용해서 우리는 정보를 한번 출력해보도록 하죠 !
우리가 원하는 정보는 이겁니다 !
? 서로 떨어져있는 데이터인 '유재석' & '박명수' 행 ( 로우 ) 의 '별명' & '출생년월' 컬럼( 열 ) 값을 따로 빼내려면?
# 붙어있지 않는 행(로우) 값과 열(칼럼) 값을 따로 출력해주려면?
challenge_df.loc[['유재석','박명수'],['별명','출생년월']]
이렇게 출력이 가능하고, 이걸 부분으로 따로 정해주어 변수에 판다스 데이터프레임으로 저장도 가능합니다.
#우리가 출력해주고 싶은 값을 mc_df에 따로 저장
mc_df = challenge_df.loc[['유재석','박명수'],['별명','출생년월']]
mc_df
저의 아주 작은 티끌 코딩 글이 블로그 방문자 님의 코딩에 도움이 됐으면 좋겠습니다.
좋아요(❤) 버튼 ↙은 항상 감사합니다
방문하신 모든 분들 좋은 하루 되세요 : )
'Programming Language > Data & A.I. (데이터 & 인공지능 관련)' 카테고리의 다른 글
판다스 데이터프레임 '부분 / 행 전체 / 열 전체'를 수정하려면 어떤 코드를 써야 하나요?? (0) | 2021.07.07 |
---|---|
오래 보기엔 밝아서 눈이 아픈 기본 주피터 노트북 테마 ( 스킨 )를 바꿔보겠습니다. [jupyter notebook themes] (0) | 2021.06.25 |
판다스(Pandas) 데이터 프레임 행/열 따로 불러오기(인덱싱) 및 시리즈(Series)에 대한 이해 (0) | 2021.06.22 |
판다스(Pandas) 엑셀 파일 & csv파일 불러오기 및 에러코드(UnicodeDecodeError) (0) | 2021.06.21 |
넘파이(Numpy) 인덱스 번호 불러오기(인덱싱:indexing)과 자르기(슬라이싱:slicing) (0) | 2021.06.18 |