판다스의 데이터 프레임은 시리즈의 연속이라고 볼 수 있다. 즉 2차원 데이터를 다루는 자료구조이다. 여러 개의 시리즈가 모여서 하나의 데이터 프레임을 구성하게 되는 것이다.
데이터 프레임 생성 예제
먼저, 데이터를 준비한다. 슬램덩크 주요 인물 8명의 데이터를 사전 자료구조(딕셔너리)로 만들고 이를 데이터 프레임으로 변환하였다.
data = {
'이름': ['채치수', '정대만', '송태섭', '서태웅', '강백호', '변덕규', '황태산', '윤대협'],
'학교': ['북산고', '북산고', '북산고', '북산고', '북산고', '능남고', '능남고', '능남고'],
'키': [197, 184, 168, 187, 188, 202, 188, 190],
'국어': [90, 40, 80, 40, 15, 80, 55, 100],
'영어': [85, 35, 75, 60, 20, 100, 65, 85],
'수학': [100, 50, 70, 70, 10, 95, 45, 90],
'과학': [95, 55, 80, 75, 35, 85, 40, 95],
'사회': [85, 25, 75, 80, 10, 80, 35, 95],
'SW특기': ['Python', 'Java', 'Javascript', '', '', 'C', 'PYTHON', 'C#']
}
데이터 프레임 생성 : 이제 이 데이터를 판다스 데이터 프레임으로 변환하자
import pandas as pd
# 데이터 프레임 생성
df = pd.DataFrame(data)
print(df)
이렇게 하면 다음과 같은 출력 결과를 얻게 된다::
이름 학교 키 국어 영어 수학 과학 사회 SW특기
0 채치수 북산고 197 90 85 100 95 85 Python
1 정대만 북산고 184 40 35 50 55 25 Java
2 송태섭 북산고 168 80 75 70 80 75 Javascript
3 서태웅 북산고 187 40 60 70 75 80
4 강백호 북산고 188 15 20 10 35 10
5 변덕규 능남고 202 80 100 95 85 80 C
6 황태산 능남고 188 55 65 45 40 35 PYTHON
7 윤대협 능남고 190 100 85 90 95 95 C#
데이터 프레임의 특정 열에 접근하는 방법을 살펴보자.
1. 단일 열 접근
# '이름' 열 데이터 접근
print(df['이름'])
0 채치수
1 정대만
2 송태섭
3 서태웅
4 강백호
5 변덕규
6 황태산
7 윤대협
Name: 이름, dtype: object
2. 다중 열 접근:
여러 열을 선택할 수도 있다. 두 개 이상의 다중 열 또는 컬럼에 접근하여 컬럼을 가져오기 위해서는 df라고 적고 대괄호 안에 대괄호를 하나 더 입력하여 열을 지정하면 두 개 이상의 컬럼을 가져올 수 있다.
# '이름'과 '키' 열 데이터 접근
print(df[['이름', '키']])
이름 키
0 채치수 197
1 정대만 184
2 송태섭 168
3 서태웅 187
4 강백호 188
5 변덕규 202
6 황태산 188
7 윤대협 190
데이터 프레임의 인덱스를 임의로 지정할 수도 있다.
# 인덱스 지정
df = pd.DataFrame(data, index=[1, 2, 3, 4, 5, 6, 7, 8])
print(df)
이름 학교 키 국어 영어 수학 과학 사회 SW특기
1 채치수 북산고 197 90 85 100 95 85 Python
2 정대만 북산고 184 40 35 50 55 25 Java
3 송태섭 북산고 168 80 75 70 80 75 J avascript
4 서태웅 북산고 187 40 60 70 75 80
5 강백호 북산고 188 15 20 10 35 10
6 변덕규 능남고 202 80 100 95 85 80 C
7 황태산 능남고 188 55 65 45 40 35 PYTHON
8 윤대협 능남고 190 100 85 90 95 95 C#
기존 데이터 프레임에서 원하는 열만 선택하여 새로운 데이터 프레임을 만들거나 컬럼의 순서를 변경한 새로운 데이터 프레임을 만들 수도 있다.
1. 특정 열 선택하여 새로운 데이터 프레임 만들기
# 특정 열 선택
df = pd.DataFrame(data, columns=['이름', '학교', '키'])
print(df)
이름 학교 키
0 채치수 북산고 197
1 정대만 북산고 184
2 송태섭 북산고 168
3 서태웅 북산고 187
4 강백호 북산고 188
5 변덕규 능남고 202
6 황태산 능남고 188
7 윤대협 능남고 190
2. 컬럼의 순서를 변경한 새로운 데이터 프레임을 만들기
# 열 순서 변경
df = pd.DataFrame(data, columns=['이름', '키', '학교'])
print(df)
이름 키 학교
0 채치수 197 북산고
1 정대만 184 북산고
2 송태섭 168 북산고
3 서태웅 187 북산고
4 강백호 188 북산고
5 변덕규 202 능남고
6 황태산 188 능남고
7 윤대협 190 능남고
데이터프레임에 접근하는 방법 정리
단일 열 접근: df['열이름']
다중 열 접근: df[['열이름1', '열이름2']]
인덱스 지정: pd.DataFrame(data, index=[인덱스리스트])
특정 열 선택 및 순서 변경: pd.DataFrame(data, columns=['열이름1', '열이름2'])