컴퓨터/파이썬

파이썬(Python) - Pandas와 Series

해피밀세트 2020. 3. 9. 12:00

 

PANDAS

  • 데이터 분석 기능을 재공하는 라이브러리
  • 1차원 배열 : Serises
  • 2차원 배열 : DataFrame (서로다른 타입의 시리즈들이 모여있는것)

from pandas import Series, DataFrame

import pandas as pd

 


 

1차원 배열 : Serises

  • 1차원 배열
  • 인덱스(색인) 배열의 데이터에 연관된 이름을 가지고 있다.
  • 레코드형식하고 의미가 비슷하다.
  • R 벡터 자료형하고 비슷하다.
  • 운영체제가 64라서 데이터 타입이 int64 나온다.
  • object = 문자형

 

시리즈(Series) 생성 및 확인

s1 = Series([10,20,30,40,50])

s1

type(s1)

s1.astype

 

데이터 타입이 다른 시리즈 생성 및 확인

s1 = Series(['10',20,30,40,50])
s1
type(s1)
s1.astype

 

데이터 타입이 다른 시리즈의 연산

s1+10      # 문자형이므로 + 안된다.

s1*5        # * 되지만 좋은 방법이 아니다.

 

시리즈의 데이터 타입 변환하기

s1 = s1.astype('int')
s1.astype

s1 = s1.astype('int64')
s1.astype

 

시리즈의 index와 value 따로 뽑기

s1.index
s1.values

 

인덱스 수정

s1.index = ['a','b','c','d','e']

s1


시리즈의 연산작업

 

시리즈는 작접 연산작업이 가능하다.
s1+10
s1-10
s1*10
sl/3
s1//3
s1%3

 

리스트는 불가능하다.

lst = [1,2,3]
type(lst)
lst+10                     # 리스트 변수는 연산작업을 이렇게 수행하면 오류남
[i+10 for i in lst]        # 리스트 값을 계산하려면 for문 사용


시리즈의 인덱싱과 슬라이싱

인덱싱

s1['a'] 
s1[['a','b']] 
s1[0]

 

슬라이싱

s1[0:3]

 

조건에 맞춰 값 추출

s1[[True,False,True,False,True]]  #True 위치의 값만 뽑아내기

s1>20
s1[s1>20]


인덱스 값의 수정, 추가, 삭제

원래 있는 값 수정

'a' in s1   
s1['a'] = 100 
s1['a']
s1[0] = 10
s1[0]

 

없는 값 추가

'f' in s1
s1['f'] = 100
s1

 

삭제

del s1['f'] 
s1

 

!! 주의 사항 !!

빈문자열로 바꾸면 데이터 타입이 object가 된다.

s1

s1['a'] = '' 

s1

이때 빈문자열을 숫자로 바꿔도 그대로 object타입이다.

이럴땐 직접 데이터 타입을 바꿔주어야 한다.

s1['a'] = 10
s1
s1 = s1.astype('int64')
s1


조합 데이터 타입을 시리즈로 변환하기

리스트를 시리즈로 바꾸기

lst = [10,20,30]

type(lst)

s2 = Series(lst)

type(lst)

type(s2)

 

튜플을 시리즈로 바꾸기

t = (10,20,30)

type(t)

s3 = Series(t)

type(s3)

 

딕셔너리를 시리즈로 바꾸기

dict = {'a':10, 'b':20, 'c':30}

type(dict)

s4 = Series(dict)

type(s4)

 

세트는 시리즈로 바로 변환할수 없다.

s = {10,20,30}
type(s)
s5 = Series(s)
type(s5)

 

세트 -> 리스트 -> 시리즈 순으로 바꿔야한다.
s = {10,20,30}
type(s)
s5 = Series(list(s))
type(s5)


NaN 값

NaN(Not aNumber) : 누락된 값, NA

 

딕셔너리안에서 필요한 것만 뽑아내기

dict = {'a':10, 'b':20, 'c':30}

type(dict)

s6 = Series(dict,index=['a','c'])

s6

 

만약 값이 없으면 NaN으로 표현됨
dict = {'a':10, 'b':20, 'c':30}
type(dict)
s7 = Series(dict,index=['a','c','d'])
s7

 

NaN값이 들어간 데이터 타입

s7.dtype

 

NaN값 체크 및 확인 방법 
pd.isnull(s7) 
s7[pd.isnull(s7)]

또 다른 NaN값 체크 및 확인 방법 

s7.isnull()
s7[s7.isnull()]

 

NaN 아닌것 체크 확인

pd.notnull(s7)

s7[pd.notnull(s7)]

s7.notnull()

s7[s7.notnull()]

 

반응형