데이터프레임 이해
위의 사진은 주식 차트 데이터를 DataFrame 그릇에 담았을 때 나타나는 테이블이다.
데이터 분석에서 가장 중요한 데이터 구조로써, 관계형 데이터베이스의 테이블 또는 엑셀 시트와 같은 형태이다.
다시 말해, 행과 열을 갖는 2차원 행렬이라고 볼 수 있다.
Date, Open 등과 같이 각 열을 변수라고 부르며, 각 행을 관측치라고 부른다.
Pandas 라이브러리
데이터프레임을 다루기 위해서는 Pandas 라이브러리를 불러와야 한다.
# 라이브러리 불러오기
import pandas as pd
이 때, 인덱스(행 번호)와 열에 대해 다음과 같은 개념 이해가 필요하다.
- DataFrame 함수를 사용해 데이터프레임을 만든다.
- 데이터프레임은 여러 열을 가지므로, 인덱스 외에 열 이름에 대한 설정이 필요하다.
- 데이터프레임 생성 시 열 이름을 직접 지정하거나, 나중에 변경 가능하다.
- 열 이름을 지정하지 않으면 열 번호에 기반한 정수(0,1,2,...)가 열 이름으로 초기화된다.
- 의미 있는 값(ex: 날짜)가 인덱스가 되면 분석이 용이 (일반적)
이러한 사항을 바탕으로, 데이터프레임은 다양한 방법으로 생성 가능하다. 다음의 사이트에 공식 문서를 통해 pandas에서 제공하는 다양한 함수들을 찾을 수 있으며, 개발 시 필요한 함수들을 이 사이트의 설명을 바탕으로 활용하게 된다.
https://pandas.pydata.org/docs/reference/index.html
API reference — pandas 2.3.0 documentation
This page gives an overview of all public pandas objects, functions and methods. All classes and functions exposed in pandas.* namespace are public. The following subpackages are public. In addition, public functions in pandas.io and pandas.tseries submodu
pandas.pydata.org
공식 문서 설명을 기반으로, DataFrame의 생성 방법에 대해 알아보자. 먼저, 공식 문서에 나온 DataFrame 함수의 구조를 다음의 사진에서 확인해보자.
자세히 읽어보면 친절하게 어떻게 사용하는지 설명이 되있다. data, index, columns 매개변수(파라미터)를 주로 사용하고, data는 파이썬의 딕셔너리, 리스트를 값으로 설정할 수 있다.
이러한 설명을 예시를 통해 자세한 사용법을 쉽게 이해해보자.
데이터프레임 생성 - 리스트로 만들기
다음의 코드처럼 리스트(배열)을 통해 데이터프레임을 생성할 수 있다.
import pandas as pd
stock = [
[94500,92100,92200,92300],
[96500,93200,95900,94300],
[93400,91900,93400,92100],
[94200,92100,94100,92400],
[94500,92500,94300,92600]
]
# 데이터프레임 생성
df = pd.DataFrame(stock)
# 확인
df.head()
위의 실행 결과와 같이, 인덱스를 지정하지 않으면 행번호가 인덱스, 열번호가 열이름으로 지정된다.
이번에는 똑같이 리스트로 만들되 인덱스와 열이름을 별도로 지정해서 만들어보자.
import pandas as pd
stock = [
[94500,92100,92200,92300],
[96500,93200,95900,94300],
[93400,91900,93400,92100],
[94200,92100,94100,92400],
[94500,92500,94300,92600]
]
dates = ['2019-02-15', '2019-02-16', '2019-02-17', '2019-02-18', '2019-02-19']
names = ['High', 'Low', 'Open', 'Close']
# 데이터프레임 생성
# 인덱스(index) : dates
# 열이름(columns) : names
df = pd.DataFrame(stock, index=dates, columns=names)
# 확인
df.head()
데이터프레임 생성 - 딕셔너리로 만들기
다음의 코드처럼 딕셔너리를 통해 데이터프레임을 생성할 수 있다.
import pandas as pd
dict = {
'Name' : ['Gildong', 'Sarang', 'Jiemae', 'Yeoin'],
'Level' : ['Gold', 'Bronze', 'Silver', 'Gold'],
'Score' : [56000, 23000, 44000, 52000]
}
df = pd.DataFrame(dict)
df.head()
딕셔너리로 만들면 딕셔너리 키가 데이터프레임의 열이름이 된다. 또한, 인덱스를 지정하지 않으면 행번호가 인덱스가 된다.
그렇다면, 인덱스를 별도로 지정해서 만들어보자.
import pandas as pd
dict = {
'Name' : ['Gildong', 'Sarang', 'Jiemae', 'Yeoin'],
'Level' : ['Gold', 'Bronze', 'Silver', 'Gold'],
'Score' : [56000, 23000, 44000, 52000]
}
df = pd.DataFrame(dict, index=['C0001', 'C0002', 'C0003', 'C0004'])
df.head()
이처럼 인덱스를 지정해서 딕셔너리로 데이터프레임을 생성할 수 있다.
그러나 개발의 대부분은 엑셀(csv) 또는 json파일에 데이터를 저장해놓고, 이를 파이썬 코드로 읽어 데이터프레임으로 생성하는 경우가 많다.
그러므로, 다음의 예제는 반드시 기억해놓자. Github에서 CSV 파일을 읽어오는 예이다.
import pandas as pd
# csv 파일 경로 설정
path = 'https://raw.githubusercontent.com/Jangrae/csv/master/pop_simple.csv'
# csv 파일을 읽어, 데이터프레임으로 변환(생성)
pop = pd.read_csv(path)
# 상위 5행만 확인
pop.head()
pandas의 read_csv라는 함수를 통해 파일을 데이터프레임으로 변환할 수 있다. 공식 문서는 다음의 사이트에서 확인할 수 있다.
https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html
pandas.read_csv — pandas 2.3.0 documentation
Character or regex pattern to treat as the delimiter. If sep=None, the C engine cannot automatically detect the separator, but the Python parsing engine can, meaning the latter will be used and automatically detect the separator from only the first valid r
pandas.pydata.org
읽어보면 자세한 매개변수를 확인해 볼 수 있다. 그 중에서 가장 자주 쓰이는 것만 정리해보았다.
- sep : 구분자 지정 (기본값=콤마)
- header : 헤더가 될 행 번호 지정 (기본값=0)
- index_col : 인덱스 열 지정 (기본값=False)
- names : 열이름으로 사용할 문자열 리스트
- skiprows : 처음 몇 줄을 무시할 것인지 지정. 리스트로 지정 가능
'Study > Machine Learning, Deep Learning' 카테고리의 다른 글
[데이터 처리 #0] DataFrame Overview (0) | 2025.06.17 |
---|---|
[데이터 처리 #4] DataFrame 변경 (0) | 2025.06.16 |
[데이터 처리 #3] DataFrame 조회 (0) | 2025.06.16 |
[데이터 처리 #2] DataFrame 탐색 (1) | 2025.06.16 |