인공지능/파이썬

파이썬(Python) - Pandas와 DataFrame

해피밀세트 2020. 3. 10. 00:38
반응형

 

2차원 배열 : DataFrame

  • 2차원배열
  • 표형식의 자료구조
  • 컬럼은 서로 다른 종류값(문자, 숫자. 불리언)
  • sql(table), R(data.frame)

 

 

데이터 프레임(DataFrame) 생성

df1 = DataFrame([[1,2,3],[4,5,6],[7,8,9]])
df1

 

딕셔너리를 데이터 프레임으로 변환하기

data = {'도시':['서울','부산','강원','인천'],

        '인구수':[500,400,200,300]}

data

type(data)

df2 = DataFrame(data)

df2

 

처음부터 데이터 프레임으로 만들기
df2 = DataFrame({'도시':['서울','부산','강원','인천'],
        '인구수':[500,400,200,300]})
df2
type(df2)

 

데이터프레임 데이터 타입 확인

type(df2)

df2.astype

df2.dtypes

df2.dtype   # 오류남 

 

데이터 프레임의 정보(구조) 확인 ( 기억하자!!!)

df2.info()

 

데이터 프레임의 정보 딕셔너리 형식으로 확인 가능

df2.columns     #컬럼 정보

df2.index         #인덱스 정보

df2.values       #array형식 값

 

열이름 / 행이름 변경

df2.columns = ['지역','가구수']           #열이름(컬럼) 변경              
df2.index = ['one','two','three','four']    #행이름(인덱스) 변경
df2

 

데이터프레임에 컬럼을 추가 (인덱스 이름이 동일해야함)

s = Series([1000,2000,3000,400],index=['one','two','three','four'])

s.dtype

df2['부채'] = s

df2

직접 추가

df2['인구수'] = [1000,2000,300,500]

df2

 

컬럼 삭제

del df2['부채']

df2


데이터 프레임의 NaN값

컬럼, 인덱스 형식이 안맞으면 NaN값이 들어간다.

data = {'서울':{2001:200,2002:300},

          '부산':{2000:150,2001:50,2002:200}}

data

df3 = DataFrame(data)

df3

 

NaN값이 포함된 데이터 프레임 형식 확인

df3.columns
df3.index
df3.values
df3.dtypes

 

NaN값이 포함된 데이터 프레임 컬럼 형식 확인

df3['서울']           #시리즈 모양으로 출력

df3['서울'].dtype

df3['서울'].dtypes

 

데이터 프레임 정보 확인

df3.info()


행/열/NaN값 변환

 

행과 열 바꾸기

df4 = df3.T

df4

 

인덱스 바꾸기

import numpy as np
df = DataFrame(np.arange(9).reshape(3,3),
                      index=['a','b','c'],columns=['x','y','z']) 
df

df2 = df.reindex(['a','b','c','d'])
df2

 

NaN 채우기

df2 = df.reindex(['a','b','c','d'],fill_value = 0)

df2

 

method='ffill' or 'pad' 앞에있는 값으로 NaN값을 채운다.

df2 = df.reindex(['a','b','c','d'],method='ffill')

df2

df2 = df.reindex(['a','b','c','d'],method='pad')

df2

 

뒤에있는 값을 기준으로 채우기

df2 = df.reindex(['a','b','c','d'],method='bfill')

df2

df2 = df.reindex(['a','b','c','d'],method='backfill')

df2


열 삭제하는 방법

 

값을 삭제(미리보기)

obj = Series(np.arange(5),index=['a','b','c','d','e'])

obj

obj.drop('e')

obj

변수에 넣어주면 아예 삭제됨

obj = obj.drop(['c','d'])

obj

 

행 삭제하는 방법

df = DataFrame(np.arange(16).reshape(4,4),

                      index = ['w','x','y','z'],columns=['one','two','three','four'])

df

df.drop('x')     # 행(인덱스)를 삭제 

인덱스 이름이 아니면 오류가 난다.

df.drop('two') 

 

axis(축)을 사용하여 행과 열 삭제(axis 기본값 = 0)

df = df.drop('x',axis = 0)      # 행을 삭제
df = df.drop('two',axis = 1)  # 열을 삭제
df

 

여러개 삭제

df = df.drop(['one','three'],axis = 1)
df

반응형