# 2012년에서 2016년에 걸쳐 계절별로 강수량의 평균(mean)과 표준 편차(std)를 구함.
df3.mean()
'''
봄 254.54
여름 554.24
가을 303.42
겨울 98.66
dtype: float64
'''
df3.std() # 계절별 강수량 표준편차
'''
봄 38.628267
여름 148.888895
가을 67.358496
겨울 30.925523
dtype: float64
'''
📌 연도별로 평균 강수량과 표준 편차를 구할 경우엔 연산의 방향 설정을 위해 axis인자를 추가 📌 인자 axis가 0이면 DataFrame의 values에서 열별로 연산을 수행하고, 1이면 행별로 연산
🍯 표 Table와 2차원 데이터 처리를 위해 DataFrame을 제공 ▶️ 데이터 Data를 담는 틀 Frame이라는 뜻
1) 데이터 생성
df = pd.DataFrame(data [, index = index_data, columns = columns_data])
🐰 data 인자에는 리스트와 형태가 유사한 데이터 타입은 모두 사용 가능 🥕 리스트, 딕셔너리, numpy의 배열 데이터, Series나 DataFrame 타입의 데이터 입력 가능 🐰 세로축 라벨을 index라 하고, 가로축 라벨을 columns 라고 함 🐰 index와 columns를 제외한 부분을 values라고 함
import pandas as pd
d1 = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]])
d1
🥕 values 부분에는 입력한 data가 순서대로 입력 돼 있고 가장 좌측의 열과 가장 윗줄의 행에는 각각 숫자가 자동으로 생성되어 index, columns를 구성 ▶️ 명시적으로 입력하지 않더라도 자동으로 index, columns가 생성
🍯 pandas 라이브러리 : 파이썬에서 데이터 분석과 처리를 쉽게 처리할 수 있게 도와준다 🍯 pandas는 numpy를 기반으로 만들어졌지만 좀 더 복잡한 데이터 분석에 특화 🍯 numpy가 같은 데이터 타입의 배열만 처리할 수 있는데 반해 pandas는 데이터 타입이 다양하게 섞여 있을 때도 처리 가능
# 어느 가게의 날짜별 판매량을 pandas의 Series 형식으로 입력. 하루는 데이터가 없어서 np.nan을 입력
index_data = ['2018-10-07', '2018-10-08', '2018-10-09', '2018-10-10']
s4 = pd.Series([200, 195, np.nan, 205], index=index_data)
s4
👾 start는 시작날짜, end는 끝날짜 👾 periods는 날짜 데이터 생성 기간 = 생성 갯수 👾 freq는 날짜 데이터 생성 주기 👾 start는 필수이고, end나 periods는 둘 중 하나만 있어도 됨 👾 freq는 입력하지 않으면 'D' 옵션이 설정돼 달력날짜 기준으로 하루씩 증가
# 시작 날짜와 끝 날짜를 지정해 날짜 데이터를 생성. 하루씩 증가한 날짜 데이터가 생성.
pd.date_range(start='2019-01-01', end='2019-01-07')
'''
DatetimeIndex(['2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04',
'2019-01-05', '2019-01-06', '2019-01-07'],
dtype='datetime64[ns]', freq='D')
'''
1) 날짜 데이터 형식
🚀 날짜 데이터를 입력할 때 yyyy-mm-dd yyyy/mm/dd, yyyy.mm.dd, mm-dd-yyyy, mm/dd/yyyy, mm.dd.yyyy
# 2일씩 증가하는 날짜를 생성
pd.date_range(start='2019-01-01', periods=4, freq='2D')
# DatetimeIndex(['2019-01-01', '2019-01-03', '2019-01-05', '2019-01-07'],
# dtype='datetime64[ns]', freq='2D')
# 달력의 요일을 기준으로 일주일씩 증가하는 날짜를 생성.
pd.date_range(start='2019-01-06', periods=4, freq='W')
# DatetimeIndex(['2019-01-06', '2019-01-13', '2019-01-20', '2019-01-27'],
# dtype='datetime64[ns]', freq='W-SUN')
# 업무일 기준 2개월 월말 주기로 12개 날짜를 생성.
pd.date_range(start='2019-01-01', periods=12, freq='2BM')
'''
DatetimeIndex(['2019-01-31', '2019-03-29', '2019-05-31', '2019-07-31',
'2019-09-30', '2019-11-29', '2020-01-31', '2020-03-31',
'2020-05-29', '2020-07-31', '2020-09-30', '2020-11-30'],
dtype='datetime64[ns]', freq='2BM'
'''
# 분기 시작일을 기준으로 4개의 날짜를 생성
pd.date_range(start='2019-01-01', periods=4, freq='QS')
# DatetimeIndex(['2019-01-01', '2019-04-01', '2019-07-01', '2019-10-01'],
# dtype='datetime64[ns]', freq='QS-JAN')
[ 시간 생성 ]
# 1시간 주기로 10개의 시간을 생성한 예
pd.date_range(start='2019-01-01 08:00', periods=10, freq='H')
'''
DatetimeIndex(['2019-01-01 08:00:00', '2019-01-01 09:00:00',
'2019-01-01 10:00:00', '2019-01-01 11:00:00',
'2019-01-01 12:00:00', '2019-01-01 13:00:00',
'2019-01-01 14:00:00', '2019-01-01 15:00:00',
'2019-01-01 16:00:00', '2019-01-01 17:00:00'],
dtype='datetime64[ns]', freq='H')
'''
# 업무 시간을 기준으로 1시간 주기로 10개의 시간을 생성하는 예
# 업무 시간은 9시 부터 17시까지이므로 start시간을 9시 이전으로 설정해도 9시 부터 표시.
pd.date_range(start='2019-01-01 08:00', periods=10, freq='BH')
'''
DatetimeIndex(['2019-01-01 09:00:00', '2019-01-01 10:00:00',
'2019-01-01 11:00:00', '2019-01-01 12:00:00',
'2019-01-01 13:00:00', '2019-01-01 14:00:00',
'2019-01-01 15:00:00', '2019-01-01 16:00:00',
'2019-01-02 09:00:00', '2019-01-02 10:00:00'],
dtype='datetime64[ns]', freq='BH')
'''
# date_range()를 이용해 Series의 index를 지정한 예.
index_date = pd.date_range(start='2019-03-01', periods=5, freq='D')
s = pd.Series([51, 62, 55, 49, 58], index=index_date)
s
'''
2019-03-01,51
2019-03-02,62
2019-03-03,55
2019-03-04,49
2019-03-05,58
'''