언어/파이썬

머신러닝with파이썬2강(3)_index다루기,행과 열 추가, 값 변경

디지털랫드 2024. 3. 1. 17:13

인덱스 다루기


이번 시간에는 인덱스를 배워 보도록 하겠습니다.

이번 시간 정리


set_index와 reset_index를 비교해 봅시다.

1. set_index
원하는 값으로 인덱스 컬럼을 변경 할 수 있다.

2. reset_index
변경된 인덱스 컬럼을 되돌릴 수 있다.
인덱스명을 살릴 필요 없을 때는 drop=True로 변경 한다.

이제 아래의 코드 실행 버튼을 눌러 실습을 진행해 보세요!

 
 
실행 완료
[43]:
메뉴가격호수칼로리0123456
후라이드 12000 10호 1000
양념치킨 13000 10호 1400
간장치킨 14000 9호 1600
마늘치킨 14000 9호 1800
파닭 14000 11호 1300
닭강정 15000 12호 1500
양반후반 13000 10호 1300

1. set_index

  • 원하는 값으로 인덱스 컬럼을 변경 할 수 있다.
 
 
실행 완료
[42]:
가격호수칼로리메뉴후라이드양념치킨간장치킨마늘치킨파닭닭강정양반후반
12000 10호 1000
13000 10호 1400
14000 9호 1600
14000 9호 1800
14000 11호 1300
15000 12호 1500
13000 10호 1300

※ 아래 '#코드 입력하기' 영역에 직접 입력해 보세요.

강의 영상을 통해 정답 코드를 확인 하실 수 있습니다.

 
 
실행 완료
 
실행 완료
 

2. reset_index

  • 변경된 인덱스 컬럼을 되돌릴 수 있다.
  • 인덱스명을 살릴 필요 없을 때는 drop=True로 변경한다.
 
 
실행 완료
[39]:
index메뉴가격호수칼로리0123456
a 후라이드 12000 10호 1000
b 양념치킨 13000 10호 1400
c 간장치킨 14000 9호 1600
d 마늘치킨 14000 9호 1800
e 파닭 14000 11호 1300
f 닭강정 15000 12호 1500
g 양반후반 13000 10호 1300

 

행과 열 추가


이번 시간에는 행과 열을 추가해 보도록 하겠습니다.

이번 시간 정리


1. 열(column) 추가
df['추가 하고 싶은 컬럼명'] = 값

2. 행(row) 추가
loc나 iloc를 사용한다.

[리마인드] loc와 iloc

  • loc : 인덱스명(1,2,3,), 컬럼 명(메뉴, 가격, 호수)을 통해서 데이터를 선택
  • iloc : 인덱스 번호(범위), 컬럼 번호(범위) 통해서 데이터를 선택

이제 아래의 코드 실행 버튼을 눌러 실습을 진행해 보세요!

1.열(column) 추가

 
 
실행 완료
[51]:
메뉴가격호수칼로리0123456
후라이드 12000 10호 1000
양념치킨 13000 10호 1400
간장치킨 14000 9호 1600
마늘치킨 14000 9호 1800
파닭 14000 11호 1300
닭강정 15000 12호 1500
양반후반 13000 10호 1300
 
 
실행 완료
[49]:
메뉴가격호수칼로리원산지할인율012345610
후라이드 12000 10호 1000.0 NaN 0.2
양념치킨 13000 10호 1400.0 NaN 0.2
간장치킨 14000 9호 1600.0 NaN 0.2
마늘치킨 14000 9호 1800.0 NaN 0.2
파닭 14000 11호 1300.0 NaN 0.2
닭강정 15000 12호 1500.0 NaN 0.2
양반후반 13000 10호 1300.0 NaN 0.2
풀잎치킨 10000 10호 NaN NaN 0.2
 
 
실행 완료
[50]:
메뉴가격호수칼로리원산지할인율할인가012345610
후라이드 12000 10호 1000.0 NaN 0.2 9600.0
양념치킨 13000 10호 1400.0 NaN 0.2 10400.0
간장치킨 14000 9호 1600.0 NaN 0.2 11200.0
마늘치킨 14000 9호 1800.0 NaN 0.2 11200.0
파닭 14000 11호 1300.0 NaN 0.2 11200.0
닭강정 15000 12호 1500.0 NaN 0.2 12000.0
양반후반 13000 10호 1300.0 NaN 0.2 10400.0
풀잎치킨 10000 10호 NaN NaN 0.2 8000.0
 
 
실행 완료
[47]:
메뉴가격호수칼로리원산지012345610
후라이드 12000 10호 1000.0 NaN
양념치킨 13000 10호 1400.0 NaN
간장치킨 14000 9호 1600.0 NaN
마늘치킨 14000 9호 1800.0 NaN
파닭 14000 11호 1300.0 NaN
닭강정 15000 12호 1500.0 NaN
양반후반 13000 10호 1300.0 NaN
풀잎치킨 10000 10호 NaN NaN

