본문 바로가기
Data Science/Pandas, Numpy

[Pandas] DataFrame 개념 및 생성/조회 방법

by Queen2 2022. 9. 30.
728x90
반응형

🧐 DataFrame 이란?

 

Pandas에서는 DataFrame을 여러 다른 타입의 컬럼을 가진 2차원의 데이터 구조로 정의하고 있습니다

처음에 저도 DataFrame이라는 개념을 들었을 때 잘 이해가 안 갔는데요

간단히 생각하면 엑셀의 피벗테이블, 일반 표 등 말그대로 Data를 담은 Frame이다!

정도로 이해가능 할 것 같습니다

 

https://www.geeksforgeeks.org/creating-a-pandas-dataframe/

 

여기서 반드시 짚고 넘어가야 하는 부분은 DataFrame과 관련된 기본 용어인데요

 

DataFrame은 반드시 가장 왼쪽에 index label 이 있고

열이름이 위쪽에 위치해 있습니다

 

일반적으로 행은 axis = 0, 열은 axis =1로 표현합니다

여기서 데이터프레임의 한 줄, 즉 열 데이터는 Series로 지칭되니 꼭 기억하시길 바래요!

 


 

DataFrame 만들기 

 

1) Dict 형식 직접 입력 방식

 

import Pandas as pd

 

pd.DataFrame({'열1이름' :[value1,value2,..value값],'열2이름' :[value1,value2,..value값]..})

 

이런식으로 주로 문자열 형태의 열이름: 들어갈 값들을 리스트 형식으로 나열하면 됩니다

 


 

2) 중첩리스트 이용 방식

pd.DataFrame([값을 넣은 중첩 리스트], index = [인덱스값], columns=[열이름 리스트])

 

이 방법은 전체 데이터 프레임을 통으로 그려준다고 보면 됩니다

 

df = pd.DataFrame([[ 1,2,3].[4,5,6],[7,8,9]], index=[1,2,3], columns = ['a','b','c'])

이런식으로 데이터 값들을 앞에 넣고 index값을 주고 열이름을 지정합니다

 

 


 

** 데이터프레임 index 지정방식

index는 단순히 index = [1,2,3] 처럼 넘버링으로 지칭도 가능하지만, 데이터가 많아지면 사실 단순히 숫자를 나열하면

비효율성이 발생합니다. 때문에, range(1,3), np.arange(1,6), np.arange(1,10,2),

pd.date_range('2022-12-25',periods=5)처럼 다양한 표현이 가능합니다

 

만약, 인덱스를 데이터 프레임에 포함시키고 싶지 않다면 ignore_index =True로 지정하면 됩니다

 


 

3) Series 시리즈 모으기

 

pd.DataFrame([Series1,Series2,Series3])

 

데이터프레임은 곧 Series의 모음으로 볼 수 있기 때문에 위와 같은 구성이 가능합니다

 

 


 DataFrame 조회 방법

 

단일 컬럼(열) 조회 ==> df['컬럼명']

다중 컬럼(열) 조회 ==> df[['컬럼명1','컬럼명2'...]]

 

조회 방법은 비교적 간단하지만 다중컬럼에서 [[ ]] 괄호가 2개인건 꼭!!!! 기억하셔야 합니다

처음 Kaggle할때 제일 헷갈리고 실수 많이 했던 부분이여서 간단하지만 중요한 것 같습니다

 

 

‼ DataFrame 조건 조회 방법

df.loc[라벨 기반조건] => 조건으로 문자(열이름)이 들어간다

df.iloc[인덱스 위치 기반 조건] => 조건으로 숫자가 들어간다

 

가장 빈번히 사용하고 빅데이터 분석기사 시험에 꼭 등장하는 녀석인데요

사실 이 둘 중에 뭘 사용하느냐는 상황에 따라 선택하면 됩니다.

하지만, 둘의 차이점과 활용법을 잘 알아둬야 나중에 헷갈리지 않는 것 같아요

 

df.loc 수행 형태

  • loc은 df.loc[ ['s1','s2'] ] 처럼 s1과 s2행을 반환하는 단일 Series혹은 dataframe 반환
  • df.loc['s1':'s5'] 처럼 s1행에서 s5행까지 슬라이싱 반환
  • df.loc[[True,False,True]]처럼 True인 행만 반환하는 boolean 반환
  • df.loc[행이름, 열이름] 행열 반환

 

 

df.iloc 수행 형태

  • df.iloc[1] 처럼 2번째 행을 반환하라는 Series 반환
  • df.iloc[[0,2]]처럼 첫번째에서 3번째 행을 데이터프레임 형태로 반환
  • df.iloc[0:2] 처럼 첫번째에서 3번째 행을 슬라이싱으로 반환
  • df.iloc[[True,False,True]]처럼 True인 행만 반환하는 boolean 반환
  • df.iloc[행번호, 열번호]를 통해 값을 반환하는 행열반환

 

여기서 중요한건 loc 과 iloc 슬라이싱 반환을 실행할 때
['a':'c'] 처럼 문자로 슬라이싱을 하면 끝 c행이 포함되지만
[0:2]처럼 숫자로 슬라이싱을 하면 파이썬 슬라이싱처럼 끝값의 앞에 값 까지만 포함됩니다

 

728x90
반응형

댓글