AI/DataAnalysis

Python_시계열 데이터, 시각화라이브러리

oaho 2023. 2. 9. 10:51
반응형
시계열 데이터 처리

 

시계열 데이터

  • 행과 행에 시간의 순서(흐름)가 있고
  • 행과 행의 시간간격이 동일한 데이터

날짜 추출

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