기본 콘텐츠로 건너뛰기

라벨이 pandas인 게시물 표시

[matplotlib]quiver()함수

[pandas] pandas.to_datetime

DatetimeIndex 시계열 자료는 인덱스가 날짜 또는 시간인 데이터를 의미합니다. Pandas에서 시계열을 조정하기 위한 4개 개념과 그에 따른 클래스를 사용합니다. Class 설명 type 주요 메서드 DateTimes timezone를 가진 특정한 시간 DateTimeIndex to_datetime, pd.date_range Time delta 절대시간 TimedeltaIndex to_timedelta, timedelta_range Time span 시점과 연관된 주기를 가진 시간 간격 PeriodIndex Period, Period_range Date offset 달력 산술을 위한 상대시간기간 none DateOffset pandas에서 시계열 자료를 생성하기 위해서는 인덱스를 DateTimeIndex 자료형으로 만들어야 합니다. DateTimeindex는 특정한 순간에 기록된 타임스탬프( Timestamp ) 형식의 시계열 자료를 다루기 위한 인덱스입니다. 타임스탬프의 간격이 일정할 필요는 없습니다. DateTimeIndex 인덱스는 다음 함수를 사용합니다. pd.to_datetime(x, dayfirst=False, yearFirst=False, unit=None, origin='unix', utc=False) 날짜/시간을 나타내는 문자열을 자동으로 datetime 자료형으로 바꾼후 DateTimeIndex 자료형 인덱스를 생성합니다. x: integer, float, string, datetime, list, tuple, 1-d array, Series (날짜 데이터) dayfirst=True: 10/11/12 → 2012-11-10 yearfirst=True: 10/11/12 → 2010-11-12 unit: 시계열의 표시 단위(D, s, ms, um, ns) ...

pandas.groupby()에 의한 데이터 그룹화

pandas.groupby()에 의한 데이터 그룹화 내용 df.groupby() get_group() groupby().method() aggregate(), agg() apply() df.groupby() DataFrame.groupby(by=None, axis=0, level=None, …, dropna=True) 인수 by에 지정한 기준으로 데이터 프레임을 그룹화합니다. by: mapping, function, label, or label들의 리스트를 인수로 전달하여 그룹화의 기준을 지정 예) DataFrame.groupby("a").mean(): 인자 a에 의해 자료를 분류하고 그룹화된 값들의 평균을 반환합니다. 이 함수에 의한 결과는 자료형이 지정되지 않은 상태이므로 확인을 위해서는 list()등을 적용하여 자료형을 지정해주어야 합니다. 이러한 방식의 평가를 게으른 평가(lazy estimation)이라고 합니다. 또는 반복문을 사용하여 이 결과의 각 구성물들을 확인할 수 있습니다. 반환물의 구조와 속성은 dir() 함수를 사용하여 확인할 수 있습니다. 데이터를 목록화된 클래스(소그룹)으로 분류하기 위해 사용합니다. 예로 다음은 "Open", "High", "Low", "Close"의 변수로 구성된 kospi 일일 지수 데이터입니다. import numpy as np import pandas as pd import matplotlib.pyplot as plt import FinanceDataReader as fdr st=pd.Timestamp(2024,1, 1) et=pd.Timestamp(2024, 5, 30) colNme=["Open", "High", "Low", "Close"] da=fd...

[pandas] pd.Timestamp

pd.Timestamp Timestamp는 한 시점을 나타내기 위해 사용됩니다. pd.Timestamp(x, unit, tz, year, month, day, hour) x를 timstamp로 전환 x: str, int 등의 자료형으로 날짜 또는 시간 unit: x의 단위로, 초 “s”, 일 “d”등 tz: 시간대 지정 x대신 year, month, day, hour를 각각 지정할 수 있슴, str 또는 int 등 x=pd.Timestamp(2019, 12, 25);x Timestamp('2019-12-25 00:00:00') type(x) pandas._libs.tslibs.timestamps.Timestamp pd.Timestamp(year=2019, month=1, day=2, tz="Asia/Seoul") Timestamp('2019-01-02 00:00:00+0900', tz='Asia/Seoul') pd.Timestamp(year=2019, month=1, day=2, tz="US/Pacific") Timestamp('2019-01-02 00:00:00-0800', tz='US/Pacific')

[pandas] pd.date_range

