시계열 데이터 처리
시계열 데이터
- 행과 행에 시간의 순서(흐름)가 있고
- 행과 행의 시간간격이 동일한 데이터
날짜 추출
csv파일에서 날짜는 object타입이기 때문에 날짜 타입으로 변환해줘야함
날짜로 변환
data['Date'] = pd.to_datetime(data['Date'])
pd.to_datetime(date, format = '%d-%m-%Y')
날짜 요소 뽑기
메서드 | 내용 |
df['date'].dt.date | YYYY-MM-DD(문자) |
df['date'].dt.year | 연(4자리숫자) |
df['date'].dt.month | 월(숫자) |
df['date'].dt.month_name() | 월(문자) |
df['date'].dt.day | 일(숫자) |
df['date'].dt.time | HH:MM:SS(문자) |
df['date'].dt.hour | 시(숫자) |
df['date'].dt.minute | 분(숫자) |
df['date'].dt.second | 초(숫자) |
df['date'].dt.quarter | 분기(숫자) |
df['date'].dt.day_name() | 요일이름(문자) |
df['date'].dt.weekday | 요일숫자(0-월, 1-화) (=dayofweek) |
ddf['date'].dt.weekofyear | 연 기준 몇주째(숫자) (=week) |
df['date'].dt.dayofyear | 연 기준 몇일째(숫자) |
df['date'].dt.days_in_month | 월 일수(숫자) (=daysinmonth) |
시간에 따른 흐름 추출하기
1. shift()
: 시계열 데이터에서 시간의 흐름 전후로 정보를 이동시킬 때 사용
2. rolling().mean()
:시간의 흐름에 따라 일정 기간 동안 평균을 이동하면서 구하기
.rolling(3).mean() -> 오늘을 포함한 3개의 데이터의 평균
.rolling(3).max() -> 오늘을 포함한 3개의 데이터 중에 최대값
.rolling(3, min_periods =1).mean() -> 데이터 한개라도 있으면 계산해라!
3. .diff()
: 특정 시점 데이터, 이전시점 데이터와 차이
.diff(2) = 현재와 전 전 값 차이
시각화 라이브러리
데이터의 시각화
1. Focus
- 우리가 다루는 데이터에는 비즈니스가 담겨있다.
- 데이터 시각화의 목적 : 비즈니스의 인사이트를 파악하는 것
2. 한계
- 그래프와 통계량에는 요약된 정보(원본)가 표현 된다.
- 요약을 하는 관점에 따라 해석의 결과가 달라질 수 있다.
- 어떤 식으로든 요약을 하면, 정보의 손실이 발생된다.
matplotilb와 seaborn 패키지
-> 파이썬으로 그래프를 그릴 때 사용되는 패키지
기본 코드 구조
1. matplotlib.pyplot을 불러옴
-> matplot.pyplot 의 별칭으로 plt 사용
-> Seaborn의 별칭 sns
2. plt.plot()
-> 기본 라인차트를 그려줌
3. plt.show()
-> 그래프를 화면에 출력
기본 코드 : x, y값 지정하기
데이터 테이블 = df
열1 = x, 열2 = y
plt.plot('x', 'y', data = df)
plt.plot(df['x'], df['y'])
꾸미기 1 : x축 값 기울기 조정하기
- X축 값 조정하기 : plt.xticks(rotation = 각도)
- 축 레이블 붙이기 : plt.xlabel('x'), plt.ylabel('y')
- 그래프 타이틀 붙이기: plt.title('title')
꾸미기2: 라인 스타일 조정하기
color = 'red', 'green', 'blue'
혹은 'r', 'g', 'b'
linstyle = 'solid', 'dashed', 'dashdot', 'dotted'
marker =
"."
","
"o"
"v"
"^"
"<"
">"
꾸미기3: 여러 그래프 겹치기
- 차트를 여러 개를 겹쳐서 표현 할 수 있다.
꾸미기4: 범례와 그리드 추가하기
범례
아래에 plt.legend()추가
위치 조절하려면 (loc = 'upper right')
그리드
plt.grid()
데이터프레임.plot
여러그래프 나눠서 그리기
plt.subplot(row, column, index)
개별 변수 분석 도구(단변량 분석)
숫자형 변수 - 어떻게 분석할 수 있을까?
숫자로 요약하기 : 정보의 대푯값
- 평균(mean)
- 산술 평균 : 모든 값들을 더한 후, 개수로 나눈 수
- 기하평균
- 조화 평균 : 분자가 동일한 두 비율의 평균 ( 2ab / (a+b) )
- 중앙값, 중위수(median)
- 자료의 순서상 가운데 위치한 값
- 최빈값(mode)
- 자료 중에서 가장 빈번한 값
- 사분위수(Quantile)
숫자료 요약하기: 기초 통계량
df.describe()
숫자형 변수 시각화하기
기초 통계량(basic statistics) : Box plot
도수분포표(frequency table) : Histogram, Density plot
Histogram
- bins를 적절히 조절
Box Plot
- 반드시 NaN을 제외해야함 (sns.boxplot은 NaN을 알아서 빼줌)
Bar Plot
- 범주별 빈도수를 계산하고
- bar plot으로 나타냄
- plt.bar
범주형 변수 숫자로 요약하기
- 범주별 빈도수
.value_counts()
- 범주별 비율
df['column'].value_counts() / df.shape[0]
시각화
sns.countplot
plt.bar
-> 범주별 빈도수를 직접 계산한 결과를 입력해야 범주별 빈도 bar plot이 그려짐
'AI > DataAnalysis' 카테고리의 다른 글
데이터프레임의 데이터의 구성 확인하기 (0) | 2023.04.11 |
---|---|
결측치 처리 (0) | 2023.02.20 |
Python_웹 크롤링 (0) | 2023.02.20 |
Python_이변량분석 (0) | 2023.02.15 |
Python_데이터 처리 (0) | 2023.02.08 |