데이터 변형하기

타키탸키·2021년 7월 26일
0

데이터 사이언스

목록 보기
6/26
post-thumbnail

🧚‍♀️ DataFrame에 값 변경하기

  • 데이터 변경하기
iphone_df.loc['iPhone 8', '메모리']

iphone_df.loc['iPhone 8', '메모리'] = '2.5GB' # 데이터 변경

iphone_df
'2GB'

  • 행 한 줄을 통째로 바꾸기
iphone_df.loc['iPhone 8'] # pandas Series

iphone_df.loc['iPhone 8'] = ['2016-09-22', '4.7', '2GB', 'iOS 11.0', 'No']
iphone_df


  • 열 한 줄을 통째로 바꾸기
iphone_df['디스플레이'] # pandas Series

# 디스플레이 열에 인치 단위 추가
iphone_df['디스플레이'] = ['4.7 in', '5.5 in', '4.7 in', '5.5 in', '5.8 in', '5.8 in', '6.5 in']

iphone_df


  • 한 줄을 모두 같은 값으로 바꿀 때
    • 값을 하나만 주면 된다
iphone_df['Face ID'] = 'Yes'
iphone_df

  • 여러 열 한꺼번에 변경하기
iphone_df[['디스플레이', 'Face ID']] = 'x' # 열 리스트
iphone_df

  • 여러 행 한꺼번에 변경하기
iphone_df.loc[['iPhone 7', 'iPhone X']] = 'o'
iphone_df

  • 슬라이싱으로 변경하기
iphone_df.loc['iPhone 7':'iPhone X'] = 'o'
iphone_df

  • 조건으로 변경하기
iphone_df.loc[iphone_df['디스플레이']>5]='p'
iphone_df

  • 인덱스(위치)로 변경하기
iphone_df.iloc[[1, 3], [1, 4]] = 'v'
iphone_df


🧚‍♀️ DataFrame에 값 추가/삭제

  • 새로운 행 추가하기
    • 기존 DataFrame에 존재하지 않는 행의 이름을 넣는다
iphone_df.loc['iPhone XR'] = ['2018-10-26', 6.1, '3GB', iOS 12.0.1', 'Yes']
iphone_df

  • 새로운 열 추가하기
    • 기존 DataFrame에 존재하지 않는 열의 이름을 넣는다
iphone_df['제조사'] = 'Apple'
iphone_df

  • 행 삭제하기
    • axis='index'
      • index: 행의 다른 이름
      • 삭제 대상 = 행
    • inplace=False
      • 기존 DataFrame을 건드리지 않겠다는 옵션
      • True이면 기존 DataFrame의 데이터를 삭제한다
iphone_df.drop('iPhone XR', axis='index', inplace=False)

iphone_df

iphone_df.drop('iPhone XR', axis='index', inplace=True)

iphone_df

  • 열 삭제하기
    • axis='columns'
      • 삭제 대상 = 열
iphone_df.drop('제조사', axis='columns', inplace=True)
iphone_df

  • 여러 줄 삭제하기
    • 리스트로 값 넘겨주기
iphone_df.drop(['iPhone 7', 'iPhone 8', 'iPhone X'], axis='index', inplace=True)
iphone_df


🧚‍♀️ index/column 설정하기

  • liverpool.csv
import pandas as pd
liverpool_df = pd.read_csv('data/liverpool.csv', index_col=0)
liverpool_df

  • 열 이름 변경하기
    • rename
      • columns: 변경 대상 = 열
      • {기존 이름:변경 이름}: python 사전형
      • 여러 값을 넘겨줄 수도 있다
      • 기존 DataFrame을 바꾸지 않는다
liverpool_df.rename(columns={'position':'Position'})

liverpool_df

liverpool_df.rename(columns={'position':'Position'}, inplace=True)
liverpool_df

liverpool_df.rename(columns={'position':'Position, 'born':'Born', 'number':'Number', 'nationality':'Nationality'}, inplace=True)
liverpool_df

  • 행 인덱스 이름 설정하기
    • 행 인덱스들의 이름을 지정할 수 있다
    • 기존 DataFrame을 바꾸지 않는다
liverpool_df.index.name = 'Player Name'
liverpool_df

  • 행 이름 변경하기
liverpool_df.set_index('Number')
liverpool_df

  • 기존 인덱스 새로운 컬럼으로 지정하기
    • 행 이름 변경 시, 덮어쓰기 방지
    • .index: 행만 추출
liverpool_df['Player Name'] = liverpool_df.index
liverpool_df

liverpool_df.set_index('Number', inplace=True)
liverpool_df

  • 인덱스로 사용할 열의 조건
    • 중복되는 값이 없어야 한다
    • 선수 이름 / 등 번호
출처: CODEIT - 데이터 사이언스 입문
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글