데이터프레임은 Pandas 라이브러리의 핵심 구성 요소 중 하나로, 엑셀의 스프레드시트와 비슷한 테이블 형태의 데이터 구조입니다. 이는 데이터 처리, 조회, 분석에 있어 굉장히 효율적인 방법입니다. 자동차 연비 데이터셋 같은 경우, 리스트나 딕셔너리, 배열 형태로는 저장하기 어렵지만, 데이터프레임 형태로는 쉽게 저장하고 처리(변경, 분석 등)할 수 있습니다.
데이터프레임의 형태
데이터프레임은 행과 열로 이루어져 있으며, 각각의 행은 인덱스로, 열은 열 이름으로 구분됩니다.
- 인덱스와 열 이름이 없는 형태: 인덱스와 열 이름이 없는 데이터프레임은 실무에서는 자주 보기 어렵습니다.
- 열 이름을 지정한 형태: 열 이름만 지정한 데이터프레임 형태는 자주 보게 됩니다. 특별히 인덱스를 지정할 필요가 없는 경우가 많습니다.
- 인덱스와 열 이름을 지정한 형태: 인덱스와 열 이름 모두를 지정한 데이터프레임 형태는 주식 시세와 같이 날짜가 인덱스로 지정되는 경우가 많습니다.
데이터프레임 직접 만들기
데이터프레임은 pd.DataFrame() 함수를 사용하여 직접 만들 수 있습니다. 이 때 필요한 데이터는 다음과 같습니다:
- 데이터
- 열 이름
- 인덱스 이름
라이브러리 불러오기
데이터프레임을 사용하기 위해 pandas 라이브러리를 불러옵니다. 보통 'pd'라는 별칭을 사용합니다.
# 라이브러리 불러오기
import numpy as np
import pandas as pd
리스트로 데이터프레임 만들기
인덱스를 지정하지 않으면 행 번호가 인덱스, 열 번호가 열 이름이 됩니다.
# 1차원 리스트 만들기
prices = [1200, 1300, 1250, 1320]
# 데이터프레임 만들기
df = pd.DataFrame(prices)
# 확인
print(df)
필요하면 인덱스와 열 이름을 별도로 지정할 수 있습니다.
# 리스트 만들기
prices = [[1200, 1300, 1250, 1320],
[1150, 1120, 1130, 1180],
[1230, 1240, 1220, 1190],
[1280, 1300, 1290, 1310],
[1320, 1330, 1310, 1300]]
dates = ['2024-02-15', '2024-02-16', '2024-02-17', '2024-02-18', '2024-02-19']
names = ['Open', 'High', 'Low', 'Close']
# 데이터프레임 만들기
df = pd.DataFrame(data=prices,index=dates, columns=names)
이처럼 리스트를 활용하여 데이터프레임을 만드는 방법은 매우 간단하며, 1원 또는 2차원 리스트를 이용하여 다양한 형태의 데이터레임을 만들 수 있습니다.
딕셔너리로 데이터프레임 만들기
딕셔너리로 데이터프레임을 만들면 딕셔너리의 키가 열 이름이 됩니다. 인덱스를 지정하지 않으면 행 번호가 인덱스가 됩니다.
# 딕셔너리 만들기
data = {
'Name': ['Tom', 'Nick', 'John', 'Sarah'],
'Age': [20, 21, 19, 18],
'University': ['Yonsei', 'Korea', 'Seoul', 'Sogang']
}
# 데이터프레임 만들기
df = pd.DataFrame(data)
# 확인
print(df)
CSV파일 읽어오기
분석용 데이터는 대부분 파일에서 읽어 가져오니 잘 익혀야 할 기능입니다. read_csv() 함수를 사용해서 CSV 파일에서 데이터를 읽어옵니다.
# CSV 파일 읽어오기
df = pd.read_csv('your_file_path.csv')
# 처음 5개 행 출력
print(df.head())
파라메터
# CSV 파일 읽어오기
df = pd.read_csv('your_file_path.csv', sep=',', header=0, index_col=False, names=None, encoding='utf-8')
# 확인
print(df.head())
각 옵션의 의미는 다음과 같습니다:
sep: 데이터의 구분자를 지정합니다. 기본값은 콤마(,)입니다.
header: 헤더가 될 행 번호를 지정합니다. 기본값은 0입니다.
index_col: 인덱스 열을 지정합니다. 기본값은 False입니다.
names: 열 이름으로 사용할 문자열 리스트를 지정합니다.
encoding: 파일의 인코딩 방식을 지정합니다. 기본값은 'utf-8'입니다.
특히, 한글이 포함된 파일을 읽을 때 'utf-8' 인코딩으로 읽지 못하는 경우가 있습니다. 이때는 'CP949' 인코딩을 사용하면 대부분의 문제가 해결됩니다.
인덱스 설정
일반 열을 인덱스 열로 설정하거나, 행 순서에 기반한 정수값 인덱스로 초기화 할 수 있습니다.
1) 일반 열을 인덱스로 지정
파일을 불러올 때나, 불러온 후에 특정 열을 인덱스로 지정할 수 있습니다.
# 파일 불러올 때
df = pd.read_csv('your_file_path.csv', index_col='Name')
# 파일 불러온 후에
df = df.set_index('Name')
# 확인
print(df.head())
2) 인덱스 이름 삭제
인덱스 이름은 필요에 따라 삭제할 수 있습니다.
# 인덱스 이름 삭제
df.index.name = None
# 확인
print(df.head())
3) 인덱스 초기화
인덱스를 초기화하여 행 번호에 기반한 정수 값으로 설정할 수 있습니다.
기존 인덱스 열을 일반 열로 가져오지 않고 버리려면 drop=True를 설정합니다.
# 인덱스 초기화
df = df.reset_index(drop=True)
# 확인
print(df.head())
이렇게 Pandas 라이브러리의 데이터프레임을 사용하면 다양한 형태의 데이터를 효율적으로 관리하고 분석할 수 있습니다.
'PYTHON > Pandas 판다스' 카테고리의 다른 글
[PYTHON] 데이터프레임 전처리 (열 이름 변경, 추가, 삭제) (0) | 2024.03.10 |
---|---|
[PYTHON] 데이터프레임 집계 (0) | 2024.03.10 |
[PYTHON] 데이터프레임 조회 (0) | 2024.03.10 |
[PYTHON] 데이터프레임 탐색 (0) | 2024.03.01 |
[PYTHON] NUMPY 넘파이 (0) | 2024.03.01 |