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
'컴퓨터 > 파이썬' 카테고리의 다른 글
파이썬(Python) - Pandas로 CSV 파일 읽기 (0) | 2020.03.10 |
---|---|
파이썬(Python) - Series와 DataFrame의 사칙연산 (0) | 2020.03.10 |
파이썬(Python) - Pandas와 Series (0) | 2020.03.09 |
파이썬(Python) - collections.Count() / map (0) | 2020.02.27 |
파이썬(Python) - 파일 열기 모드 / with문 (0) | 2020.02.26 |