2. 행(row) 추가

  • 딕셔너리 형태 : 필요한 값만 대입을 할 수가 있다.
  • 리스트 형태 : 모든 값들을 다 넣어야 한다.
 
 
코드 실행
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/tmp/ipykernel_13/792647271.py in <module>
      1 # 리스트 형태로 데이터(행) 추가
      2 aiffel = ['아이펠치킨', 16000, '11호', 1200, 0.5, 8000, '국내산']
----> 3 df.loc['new'] = aiffel
      4 df

/opt/conda/lib/python3.9/site-packages/pandas/core/indexing.py in __setitem__(self, key, value)
    721 
    722         iloc = self if self.name == "iloc" else self.obj.iloc
--> 723         iloc._setitem_with_indexer(indexer, value, self.name)
    724 
    725     def _validate_key(self, key, axis: int):

/opt/conda/lib/python3.9/site-packages/pandas/core/indexing.py in _setitem_with_indexer(self, indexer, value, name)
   1722 
   1723             if missing:
-> 1724                 self._setitem_with_indexer_missing(indexer, value)
   1725                 return
   1726 

/opt/conda/lib/python3.9/site-packages/pandas/core/indexing.py in _setitem_with_indexer_missing(self, indexer, value)
   2025                     # must have conforming columns
   2026                     if len(value) != len(self.obj.columns):
-> 2027                         raise ValueError("cannot set a row with mismatched columns")
   2028 
   2029                 value = Series(value, index=self.obj.columns, name=indexer)

ValueError: cannot set a row with mismatched columns
 
 
 

값 변경


이번 시간에는 값을 변경해 보도록 하겠습니다.

이번 시간 정리


[리마인드] loc와 iloc

  • loc : 인덱스명(1,2,3,), 컬럼 명(메뉴, 가격, 호수)을 통해서 데이터를 선택
  • iloc : 인덱스 번호(범위), 컬럼 번호(범위) 통해서 데이터를 선택

1. replace
replace는 문자열을 변경하는 함수이다.
df = df.replace('변경전 메뉴명', '변경후 메뉴명')

2. replace, 딕셔너리
# 변수 d에 변경 전후의 메뉴를 딕셔너리 { } 로 묶어준다.
d = {'변경전 메뉴명':'변경후 메뉴명','변경전 메뉴명':'변경후 메뉴명'}
df = df.replace(d)

이제 아래의 코드 실행 버튼을 눌러 실습을 진행해 보세요!

 
 
실행 완료
[54]:
메뉴가격호수칼로리원산지0123456
후라이드 12000 10호 1000 국내산
양념치킨 13000 10호 1400 NaN
간장치킨 14000 9호 1600 NaN
마늘치킨 14000 9호 1800 NaN
파닭 14000 11호 1300 NaN
닭강정 15000 12호 1500 NaN
양반후반 13000 10호 1300 NaN
 
 
실행 완료
[55]:
메뉴가격호수칼로리원산지0123456
후라이드 12000 10호 1000 국내산
양념치킨 13000 10호 1400 NaN
간장치킨 14000 9호 1600 NaN
마늘치킨 14000 9호 1800 NaN
파닭 14000 11호 1300 브라질
닭강정 15000 12호 1500 브라질
양반후반 13000 10호 1300 NaN
 
 
실행 완료
[56]:
메뉴가격호수칼로리원산지0123456
후라이드 12000 10호 1000 국내산
양념치킨 13000 10호 1400 NaN
간장치킨 14000 9호 1600 NaN
마늘치킨 14000 9호 1800 NaN
파닭 14000 11호 1300 브라질
닭강정 15000 12호 1500 브라질
양념반후라이드반 13000 10호 1300 NaN
 
 
실행 완료
[57]:
메뉴가격호수칼로리원산지0123456
후라이드 12000 10호 1000 국내산
양념치킨 13000 10호 1400 NaN
간장치킨 14000 9호 1600 NaN
마늘치킨 14000 9호 1800 NaN
파닭 14000 11호 1300 브라질
닭강정 15000 12호 1500 브라질
양념반후라이드반 13000 10호 1300 NaN
 
 
실행 완료
[58]:
메뉴가격호수칼로리원산지0123456
황금후라이드 12000 10호 1000 국내산
승일양념치킨 13000 10호 1400 NaN
간장치킨 14000 9호 1600 NaN
마늘치킨 14000 9호 1800 NaN
파닭 14000 11호 1300 브라질
닭강정 15000 12호 1500 브라질
양념반후라이드반 13000 10호 1300 NaN
 
 
실행 완료
[59]:
메뉴가격호수칼로리원산지0123456
황금후라이드 12000 10호 1000 국내산
승일양념치킨 13000 10호 1400 NaN
간장치킨 14000 9호 1600 NaN
마늘치킨 14000 9호 1800 NaN
파닭 14000 11호 1300 브라질
닭강정 15000 12호 1500 브라질
양념반후라이드반 13000 10호 1300 NaN
 
 
실행 완료