개발(IT)/Python(파이썬)

파이썬(Python) 데이터처리 - 판다스(pandas) #1

isony 2024. 12. 7. 18:15
반응형

파이썬(Python) 데이터처리 - 판다스(pandas)

- 판다스(pandas)는 파이썬(python)의 내장 모듈이 아니므로 설치가 필요합니다.

  (아나콘다 배포판에는 포함되어 있어 별도로 설치할 필요가 없습니다.)

- 판다스는 표 데이터의 처리와 분석을 간편하게 수행할 수 있는 다양한 기능을 제공합니다.

import pandas as pd

 

1. 판다스 데이터 구조와 생성

- Series() : 라벨이 있는 연속된 Series 데이터를 생성

- date_range() : DatatimeIndex 형식의 날짜 데이터를 생성

- DataFrame() : 행과 열이 있는 표 형식의 DataFrame 데이터를 생성

 

(1) Series

- 라벨이 있는 1차원 데이터 타입 생성

ss = pd.Series(data[, index = index_data])

 

 

(예제1)

import pandas as pd

data = [10, 20, 30, 40, 50]
ss = pd.Series(data)
print(ss)


(결과)
0    10
1    20
2    30
3    40
4    50
dtype: int64

 

(예제2)

import numpy as np
import pandas as pd

data = np.array(['a', 'b', 'c', 'd', 'e'])
ss = pd.Series(data, index=[10, 11, 12, 13, 14])
print(ss)


(결과)
10    a
11    b
12    c
13    d
14    e
dtype: object

 

 

(2) date_range()

- 날짜를 입력할때 시작일과 종료일 또는 시작일과 기간을 지정하면 날짜를 자동으로 생성해주는 함수입니다.

ss = pd.date_range(start = None, end = None, periods = None, freq = 'D')

- start : 시작날짜

- end : 종료날짜

- periods : 날짜 데이터 생성 기간

- freq : 날짜 데이터 생성 주기

 

약어 설명 사용예
D 달력 날짜 기준 하루 주기 하루 주기 : freq = 'D', 이틀주기 : freq = '2D'
B 달력 날짜 기준 하루 주기 업무일(월요일~금요일) 기준으로 생성 : freq = 'B', freq = '3B'
W 요일 시작 기준 일주일 주기 일요일 기준 : freq = 'W-SUN' 또는 freq = 'W'
월요일 기준 : freq = 'W-MON', 화요일 기준 : freq = 'W-TUE'
M 월말 날짜 기준 주기 한달 주기 : freq = 'M', 네달 주기 : freq = '4M'
BM 업무 월말 날짜 기준 주기 freq = 'BM', freq = '2BM'
MS 월초 날짜 기준 주기 freq = 'MS', freq = '2MS'
BMS 업무 월초 날짜 기준 주기 freq = 'BMS', freq = '2BMS'
Q 분기 끝 날짜 기준 주기 freq = 'Q', freq = '2Q'
BQ 업무 분기 끝 날짜 기준 주기 freq = 'BQ', freq = '2BQ'
QS 분기 시작 날짜 기준 주기 freq = 'QS', freq = '2QS'
BQS 업무 분기 시작 날짜 기준 주기 freq = BQS', freq = '2BQS'
A 일년 끝 날짜 기준 주기 freq = 'A', freq = '2A'
BA 업무 일년 끝 날짜 기준 주기 freq = 'BA', freq = '2BA'
AS 일년 시작 날짜 기준 주기 freq = 'AS', freq = '2AS'
BAS 업무 일년 시작 날짜 기준 주기 freq = 'BAS', freq = '2BAS'
H 시간 기준 주기 1시간 주기 : freq = 'H', 2시간 주기 : freq = '2H'
BH 업무 시간 기준 주기 업무시간 (09:00 ~ 17:00) 기준으로 생성
T, min 분 주기 10분 주기 : freq = '10T', 30분 주기 : freq = '30min'
S 초 주기 1초 주기 : freq = 'S', 30초 주기 : freq = '30S'

 

(예제)

(예제1)
import pandas as pd

pd.date_range(start='2024-11-01',end='2024-11-15',freq='2D')


(결과)
DatetimeIndex(['2024-11-01', '2024-11-03', '2024-11-05', '2024-11-07',
               '2024-11-09', '2024-11-11', '2024-11-13', '2024-11-15'],
              dtype='datetime64[ns]', freq='2D')



(예제2)
import pandas as pd

pd.date_range(start='2024-11-01', periods=10)


(결과)
DatetimeIndex(['2024-11-01', '2024-11-02', '2024-11-03', '2024-11-04',
               '2024-11-05', '2024-11-06', '2024-11-07', '2024-11-08',
               '2024-11-09', '2024-11-10'],
              dtype='datetime64[ns]', freq='D')



(예제3)
import pandas as pd

pd.date_range(start='2024-11-01', periods=15, freq='B')


(결과)
DatetimeIndex(['2024-11-01', '2024-11-04', '2024-11-05', '2024-11-06',
               '2024-11-07', '2024-11-08', '2024-11-11', '2024-11-12',
               '2024-11-13', '2024-11-14', '2024-11-15', '2024-11-18',
               '2024-11-19', '2024-11-20', '2024-11-21'],
              dtype='datetime64[ns]', freq='B')

 

 

(3) DataFrame()

- 행과 열이 있는 표 형식의 데이터를 생성합니다.

df = pd.DataFrame(data[, index = index_data, columns = columns_data])

 

 

(예제1)

import pandas as pd

raw_data = {'col0': [1, 2, 3, 4],
            'col1': [10, 20, 30, 40],
            'col2': [100, 200, 300, 400]}

data = pd.DataFrame(raw_data)
print(data)


(결과)
   col0  col1  col2
0     1    10   100
1     2    20   200
2     3    30   300
3     4    40   400

 

(예제2)

import pandas as pd

index_data = pd.date_range('2024-11-01', periods=3)
col_data = ['A','B','C','D']
raw_data = np.array([[1, 2, 3, 4], [10, 20, 30, 40], [100, 200, 300, 400]])

data = pd.DataFrame(raw_data, index=index_data, columns = col_data)
print(data)


(결과)
              A    B    C    D
2024-11-01    1    2    3    4
2024-11-02   10   20   30   40
2024-11-03  100  200  300  400

 

반응형