본문 바로가기
Language&Framework&Etc/Pandas

판다스 기본 학습

by 머리올리자 2023. 2. 19.
# 인덱스 차이
pd_series = pd.Series([1, 2, 3, 4], index=["일", "이", "삼", "사"])
pd_series_no_idx = pd.Series([1, 2, 3, 4])

index 있을 때

일    1
이    2
삼    3
사    4
dtype: int64

index 없을 때

0    1
1    2
2    3
3    4
dtype: int64

range

pd.Series(range(100, 110))
0    100
1    101
2    102
3    103
4    104
5    105
6    106
7    107
8    108
9    109
dtype: int64

인덱스 접근

pd_series.index
Index(['일', '이', '삼', '사'], dtype='object')

값 접근

pd_series.values
array([1, 2, 3, 4])

시리즈 데이터 이름 정의

pd_series.name = "정보"
pd_series
일    1
이    2
삼    3
사    4
Name: 정보, dtype: int64

시리즈 인덱스 이름 정의

pd_series.index.name = "순서"
pd_series
순서
일    1
이    2
삼    3
사    4
Name: 정보, dtype: int64

여러 시리즈 결합으로 데이터프레임 만들기

s1 = pd.Series([1,2,3,4,5])
s2 = pd.Series([2,3,4,5,1])
s3 = pd.Series([3,4,5,1,2,])
df = pd.DataFrame({'S1': s1, 
                   'S2': s2,
                   'S3': s3})
   S1  S2  S3
0   1   2   3
1   2   3   4
2   3   4   5
3   4   5   1
4   5   1   2

결측치 확인

df.isnull()
df.isna()

# 위 두개는 같은 동작 수행 -> 판다스가 R영향 받았는데 R에서는 na와 null 데이터를 다른 데이터로 구분

df.isin([np.nan])

 

값의 개수

df.count() #NaN을 제외한 모든 데이터 개수 출력

여러 컬럼들을 가져올 때(리스트 형태로 전달)

df[['Open', 'Close']]

여러 행들을 가져올 때(슬라이싱)

df[0:3]
df['인덱스 탐색 시작 지점':'인덱스 탐색 종료 지점']
# df["2010-01-01" : "2011-01-01"]

column과 날짜지정

아래와 같은 코드를 수행하면 index_col을 그냥 숫자가 아닌 'Data'의 값들을 가져온다.

parse_dates를 수행하면, 내부적으로 날짜 데이터 인식

appl_df = pd.read_csv("../test.csv", index_col='Date', parse_dates=['Date'])

 

loc, iloc

loc : 인덱스 라벨 값 기반으로 데이터 추출

iloc : 정수형 값으로 데이터 추출

df.loc[행 인덱싱, 열 인덱싱]
# df.loc['2018-10-10':'2018-10-20', ['Open', 'High', 'Low', 'Close']]
df.iloc[행 인덱싱, 열 인덱싱]
# appl_df.iloc[8000:8010, [0, 1, 2, 3]]

iloc :데이터를 정수형으로 전달할 수 있어 문자로 전달하는 것보다 간단하게 사용 가능 / 반면 데이터 수가 많을 때는 원하는 데이터를 쉽게 취득하기 어려움

 

shift 함수

인덱스에 연결된 데이터를 일정 간격으로 이동시키는 함수.

이전 일자 데이터 혹은 N일 전 데이터를 손쉽게 가져올 수 있음.

 

pct_change()

현재 값과 이전 요소의 값의 백분율 변화량을 연산하는 함수

pct_change 함수를 사용하면 수익율을 쉽게 계산

 

diff

변화량 계산

rolling

이동 평균 계산

 -> 윈도우 기반 시간 delta 간격으로 새로운 값을 보여준다.

 

제한된 범위 없이 윈도우 크기로 새로운 시점에 새로운 결괏값을 계산

-> 시간 기반 윈도우

 

resample

함수의 시간 간격을 재조정하는 기능.

일별 -> 월별 / 월별 -> 일별

  • 업 샘플링 : 분 단위, 초 단위로 샘플의 빈도수 증가 : interpolation으로 누락된 데이터를 채워나감
  • 다운 샘플링 : 몇 일, 몇 달 단위로 샘플의 빈도수를 감소 : aggregation하는 방법으로 데이터 사용

금융이나 시계열 데이터를 다룰 때는 업 샐플링보다 다운 샘플링을 사용하는 경우가 많음.

 

주기 기반으로 동작하므로 고정된 크기 내에서 최솟값과 최댓값 사이의 일정 값을 보여주게 된다.

-> 주 기반 윈도우

'Language&Framework&Etc > Pandas' 카테고리의 다른 글

결측치 처리  (0) 2023.02.20
Datetime 다루기  (0) 2023.02.19