DATA/Pandas
Pandas - 기초, Serise, DataFrame, isna()
jun.s.gi
2022. 11. 27. 00:06
728x90
엑셀은 행과 열로 이루어진 표에 입력된 데이터를 처리하는 데 탁월한 성능을 보이고 있다. 데이터 과학자는 이와 같은 Table 형태의 데이터를 선호한다. 넘파이는 2차원 행렬 형태의 데이터를 지원하지만, 데이터의 행, 열에 대한 레이블을 가지고 있지 않다는 한계가 있다.
판다스는 넘파이를 기반으로 하기 때문에 처리속도가 빠르고, 행 열로 잘 구조화된 데이터 프레임을 제공하며, 이 데이터 프레임을 조작할 수 있는 다양한 함수를 지원한다.
matplotlib과도 통합되어 있어 판다스는 데이터 과학을 위한 핵심적인 도구라고 이야기할 수 있다.
1. Series 클래스
판다스 패키지는 일반적으로 import할 때 pd라는 별칭을 부여한다.
Series는 같은 자료형의 데이터를 저장하는 인덱싱된 1차원 배열이다.
아래 코드와 같이 직접 배열을 통해 데이터를 넣는 방법도 있지만 객체를 넣는 방법도 있다
import pandas as pd
import numpy as np
se = pd.Series([1, 2, np.nan, 4])
se
"""
data = [1, 2, np.nan, 4]
se = pd.Series(data, index = ['a', 'b', 'c', 'd']
se
"""
위 코드를 실행하면 아래와 같이 출력한다.
더보기
np.nan은 결손값을 의미하는데 판다스에서는 Not a Number를 의미하는 NaN으로 나타낸다 (혹은 NA)
이와같이 NaN데이터를 결손값 또는 결측값이라고 한다.결측값을 어떻게 다루느냐에 따라 우리가 원하는 결과가 나올 수도있고 왜곡된 결과가 나올수도있다.
주석 부분처럼 인덱스 옵션을 사용하여 위 출력의 인덱스를 직접 설정할 수 있다.
2. DataFrame()
1차원의 Serise 자료구조로는 정보가 부족할 때 사용되는 2차원 자료구조 DataFrame
아래와 같이 월, 수익, 지출과 같은 열의 이름(칼럼)을 지정할 수 있다.
month_se = pd.Series(["1월","2월","3월","4월"])
income_se = pd.Series([9500, 6200, 6050, 7000])
expenses_se = pd.Series([5040, 2350, 2300, 4800])
df = pd.DataFrame({'월': month_se, '수익': income_se, '지출' : expenses_se})
print(df)
위 데이터프레임을 통해 아래와 같이 최대 수익이 발생한 월에 대해 알아볼 수 있다.
m_idx = np.argmax(income_se) # numpy의 최대값 인덱스를 반환해주는 argmax()
print('최대 수익이 발생한 월 : ', month_se[m_idx])
print('월 평균 수익 : ', income_se.mean())
print('월 최대 수익 : ', income_se.max())
2. isna() 함수
isna()함수를 사용하면 결손값이 있는지 없는지 boolean값으로 돌려준다
(데이터가 결손값이면 True, 아니면 False)
728x90