pandas의 DataFrame 생성 [미래 실험실 pYTHON]

안녕하세요. 언제나 휴일에 언휴예요.

이번 강의에서는 데이터 분석에 많이 사용하는 pandas의 DataFrame을 생성하는 방법을 알아볼게요.

== 다루는 내용
리스트로 DataFrame 생성
행(row) 헤더 정보를 포함해서 리스트로 DataFrame 생성
열(column) 헤더 정보를 포함해서 리스트로 DataFrame 생성
딕셔너리로 DataFrame 생성
DataFrame에서 행 헤더, 열 헤더, 값 정보 확인하기
전체 실습 코드

리스트로 DataFrame 생성

pandas의 DataFrame은 테이블 구조와 흡사합니다. 이름은 R언어의 dataframe에서 착안한 듯 보이네요.

DataFrame 함수는 첫 번째 인자로 데이터를 받습니다.

나머지 인자는 선택 사항입니다.

DataFrame(data=None, index:optional=None, columns:optional=None, dtype:Union=None,copy:bool=FALSE)

다음은 번호와 이름을 값으로 갖는 DataFrame을 생성하는 코드입니다.

import pandas as pd
#리스트로 생성
num_list = [1,2,3]
name_list = ['홍길동','강감찬','을지문덕']
pdf1 = pd.DataFrame([num_list,name_list])
print('pdf1')
print(pdf1)

다음은 출력 결과입니다.

pdf1
     0    1     2
0    1    2     3
1  홍길동  강감찬  을지문덕

출력 결과를 보면 행과 열의 헤더 정보는 0부터 순차적으로 증가하는 값으로 만들어지고 있습니다.

행(row) 헤더 정보를 포함해서 리스트로 DataFrame 생성

행 헤더 정보를 인자로 전달하여 DataFrame을 생성할 수 있어요.

이 때 행 헤더 정보는 “index=행 헤더 정보” 처럼 표현합니다.

다음은 행 헤더 정보를 전달하여 DataFrame을 생성하는 코드입니다.

rname = ['번호','이름']
pdf2 = pd.DataFrame([num_list,name_list],index=rname)
print('pdf2')
print(pdf2)

실행 결과는 다음과 같습니다.

pdf2
      0    1     2
번호    1    2     3
이름  홍길동  강감찬  을지문덕

열(column) 헤더 정보를 포함해서 리스트로 DataFrame 생성

 

열 헤더 정보를 인자로 전달하여 DataFrame을 생성할 수 있어요.

이 때 열 헤더 정보는 “columns=열 헤더 정보” 처럼 표현합니다.

다음은 열 헤더 정보를 전달하여 DataFrame을 생성하는 코드입니다.

cname = ['1번','2번','3번']
pdf3 = pd.DataFrame([num_list,name_list],index=rname,columns=cname)
print('pdf3')
print(pdf3)

실행 결과는 다음과 같습니다.

     1번   2번    3번
번호    1    2     3
이름  홍길동  강감찬  을지문덕

딕셔너리로 DataFrame 생성

딕셔너리로 DataFrame을 생성할 수도 있습니다.

다음은 앞에서 사용한 이름 목록에 나이 목록을 추가하여 딕셔너리 객체를 선언한 것입니다.

age_list=[20,45,35]
td = {
    '이름':name_list,
    '나이':age_list
}

그리고 다음은 이를 인자로 전달받아 DataFrame을 생성하는 코드입니다.

pdf4 = pd.DataFrame(td)
print('pdf4')
print(pdf4)

실행 결과는 다음과 같습니다.

pdf4
     이름  나이
0   홍길동  20
1   강감찬  45
2  을지문덕  35

DataFrame에서 행 헤더, 열 헤더, 값 정보 확인하기

DataFrame에서는 행 헤더 정보를 확인할 때 index를 사용합니다.

DataFrame에서는 열 헤더 정보를 확인할 때 columns를 사용합니다.

DataFrame에서는 값 헤더 정보를 확인할 때 values를 사용합니다.

print(pdf4.index)
print(pdf4.columns)
print(pdf4.values)

다음은 실행 결과입니다.

RangeIndex(start=0, stop=3, step=1)
Index(['이름', '나이'], dtype='object')
[['홍길동' 20]
 ['강감찬' 45]
 ['을지문덕' 35]]

전체 실습 코드

#pandas의 DataFrame 생성
import pandas as pd
#리스트로 생성
num_list = [1,2,3]
name_list = ['홍길동','강감찬','을지문덕']
pdf1 = pd.DataFrame([num_list,name_list])

print('pdf1')
print(pdf1)

rname = ['번호','이름']
pdf2 = pd.DataFrame([num_list,name_list],index=rname)
print('pdf2')
print(pdf2)

cname = ['1번','2번','3번']
pdf3 = pd.DataFrame([num_list,name_list],index=rname,columns=cname)
print('pdf3')
print(pdf3)
#딕셔니리 생성
age_list=[20,45,35]
td = {
    '이름':name_list,
    '나이':age_list
}
pdf4 = pd.DataFrame(td)
print('pdf4')
print(pdf4)

print(pdf4.index)
print(pdf4.columns)
print(pdf4.values)

실행 결과입니다.

pdf1
     0    1     2
0    1    2     3
1  홍길동  강감찬  을지문덕
pdf2
      0    1     2
번호    1    2     3
이름  홍길동  강감찬  을지문덕
pdf3
     1번   2번    3번
번호    1    2     3
이름  홍길동  강감찬  을지문덕
pdf4
     이름  나이
0   홍길동  20
1   강감찬  45
2  을지문덕  35
RangeIndex(start=0, stop=3, step=1)
Index(['이름', '나이'], dtype='object')
[['홍길동' 20]
 ['강감찬' 45]
 ['을지문덕' 35]]