본문 바로가기
Python/Pandas

데이터 및 열 선택, 배정, 추가, 인덱싱, pop 및 insert 메서드-pandas(9)

by 콩돌 2019. 10. 18.
반응형

파이썬 버전 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

데이터를 삽입하려고 하는 위치 정수(인덱스)를 입력받는다. 


item: object
삽입하려고 하는 아이템을 입력받는다.



 

 

 

 

 참고자료

  https://pandas.pydata.org/pandas-docs/stable/getting_started/dsintro.html

  https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.pop.html

  https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.insert.html

  https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Index.insert.html

 

 

 

 


반응형

댓글