안녕하세요. 언제나 휴일에 언휴예요.
이번 강의에서는 데이터 분석에 많이 사용하는 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]]