Python

pandas 간단 정리

jsys 2024. 1. 6. 16:12

- pandas 튜토리얼 : https://pandas.pydata.org/docs/getting_started/intro_tutorials/index.html

 

Getting started tutorials — pandas 2.1.4 documentation

next What kind of data does pandas handle?

pandas.pydata.org

 

 

- 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