본 게시물은 유튜브 파이스탁님의 파이썬 판다스 기초 강의를 들으며 작성하였습니다
:2차원 데이터를 효과적으로 표현한 판다스 자료구조
DataFrame으로 데이터를 표현하는 방식은 컬럼(열)단위로 표현하는 방법과 로우(행)단위로 표현하는 방법이 있음
1. 컬럼단위
컬럼명을 딕셔너리의 key로 데이터는 딕셔너리의 values로 사용!
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)
'''
종가 PER PBR
NAVER 157000 39.88 4.38
삼성전자 51300 8.52 1.45
LG전자 68800 10.03 0.87
카카오 140000 228.38 2.16
'''
2. 로우단위
data, index, cloumns를 각각 리스트로 표현
from pandas import DataFrame
data = [
[157000,39.88,4.38],
[51300,8.52,1.45],
[68800,10.03,0.87],
[140000,228.38,2.16]
]
index = ["NAVER", "삼성전자", "LG전자", "카카오"]
columns = ["종가", "Per", "PBR"] # label
df = DataFrame(data,index,columns)
print(df)
'''
종가 Per PBR
NAVER 157000 39.88 4.38
삼성전자 51300 8.52 1.45
LG전자 68800 10.03 0.87
카카오 140000 228.38 2.16
'''
1. 컬럼 선택
대괄호['컬럼명']을 통해서 단일 컬 선택 가능
두개 이상의 컬럼을 가져오고 싶으면 다음의 구조로 가져오면 됨
df[['컬럼명1', '컬럼명2']]
2. 로우 선택
로우를 선택할 때는 iloc나 loc속성 사용
속 | 기능 |
loc | 인덱스를 사용해서 로우 선택 |
iloc | 행번호를 사용해서 로우 선택 |
두개 이상의 열을 가져오고 싶으면 다음의 구조로 가져오면 됨
df.iloc[[0,1]]
df.loc[["인덱스1","인덱스2"]]
1. 로우 슬라이싱
iloc.loc속성을 사용하여 슬라이싱
행번호로 가져올 땐 3 그 전까지 가져오고 인덱스로 가져올 땐 LG전자 까지 가져옴!!
행과 열을 모두 써주면 됨
df.iloc[행번호, 열번호]
df.loc[인덱스, 컬럼명]
df.iloc[행번호 리스트, 열번호 리스트]
df.loc[인덱스 리스트, 컬럼명 리스트]
예시를 위해 업비트API를 이용
pyupbit 모듈이란, 업비트 API를 파이썬에서 쉽게 사용하기 위해서 저자들이 개발한 모듈이다.
굳이 API를 호출할 필요 없이 pyupbit 모듈을 이용하면 간편한 경우가 많다.
import pyupbit
df = pyupbit.get_ohlcv("KRW-BTC")
df.head()
위 사진처럼 직접 인덱스 값을 넣고 원하고자 하는 데이터를 활용하면 됨
df.drop('컬럼명', axis=1)
# axis = 1은 컬럼 axis=0은 row
원본은 그대로 유지되고 컬럼이 삭제된 새로운 데이터프레임 객체가 리턴
시계열 데이터
일정 시간 간격으로 측정되거나 기록된 데이터로, 예를 들어 주식 가격, 날씨 정보, 경제 지표, 센서 데이터 등을 포함할 수 있습니다.
date = ["2023-09-20", "2023-09-21"]
index = pd.to_datetime(date)
index
#DatetimeIndex(['2023-09-20', '2023-09-21'], dtype='datetime64[ns]', freq=None)
loc속성 사용
df.loc[인덱스] = 데이터
df.drop(로우 인덱스, axis=0)
이것도 원본은 유지되고 삭제된 객체 리턴
위에 추가했던거 삭제해보겠음
비교 연산자의 결과는 Boolean 값을 갖고 있는 시리즈 객체임
데이터프레임의 연산은 기본적으로 같은 인덱스에 있는 컬럼과 컬럼 사이에 적용
같은 열끼리의 값을 빼고 싶을땐 어떻게 해야하나? => 새로운 열 추가
df['컬럼명'].shift(1)
https://wikidocs.net/book/3488
[혼자 공부하는 머신러닝+딮러닝]데이터 다루기 - 데이터 전처리 (1) | 2023.10.06 |
---|---|
[혼자 공부하는 머신러닝+딮러닝]데이터 다루기 - 훈련 세트와 테스트 세트 (0) | 2023.10.05 |
데이터 시각화 - seaborn (2) | 2023.10.05 |
[Pandas] 판다스 시리즈(Series) (0) | 2023.09.20 |
[Pandas] Numpy 기초 (0) | 2023.09.19 |