DataFrame
DataFrame이란 전 포스팅에 설명했던 Pandas의 자료구조 중 하나이다. DataFrame이 Series와 다른점은 Series는 1차원 구조의 데이터를 다룬다면, DataFrame은 2차원 구조의 데이터를 다룬다.
첫 번째 방법은 2차원 표에서 컬럼 단위로 데이터를 표현하는 방법이다. 즉, 컬럼명을 딕셔너리 key로, 데이터는 딕셔너리의 값을 사용하는 방법인 것이다.
from pandas import DataFrame
data = {
"종가": [157000, 51300, 68800, 140000],
"PER": [39.88, 8.52, 10.03, 228.38],
"PBR": [4.38, 1.45, 0.87, 2.16]
}
index = ['Naver', '삼성전자', 'LG', '카카오']
df = DataFrame(data, index)
print(df)
두 번째 방법은 먼저 리스트를 받은 다음 index와 columns를 각각 리스트로 받는 것이다.
from pandas import DataFrame
data = {
[157000, 39.88, 4.38],
[51300, 8.52, 1.45],
[68800, 10.03, 0.87],
[140000, 228.38, 2.18]
}
index = ['Naver', '삼성전자', 'LG', '카카오']
columns = ['종가', 'PER', 'PBR']
df = DataFrame(data=data, index=index, columns=columns)
print(df)
세 번째 방법은 각 데이터 값에 '종가', 'PER', 'PBR'를 달아주는 것이다.
data = {
["종가": 157000, "PER":39.88, "PBR":4.38],
["종가": 51300, "PER":8.52, "PBR":1.45],
["종가": 68800, "PER":10.03, "PBR":0.87],
["종가": 140000, "PER":228.38, "PBR":2.18]
}
index = ['Naver', '삼성전자', 'LG', '카카오']
df = DataFrame(data=data, index=index)
print(df)
DataFrame에서 컬럼을 선택하기 위해선 df['컬럼명']을 입력하면 된다. 예를 들어, 위 코드에서 df['PER']을 입력하면
Naver 39.88
삼성전자 8.52
LG 10.03
카카오 228.38
라는 출력값을 가진다.
그리고 로우를 선택하기 위해서는 iloc과 loc을 사용하면 된다. Series를 배우면서 배운 문법과 동일하며 iloc[] 안에는 행 번호를 쓴다는 점과 loc[] 안에는 인덱스 값을 넣는다는 사실까지도 똑같다.
df.iloc[0]
df.loc['Naver']
그리고 Series 때와 같이 연속된 열 값이나 굳이 연속되지 않아도 멀티 로우를 얻을 수 있다. 그리고 Series와는 달리 2차원 형식의 자료를 처리하는 DataFrame에는 행 번호와 열번호를 이용해 원하는 값에 접근할 수 있다.
df.iloc[[0, 2]]
df.loc[['Naver', 'LG']]
df.iloc[0, 2] -->#앞은 행번호, 뒤는 열번호
df.loc['Naver','카카오 ']-->#앞은 인덱스값, 뒤는 컬럼명
DataFrame 컬럼 추가, 삭제도 Series 때와 크게 다르지 않다. 컬럼을 추가하기 위해서는 df['컬럼명']을 사용하면 되고, 삭제하기 위해 df.drop['컬럼명', axis=1]을 사용하면 된다.
!pip install - U pyupbit
inport pyupbit
df = pyupbit.get_ohlcv("KRW - BTC")
df['range'] = df['high'] - df['low']
df2 = df.drop('volume', axis=1)
위에서 pyupbit이란 업비트 API(암호화폐 시장)를 파이썬에서 쉽게 접근하기 위해 저자들이 만들어낸 모듈이다. 이와 비슷한 것으로 Datetimeindex를 이용하여 시계열 데이터와 인덱스를 받는 것이 있다.