- pandas 튜토리얼 : https://pandas.pydata.org/docs/getting_started/intro_tutorials/index.html
- pandas 불러오기
import pandas as pd
pd.__version__ # 불러왔는지 확인
# '2.1.4'
- pandas의 데이터 구조
1) Series() : 라벨을 갖는 1차원 데이터
s1 = pd.Series([10, 20, 30, 40, 50])
s1
# 0 10
# 1 20
# 2 30
# 3 40
# 4 50
# dtype: int64
Series 데이터를 출력하면 데이터 앞에 index가 함께 표시되는데, Series 데이터는 index와 values를 분리해서 가져올 수 있다.
s1.index
# RangeIndex(start=0, stop=5, step=1)
# RangeIndex : index를 범위로 표시함. start ~ stop-1 의 범위 & step 간격으로 증가
s1.values
# array([10, 20, 30, 40, 50], dtype=int64)
배열의 모든 원소가 데이터 타입이 같아야 하는 Numpy와 달리 pandas는 원소의 데이터 타입이 달라도 된다.
s1 = pd.Series(['a', 'b', 'c', 1, 2, 3])
s1
# 0 a
# 1 b
# 2 c
# 3 1
# 4 2
# 5 3
# dtype: object
# object 뜻 : 문자로 처리했다~(정확히 문자는 아님)
데이터가 없을 경우 NumPy를 임포트한 후 np.nan으로 데이터가 없다고 표시할 수 있다.
import numpy as np
s3 = pd.Series([np.nan, 10, 30])
s3
# 0 NaN
# 1 10.0
# 2 30.0
# dtype: float64
# nan : 결측치, missing values
2) date_range() : 날짜 자동 생성
pd.date_range(start=None, end=None, periods=none, freq='D')
# start: 시작 날짜, end: 끝 날짜, periods: 날짜 데이터 생성 기간, freq: 날짜 데이터 생성 주기
* pandas date_range() 함수의 freq 옵션
+) pandas 사이트 링크 : https://pandas.pydata.org/docs/reference/api/pandas.date_range.html
* 예시
pd.date_range(start='2024/01/01', end='2024.01.07')
# DatetimeIndex(['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04',
# '2024-01-05', '2024-01-06', '2024-01-07'],
# dtype='datetime64[ns]', freq='D')
pd.date_range(start='2024/01/01', periods = 4, freq = '2D')
# DatetimeIndex(['2024-01-01', '2024-01-03', '2024-01-05', '2024-01-07'], dtype='datetime64[ns]', freq='2D')
# 2024년 1월 1일부터 2일씩 증가하는 날짜, 4개의 기간
pd.date_range(start='2024-01-01 08:00', periods = 4, freq = 'H')
# DatetimeIndex(['2024-01-01 08:00:00', '2024-01-01 09:00:00',
# '2024-01-01 10:00:00', '2024-01-01 11:00:00'],
# dtype='datetime64[ns]', freq='H')
# 한 시간 주기로 4개의 시간을 생성
3) DataFrame을 활용한 데이터 생성
- DataFrame 구조 : 컬럼 개수가 여러 개인 데이터(라벨이 있는 2차원 데이터를 생성하고 처리할 수 있다.)
pd.DataFrame(data, index=index_data, columns = columns_data)
# data : 리스트, 딕셔너리 타입 데이터, Numpy 배열 데이터, Series나 DataFrame타입 데이터 입력 가능
# index : DataFrame의 세로축 라벨
# columns : DataFrame의 가로축 라벨
* 예시
import numpy as np
import pandas as pd
data = np.array([[1,2,3],[4,5,6],[7,8,9]])
index_date = pd.date_range('2024-01-01',periods=3)
columns_list=['a','b','c']
pd.DataFrame(data, index=index_date, columns=columns_list)
# out :
4) 데이터 연산
- pandas의 Series()와 DataFrame()으로 생성한 데이터끼리는 사칙연산을 할 수 있다.
- 파이썬의 리스트와 NumPy의 배열과 달리 pandas의 데이터끼리는 서로 크기가 달라도 연산 가능(연산할 수 있는 항목만 연산 수행)
* 예시
s1 = pd.Series([1,2,3,4]) # 4개
s2 = pd.Series([10,20,30,40,50]) # 5개
s1+s2
# 0 11.0
# 1 22.0
# 2 33.0
# 3 44.0
# 4 NaN # 연산할 수 없는 부분은 NaN으로 표시
# dtype: float64
- pandas에는 데이터 통계 분석을 위한 다양한 메서드가 있어 데이터 총합, 평균, 표준 편차 등을 쉽게 구할 수 있다.
* 예시
table_data3 = {'봄': [256.5, 264.3, 215.9, 223.2, 312.8],
'여름': [770.6, 567.5, 599.8, 387.1, 446.2],
'가을': [363.5, 231.2, 293.1, 247.7, 381.6],
'겨울': [139.3, 59.9, 76.9, 109.1, 108.1]}
columns_list = ['봄', '여름', '가을', '겨울'] # columns_list 쓰는 이유 : 나중에 다른 column으로 변경하고 싶을 때 사용(지금은 안 써도 됨)
index_list = ['2012', '2013', '2014', '2015', '2016']
df3 = pd.DataFrame(table_data3, columns = columns_list, index = index_list)
df3
# out:
df3.max() # 최댓값
df3.min() # 최소값
df3.std() # 표준 편차
df3.mean() # 평균
df3.median() # 중간값
여기서 axis 인자를 추가하면 연산의 방향을 설정할 수 있다. (인자 axis가 0일 때 : 열별로 연산 수행/1일 때 : 행별로 연산 수행)
df3.mean(axis=1)
# 2012 382.475
# 2013 280.725
# 2014 296.425
# 2015 241.775
# 2016 312.175
# dtype: float64
df3.mean() # axis 인자를 설정하지 않으면 기본값으로 0이 설정됨
# 봄 254.54
# 여름 554.24
# 가을 303.42
# 겨울 98.66
# dtype: float64
describe()를 이용하면 평균, 표준편차, 최솟값, 최댓값 등을 한 번에 구할 수 있다. 이를 통해 데이터 분포의 형태 상상 가능
df3.describe()
# out:
'Python' 카테고리의 다른 글
[matplotlib] 데이터 시각화 (1) | 2024.01.06 |
---|---|
[pandas] 데이터 불러오기 (0) | 2024.01.06 |
Numpy 배열 생성 정리 (0) | 2024.01.06 |
반복문 (0) | 2024.01.06 |
딕셔너리 (0) | 2024.01.06 |