파이썬 버전 3.7 기준
pandas 버전 0.25.1 기준
데이터의 선택, 추가, 제거, 인덱싱(DataFrame 및 Series) |
본 포스팅에서는 pandas에서 데이터의 선택, 배정, 추가하는 방법에 대해서 간략히 다룰 예정이다.
그외에 pop 메서드와 insert 메서드에 대해서도 다뤄볼 것이다.
데이터의 선택, 배정, 추가, 제거 |
대괄호를 이용한 데이터의 처리 |
DataFrame과 Series 객체와 유사하게 처리할 수 있다.
대괄호에는 데이터의 위치를 나타내는 레이블이 가능하다.
딕셔너리에서 사용하는 대괄호[ ]를 사용하는 문법을 적용하여 데이터를 처리할 수 있다.
○ Series: 해당되는 요소, 즉 스칼라(Scalar)를 선택하여 처리할 수 있다.
○ DataFrame: 해당되는 열(columns), 즉 Series를 선택하여 처리할 수 있다.
※ 여기서 처리한다는 말의 의미는 데이터 선택, 배정, 추가가 가능하다는 의미이다.
데이터 처리의 예)
# pandas와 numpy의 import
In[2]: import pandas as pd
In[3]: import numpy as np
# Series에서의 데이터 선택, 배정, 추가 예
In[4]: ex_s=pd.Series([5,10,15,20], index=['a','b','c','d'])
In[5]: ex_s['a'] # 데이터 선택
Out[5]: 5
In[6]: ex_s['a']=7 # 데이터 배정
In[7]: ex_s['a']
Out[7]: 7
In[8]: ex_s['e']=22 # 데이터 추가
In[9]: ex_s
Out[9]:
a 7
b 10
c 15
d 20
e 22
dtype: int64
# DataFrame에서의 데이터 선택, 배정, 추가 예
In[10]: ex_df=pd.DataFrame([[0,1,2],[3,4,5],[6,7,8]], index=['r0','r1','r2'], columns=['c0','c1','c2'])
In[11]: ex_df['c1'] # 열 선택
Out[11]:
r0 1
r1 4
r2 7
Name: c1, dtype: int64
In[12]: ex_df['c1']=[9,9,9] # 열 배정
In[13]: ex_df['c1']
Out[13]:
r0 9
r1 9
r2 9
Name: c1, dtype: int64
In[14]: ex_df['c4']=[10,10,10] # 열 추가
In[15]: ex_df
Out[15]:
c0 c1 c2 c4
r0 0 9 2 10
r1 3 9 5 10
r2 6 9 8 10
스칼라의 배정 |
위 예제에서 확인할 수 있드시, Series에서 스칼라값 하나를 입력하는 것은 하나의 요소를 배정한다.
DataFrame의 경우 열 하나에 스칼라 값을 입력하는 것은 해당되는 열을 전부 같은 값으로 채우게 된다.
DataFrame에서의 스칼라 배정의 예)
# pandas와 numpy의 import
In[2]: import pandas as pd
In[3]: import numpy as np
# DataFrame에서의 스칼라 배정 예
In[16]: ex_df=pd.DataFrame([[0,1,2],[3,4,5],[6,7,8]], index=['r0','r1','r2'], columns=['c0','c1','c2'])
In[17]: ex_df['c3']=500
In[18]: ex_df
Out[18]:
c0 c1 c2 c3
r0 0 1 2 500
r1 3 4 5 500
r2 6 7 8 500
DataFrame에 Series 및 ndarray의 배정 |
사용자는 ndarray들을 삽입할 수 있다.
그러나 길이는 DataFrame 인덱스와 반드시 매치되어야 한다.
○ 형상이 일치하지 않을시 에러를 발생시킨다.
DataFrame으로의 ndarray의 배정 예)
# pandas와 numpy의 import
In[2]: import pandas as pd
In[3]: import numpy as np
# DataFrame에서의 ndarray 배정 예
In[19]: ex_df=pd.DataFrame([[0,1,2],[3,4,5],[6,7,8]], index=['r0','r1','r2'], columns=['c0','c1','c2'])
In[20]: ex_df['c3']=np.ones(3)
In[21]: ex_df
Out[21]:
c0 c1 c2 c3
r0 0 1 2 1.0
r1 3 4 5 1.0
r2 6 7 8 1.0
pop() 메서드를 통한 데이터의 선택과 제거 |
파이썬에서 제공하는 pop() 메서드를 pandas객체에도 적용이 가능하다.
사용법은 딕셔너리에 사용하는 방법과 같다.
pop 메서드의 구문 형식)
Series.pop(item)
DataFrame.pop(item)
여기서 item은 pop 메서드를 적용하려하는 데이터의 레이블을 입력받는다.
아래는 pop 메서드의 사용 예이다.
pop() 메서드의 예)
# pandas와 numpy의 import
In[2]: import pandas as pd
In[3]: import numpy as np
# pop 메서드 사용 예
In[22]: ex_df=pd.DataFrame([[0,1,2],[3,4,5],[6,7,8]], index=['r0','r1','r2'], columns=['c0','c1','c2'])
In[23]: ex_df.pop('c2') # pop 메서드 사용
Out[23]:
r0 2
r1 5
r2 8
Name: c2, dtype: int64
In[24]: ex_df # pop 메서드 사용 후 DataFrame
Out[24]:
c0 c1
r0 0 1
r1 3 4
r2 6 7
insert() 메서드를 통한 데이터의 삽입 |
기본값으로 열은 끝에 삽입될 수 있다.
insert() 함수는 열을 특정 위치에 삽입하는 것이 가능하다.
insert 메서드의 구문 형식)
DataFrame.insert(loc, column, value)
여기서 loc는 삽입하려하는 위치를 입력받는다.
column는 삽입하려는 열의 레이블은 입력받는다.
value는 삽입하려는 데이터를 입력받는다.
아래는 insert 메서드의 사용 예이다.
insert() 메서드의 예)
# pandas와 numpy의 import
In[2]: import pandas as pd
In[3]: import numpy as np
# insert 메서드 사용 예
In[25]: ex_df=pd.DataFrame([[0,1,2],[3,4,5],[6,7,8]], index=['r0','r1','r2'], columns=['c0','c1','c2'])
In[26]: ex_df.insert(1, 'c0.5', [0.5, 0.5, 0.5])
In[27]: ex_df
Out[27]:
c0 c0.5 c1 c2
r0 0 0.5 1 2
r1 3 0.5 4 5
r2 6 0.5 7 8
pop메서드와 insert메서드 옵션 세부사항 |
.pop(self, item) |
입력된 item에 해당하는 데이터를 반환하고 해당 데이터를 삭제한다.
item에 입력된 값을 찾지 못한다면 KeyError를 발생시킨다.
item: str
데이터를 나타내는 레이블을 입력받는다.
DataFrame.insert(self, loc, column, value, allow_duplicates=False) |
DataFrame에 loc에 명시된 위치에 열을 삽입한다.
Series 객체는 이 메서드를 지원하지 않는다.
삽입하려는 데이터가 이미 존재할 경우에는 ValueError를 일으키며 중복된 데이터를 삽입하기 위해서는 allow_duplicates 입력변수를 True입력하여야 한다.
loc: int
데이터를 삽입하려고 하는 위치 정수(인덱스)를 입력받는다.
DataFrame에 적용할 경우, 반드시 0<=loc<=len(columns) 이내여야 한다.
column: string, number, or hashable object
삽입하려하는 열의 레이블을 입력받는다.
value: int, Series, or array-like
삽입하는 데이터를 입력받는다.
allow_duplicates: bool
선택적으로 입력 가능하다.
중복을 허용하는지 확인하는 입력인자이다.
Index.insert(self, loc, item) |
Index 객체에도 insert 메서드가 존재하며 새로운 인덱스를 삽입한다.
loc: int
데이터를 삽입하려고 하는 위치 정수(인덱스)를 입력받는다.
'Python > Pandas' 카테고리의 다른 글
.loc 메서드(레이블)를 이용한 인덱싱과 슬라이싱-pandas(11) (0) | 2019.10.20 |
---|---|
데이터 인덱싱(loc, iloc, 슬라이싱, 불린인덱싱, at, iat, ix)-pandas(10) (0) | 2019.10.19 |
데이터 추출(array, to_numpy, values)-pandas(8) (0) | 2019.10.17 |
데이터 정보 확인(index, columns, shape) - pandas(7) (0) | 2019.10.16 |
데이터의 확인(head, tail, print함수 사용) - pandas(6) (0) | 2019.10.15 |
댓글