Pandas 핵심 기능들(1)
1. reindex
reindex를 호출하면 데이터를 새로운 index에 맞게 재 배열하고, 존재 하지 않은 index라면 NAN값으로 표시한다. method 옵션을 이용해 ffill 메서드를 활용해 누락된값을 직전의 값으로 채울 수 있다.
DataFrame에서 reindex는 row와 columns모두 변경 가능하다. DataFrame에서도 값의 이름이 다르면 NAN값으로 표시한다.
# DataFrame 생성
df = pd.DataFrame([4.5,9.0,1.0,-2.0],index = ['a','b','c','d'])
df
Out[60]:
0
a 4.5
b 9.0
c 1.0
d -2.0
# reindex
df.reindex(['c','a','b','d','e'])
Out[61]:
0
c 1.0
a 4.5
b 9.0
d -2.0
e NaN
# 누락된 값 직전 값으로 채우기
df.reindex(['c','a','b','d','e'],method = 'ffill')
Out[75]:
0
c 1.0
a 4.5
b 9.0
d -2.0
e -2.0
# index와 columns한번에 변경
df.reindex(['하나',1,2],columns = ['공',1,2])
Out[87]:
공 1 2
하나 NaN NaN NaN
1 NaN 4.0 5.0
2 NaN 7.0 8.0
2. 하나의 row나 columns삭제하기
drop를 사용해서 index를 삭제할 경우 인자 없이 index리스트를 입력하면 되고, columns을 삭제해야 할 경우 aixs = 1 또는 axis = colums을 인자로 넘겨 주면 된다.
inplace인자를 True로 설정할 경우 삭제와 동시에 저장을 하기 때문에 유의해서 사용해야한다.
data = {'state': ['Ohio','Ohio','Ohio','Nevada','Nevada','Nevada'],
'year' : [2000,2001,2002,2001,2002,2003],
'pop' : [1.5,1.7,3.6,2.4,2.9,3.2]}
df = pd.DataFrame(data)
# index를 삭제
df.drop([0,1,2])
Out[96]:
state year pop
3 Nevada 2001 2.4
4 Nevada 2002 2.9
5 Nevada 2003 3.2
# columns를 삭제
df.drop(['state'],axis = 'columns')
Out[97]:
year pop
0 2000 1.5
1 2001 1.7
2 2002 3.6
3 2001 2.4
4 2002 2.9
5 2003 3.2
3. 색인하기, 선택하기, 거르기
비교를 통해 원하는 값을 변경할 수 있다.
df = pd.DataFrame(np.arange(16).reshape(4,4),
index = ['Ohio','colorado','utah','Nevada'],
columns = ['zero','one','two','three'])
df
Out[107]:
zero one two three
Ohio 0 1 2 3
colorado 4 5 6 7
utah 8 9 10 11
Nevada 12 13 14 15
# columns name으로 추출
df['two']
Out[108]:
Ohio 2
colorado 6
utah 10
Nevada 14
Name: two, dtype: int32
# 하나 이상의 columns name으로 추출
df[['zero','three']]
Out[109]:
zero three
Ohio 0 3
colorado 4 7
utah 8 11
Nevada 12 15
# 두번째 index까지 추출
df[:2]
Out[110]:
zero one two three
Ohio 0 1 2 3
colorado 4 5 6 7
# three컬럼의 값이 7초과인 값들
df[df['three']>7]
Out[112]:
zero one two three
utah 8 9 10 11
Nevada 12 13 14 15
# bool로 표현하기
df <7
Out[113]:
zero one two three
Ohio True True True True
colorado True True True False
utah False False False False
Nevada False False False False
# 조건에 맞는 값들 변경하기
df[df < 7] = 0
df
Out[115]:
zero one two three
Ohio 0 0 0 0
colorado 0 0 0 7
utah 8 9 10 11
Nevada 12 13 14 15
3.1 loc와 iloc사용하기
축 이름을 선택할 땐 loc를, 정수로 추출 할 경우에는 iloc를 사용한다.
df
Out[142]:
zero one two three
Ohio 0 1 2 3
colorado 4 5 6 7
utah 8 9 10 11
Nevada 12 13 14 15
df.loc['utah'] or df.iloc[2]
Out[143]:
zero 8
one 9
two 10
three 11
Name: utah, dtype: int32
df.loc['utah',['one','two']] or df.iloc[2,[1,2]]
Out[144]:
one 9
two 10
Name: utah, dtype: int32
# index가 처음부터 utah까지고 two인 열
df.loc[:'utah','two']
Out[148]:
Ohio 2
colorado 6
utah 10
Name: two, dtype: int32
# 모든행이고 0번 부터 2번행 까지이고 two컬럼의 값이 8이상인것
df.iloc[:,:3][df.two>7]
Out[149]:
zero one two
utah 8 9 10
Nevada 12 13 14
4. 주의사항
index가 숫자일경우 loc와iloc의 정수 색인시 추출 되는 값이 다르기 때문에 유의해서 사용해야한다.
df = pd.DataFrame(np.arange(16).reshape(4,4))
df.drop([1,2,3],axis=1,inplace=True)
df
Out[153]:
0
0 0
1 4
2 8
3 12
df.loc[:2]
Out[156]:
0
0 0
1 4
2 8
df.iloc[:2]
Out[157]:
0
0 0
1 4
'python3' 카테고리의 다른 글
파이썬(Python3)Pandas 핵심 기능들(2) (0) | 2023.01.13 |
---|---|
파이썬(Python) Pandas 자료구조(Series, DataFrame) (0) | 2023.01.09 |
파이썬(Python3) 7가지 별 찍기 (0) | 2023.01.07 |
파이썬(Python3) 구구단 출력 프로그램 (0) | 2023.01.07 |