# 인덱스 차이
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 |