Coding Diary.

(파이썬) 판다스 데이터프레임(pandas dataframe) 행, 열 추가 및 제거 본문

Coding/Python

(파이썬) 판다스 데이터프레임(pandas dataframe) 행, 열 추가 및 제거

life-of-nomad 2024. 6. 19. 10:46
728x90
반응형
지난 글에서 판다스 데이터프레임을 직접 만드는 방법에 대해 알아보았습니다. 이번 글에서는 판다스 데이터프레임의 요소에 액세스 하고 행, 열을 추가하고 제거하는 방법에 대해 알아보겠습니다.

 

🔻(참고)데이터프레임 만들기🔻

 

(파이썬) Pandas DataFrame 판다스 데이터프레임 만들기

지난 글에서 Pandas Series 만드는 방법과 요소에 액세스 하고 삭제, 산술 연산 하는 방법에 대해 알아보았습니다.이번 글에서는 판다스 데이터프레임을 직접 만드는 방법에 대해 알아보겠습니다. 

life-of-nomad.tistory.com

  • 우리는 다양한 방식으로 판다스 데이터프레임에 있는 요소에 액세스할 수 있습니다.
  • 일반적으로는 행 레이블과 열 레이블을 사용하여 데이터프레임의 행, 열 또는 개별 요소에 액세스할 수 있습니다.

 

1. 레이블로 요소에 액세스하기

  • 지난 글에서 만든 데이터프레임 store_items를 사용하겠습니다.
import pandas as pd

items = [{'bikes': 20, 'pants': 30, 'watches': 35},
{'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5}]

store_items = pd.DataFrame(items, index = ['store1', 'store2'])
store_items

  • bikes 열에 액세스하고 열 레이블 목록을 사용하여 여러 열에 액세스 할 수 있습니다.
store_items[['bikes']]

store_items[['bikes', 'pants']]

  • 행 인덱스 레이블을 사용하여 행에 액세스할 수 있으며 특정 행 및 열에서 값에 액세스할 수 있습니다.
store_items.loc[['store1']]

store_items['bikes']['store2']
>>> 15
  • 여기서 주의할 점은 개별 요소에 액세스할 때 레이블은 열 레이블을 먼저 온 다음 행 레이블이 온다는 점입니다.
  • 즉, dataframe[column][row] 형태로 제공해야 합니다.
  • 행 레이블을 먼저 제공하면 오류가 발생합니다.

 

2. DataFrame에 열 추가하기

  • 행 또는 열을 추가하여 DataFrame을 변경할 수도 있습니다. 
  • 먼저 새로운 열을 추가하는 방법을 알아보겠습니다.
  • 예를 들어, 각 상점에 재고로 갖고 있는 항목들에 shirts를 추가해보겠습니다.
store_items['shirts'] = [15, 2]
store_items

  • 새로운 열을 추가하면 그 열이 DataFrame 의 끝부분에 추가됩니다.

 

3. DataFrame의 열들 간에 산술 연산을 하여 새로운 열 추가하기

  • DataFrame에 있는 열들 간에 산술 연산을 해서 DataFrame에 새로운 열을 추가할 수도 있습니다.
store_items['suits'] = store_items['pants'] + store_items['shirts']
store_items

 

4. DataFrame에 행 추가하기

  • 만약 새 상점을 오픈했고, 그 새 상점의 재고 항목 개수를 DataFrame에 추가해야 한다고 가정해보겠습니다.
  • store_items에 새로운 행을 추가하기 위해 새로운 DataFrame을 만들고, 그걸 원본 DataFrame에 추가해야 합니다.
new_items = [{'bikes':20, 'pants':30, 'watches':35, 'glasses':4}]
new_store = pd.DataFrame(new_items, index = ['store3'])
new_store

  • 이제, pd.concat 메소드를 사용해서 이 행을 store_items DataFrame에 추가합니다.
store_items = pd.concat([store_items, new_store])
store_items

 

5. 기존 열들의 데이터를 가진 새로운 열 추가하기

  • 특정한 열의 특정한 행에 있는 데이터만 DataFrame의 새로운 열에 추가할 수 있습니다.
  • 예를 들어, store2와 store3에 새 시계 재고를 구비하려 한다고 가정해보겠습니다.
  • new watches라는 새 열을 데이터프레임에 추가하고 수량을 watches의 재고 수량과 같게 하려 한다고 해봅시다.
  • 아래와 같이 인덱싱할 수 있습니다.
store_items['new_watches'] = store_items['watches'][1:]
store_items

 

6. 특정한 위치에 새로운 열 추가하기

  • 새로운 열들을 데이터프레임에서 우리가 원하는 곳에 삽입할 수 있습니다. 
  • dataframe.insert(loc, label, data) 메소드를 사용하면 주어진 data로 된 새로운 열을 label 이라는 레이블로 dataframe의 위치 loc에 삽입할 수 있습니다.
  • 그럼, suits 열 바로 앞에 shoes라는 이름의 새로운 열을 추가해보겠습니다. suites의 숫자 인덱스의 값은 5이기 때문에 그 값을 loc로 사용합니다.
store_items.insert(5, 'shoes', [8, 5, 0])
store_items

 

7. DataFrame에서 하나의 열 삭제하기

  • 행과 열을 추가할 수 있는 것처럼, 그것들을 삭제할 수도 있습니다.
  • DataFrame 에서 행과 열을 삭제하기 위해 .pop() 메소드와 .drop() 메소드를 사용합니다.
  • .pop()메소드를 쓰면 열만 삭제할 수 있는 반면에 .drop()메소드를 쓰면 axis를 사용하여 행과 열을 모두 삭제할 수 있습니다.
store_items.pop('new_watches')
store_items

 

8. DataFrame에서 여러 열 삭제하기

store_items = store_items.drop(['watches', 'shoes'], axis=1)
store_items

 

9. DataFrame에서 행 삭제하기

store_items = store_items.drop(['store2', 'store1'], axis=0)
store_items

 

10. 열 레이블 변경하기

  • .rename() 메소드를 써서 열 레이블 bikes를 hats 로 변경해보겠습니다.
store_items = store_items.rename(columns = {'bikes':'hats'})
store_items

11. 행 레이블 변경하기

store_items = store_items.rename(index = {'store3':'last store'})
store_items

12. 기존의 열 값들을 행 인덱스로 사용하기

store_items = store_items.set_index('pants')
store_items

728x90
반응형