date_range pd.date_range() 함수를 사용하여 일정기간의 시계열을 생성할 수 있습니다. pd.date_range(start, end, periods, freq, normalize=False) start, end: 시작일, 마지막일 period: 작성할 날짜 수열의 크기 freq: 간격을 지정하는 것으로 다음 표에 제시한 지표를 사용 normalize: 시간 수열을 작성하기 전에 시작/끝을 midnight으로 표준화 Alias Description D 1일간격 B business day(월 ~금) 간격 W week의 첫날(일요일)의 날짜를 반환, 시작일이 주중에 있으면 다음 주의 첫날부터 반환 W-Mon week의 첫날(월요일)의 날짜를 반환 M 월 간격, 월의 마지막 일을 반환 MS 월 간격, 월의 첫 일을 반환 SM 15일 간격, 매월 15 마지막일 순으로 반환 BM 각 월의 평일중 마지막날 BMS 각 월의 평일중 첫날 WOM-2THU 각 달의 두번째 목요일 Q 1년을 분기로 구분하여 분기의 마지막일을 반환 A, Y 년 간격, 연당 마지막일을 반환 AS, YS 년 간격, 연당 시작일을 반환 BH business hour( 900~16:00) 간격 H 1시간 간격 T, min 분간격 S 초간격 pd.date_range("2024-01-06", periods=3, freq="H") DatetimeIndex(['2024-01-06 00:00:00', '2024-01-06 01:00:00', '2024-01-06 02:00:00'], dtype='datetime64[ns]', freq='H') pd.date_range(start="2024-01-06...

[pandas]DataFrame

DataFrame 내용 DataFrame 생성 객체의 호출과 슬라이싱 DataFrame 생성 Data Frame은 두 개 이상의 Series객체를 결합한 여러개의 행과 열로 구성된 구조입니다. 이 구조의 데이터들은 Series와 같이 정수, 문자, 부동소수, 파이썬 객체 등이 될 수 있으며 각 열 마다 다른 자료 형태들을 복합적으로 사용될 수 있습니다. 이 구조가 가질 수 있는 데이터 형태 및 구조를 구체적으로 나타내면 다음과 같습니다. 1차원 배열, 리스트, 사전, 또는 Series 2차원 numpy 배열 Structured or record ndarray(데이터베이스 형식) A Series Another DataFrame 다음 함수에 의해 DataFrame객체를 생성합니다. DataFrame(data, index, columns, dtype); index: 행이름 columns: 열이름 dtype: 자료형 DataFrame은 행과 열을 가진 2차원입니다. 차원과 모양은 속성 .ndim 과 .shape 로 확인 할 수 있습니다. d=[[ 0. , 2.5, 5. , 7.5, 10. ], ['book','house','car','smartphone','computer']] d_df=pd.DataFrame(d); d_df 0 1 2 3 4 0 0.0 2.5 5.0 7.5 10.0 1 book house car smartphone computer print(f...

[pandas] Series

Series 내용 기본 사전 객체를 Series로 전환 Series 객체의 호출과 슬라이싱 기본 pandas는 파이썬을 사용하여 데이터를 정렬하고 분석할 경우 필수적으로 사용하는 라이브러리로 데이터를 표(table) 구조로 반환합니다. 리스트 또는 numpy의 배열(array)형을 기본 자료형로 하므로 numpy와의 호환이 유연하게 이루어지며 pandas내의 다양한 속성, 메소드, 함수등이 numpy의 그것들과 매우 유사합니다. 단지 numpy 배열의 경우 모든 원소의 기본 자료형이 동일해야 하지만 pandas객체의 경우 다양한 자료형들을 혼합하여 사용할 수 있습니다. import numpy as np import pandas as pd Series는 1개의 리스트 또는 1차원 numpy.array 객체 등을 요소로 하는 pandas 객체로서 다음 함수로 생성할 수 있습니다. pd.Series(데이터, index=None, dtype=None, name=None) 각 데이터에 대응하는 이름(행이름)은 index로 지정할 수 있습니다. 기본값은 위 결과와 같이 행인덱스(0, 1, 2, …)입니다. 데이터의 자료형은 dtype으로 지정 지정하지 않을 경우 python에 의해 추론된 자료형으로 지정 name은 Series 객체의 이름을 지정 x=np.linspace(1, 20, 5); print(x) [ 1. 5.75 10.5 15.25 20. ] s=pd.Series(x); print(s) 0 1.00 1 5.75 2 10.50 3 15.25 4 20.00 dtype: float64 위 결과와 같이 series 객체 s는 한개의 열로 반환되며 각 행(샘플)의 이름만 지정됩니다. series 객체 생성 후 요소의 인덱스는 속성 .index 로 지정할 수 있습니다. s.index=['a...

[numpy] 함수의 인자 axis에 대해

함수의 인자 axis 파이썬 패키지인 numpy는 1차원 벡터들을 기반으로 2, 3차원 등의 다양한 차원의 기반이 되는 배열(array)를 생성합니다. 그러므로 그들의 모양과 연산에 관련된 함수들의 인수 중에 axis를 포함합니다. 이 인수 axis는 값들이 나열 되는 축의 인덱스를 의미합니다. 즉, 다음의 1차원 벡터를 나타내기 위해서는 1개의 축만이 필요합니다. np.random.seed(1) x=np.random.randint(0, 10, size=3) print(x) [5 8 9] print(f"x의 모양: {x.shape}\nx의 차원: {x.ndim}") x의 모양: (3,) x의 차원: 1 위 객체 x의 모양은 1개의 숫자로 표현됩니다. 이것은 1개의 축위에 x의 값들을 나열할 수 있음을 나타내는 것으로 축 인덱스는 0만 존재합니다. 인덱스는 0부터 시작하는 음이 아닌 정수입니다. 다음 객체 X는 2차원 다음 객체 X는 2차원으로 모양을 나타내기 위해 2개의 수가 필요합니다. 즉, 두개의 축이 필요함을 의미하는 것으로 축 인덱스는 0과 1이 됩니다. np.random.seed(1) X=np.random.randint(0, 10, size=(3,4)) print(X) [[5 8 9 5] [0 0 1 7] [6 9 2 4]] print(f"X의 모양: {X.shape}\nX의 차원: {X.ndim}") X의 모양: (3, 4) X의 차원: 2 객체 X의 각 요소의 합을 계산하기 위해 함수 np.sum(객체, axis=None)을 사용합니다. 이 함수의 인수 axis는 축 인덱스를 지정하는 것으로 기본값은 None입니다. 이 경우 축을 무시하고 모든 요소의 합을 나타냅니다. np.sum(X) 56 axis=0인 경우 객체 X의 축 인덱스 0에서 다른 값들의 합을 계산합니다. 축인덱스: 1  ↓ 행/열 인덱스 0 1 2 3 1 축 합 축인덱...

[data analysis]Time 변수 조정

Time 변수 조정 내용 date 인덱스의 분리 순환적 시간 특성 One-hot Encoding get_dummies()적용 sklearn.preprocessing.OneHotEncoder 클래스 사용 Time 변수 조정 date 인덱스의 분리 Pandas 객체에서의 시간 인덱스는 DateTime 객체인 Pandas의 DatetimeIndex 유형입니다. 물론 string의 시간(날짜)등 역시 이 자료형으로 전환할 수 있습니다. 그러므로 다음과 같이 인덱스 값에서 년, 월, 일과 같은 새로운 특징(feature, 설명변수)을 쉽게 생성할 수 있습니다. pd객체.index.year: 인덱스 중 년을 추출 pd객체.index.month: 인덱스 중 월 추출 pd객체.index.day: 인덱스 중 일을 추출 pd객체.index.weekday: 인덱스 중 일을 요일로 변경하여 반환 pd객체.index.date: 인덱스 중 년, 월, 일을 추출 다음은 일정기간 코스피 지수(^KS11)의 일일자료입니다. 이 자료는 yfinance 패키지의 download() 함수로 호출한 것으로 행 인덱스인 date의 경우 시간이후까지 표현됩니다. 이를 년, 월, 일로 조정하기 위해 .date 속성을 적용합니다. import numpy as np import pandas as pd from sklearn.preprocessing import StandardScaler import yfinance as yf st=pd.Timestamp(2024, 1, 1) et=pd.Timestamp(2024, 9, 27) data=yf.download("^KS11", st, et) data.index[:4] DatetimeIndex(['2024-01-02 00:00:00+00:00', '2024-01-03 00:00:00+00:00', ...