데이터 프레임의 행과 열을 조회 및 변경해보자
DataFrame객체.columns
DataFrame객체.index
df.columns = ['새이름','새이름', ... , '새이름']
⭐df.columns[1] = '새이름'
# 이건 안된다.DataFrame객체.rename(index=행이름변경설정, columns=열이름변경설정, inplace=False)
⭐DataFrame객체.set_index(컬럼이름, inplace=False)
⭐DataFrame객체.reset_index(inplace=False)
⭐# 컬럼 조회
grade.columns
# 컬럼 명 전체 변경
grade.columns = ['ID', '국어', '영어']
grade
# 하나만 변경
# grade.columns[1] ='KOR' # 에러 발생
# 통째로 갈아버리는 건 되는데 일부만 변경하는 건 안됨.
# 일부만 변경할 때는 rename 사용
new_columns = {
'국어':'Korean',
'영어':'English'
}
grade.rename(columns=new_columns)
# 원본은 바뀌지 않음.
# 넘파이 방식.
# 축을 지정해줘야 한다.
grade.rename(mapper=new_columns, axis=1)
# 아이디 컬럼을 인덱스로 뺄 때
grade.set_index('ID') # 메타데이터, 축 이름
# 원본이 바뀌는 건 아니다.
# read_csv랑 같다. 처음에 읽어올 때 할건지 읽어오고나서 할건지의 차이
# 인덱스를 값으로 다시 뺄 때
grade.reset_index()
# 마찬가지로 원본이 바뀌지는 않음.
grade.reset_index().reset_index()
# 이렇게 한 번 더 가능.
# 기본적으로 생기는 인덱스 빼는 것까지만 가능. 무한정 되지는 않다.
# 인덱스를 제거하고 순번으로 변경.
grade.reset_index(drop=True)
DataFrame객체.drop(columns, index, inplace=False)
# 컬럼 삭제
grade.drop(columns='ID')
# 컬럼 두 개 이상 삭제
grade.drop(columns=['ID', '영어'])
# 넘파이식 삭제. 축을 지정
grade.drop(labels=['ID', '영어'], axis=1)
# 컬럼있는 것만 삭제 가능. 없는 컬럼은 에러 발생.
# 행을 삭제
# 인덱스 지정
grade.drop(index=0)
# 두 개 이상의 인덱스 삭제
grade.drop(index=[0,2,3])
# 얘는 순번이 아니다. 이름이다!
# 컬럼이든 인덱스든 순번으로는 삭제할 수 없다.
# 넘파이식으로 여러 개 삭제
grade.drop(labels=[0,2,3], axis=0)
# 축을 지정해준다.
# drop() 은 컬럼 이름, index 이름으로 지정해야 한다.
# 순번은 지정할 수 없다.
# grade.drop(columns=[0,1]) # 에러 발생
# 슬라이싱 가능? 될리가 없지
# grade.drop(cloumns=[0:2]) # 에러발생
# 인덱스 이름으로 인덱스 삭제
grade.drop(index='id-1')
grade.drop(index=['id-1', 'id-3'])
df['새열명'] = 값
df[‘새열이름‘] = 기존 열들을 이용한 연산
# 수학을 추가해보자
grade['수학'] = 80 # 전부 80으로 채운다
grade
# 새로운 컬럼을 생성
# 있는 컬럼을 지정하면 변경된다.
grade['수학'] = 100
grade
# 컬럼이 없다면 추가, 있다면 변경.
# 컬럼에 값을 따로 넣어주기
grade['과학'] = [100,70,90,50,80]
grade
# 이렇게 할 일은 거의 없는데 그냥 가능하다는 것만 알아둬
# 행 수와 넣는 데이터 수가 같아야한다. # 다르면 에러 발생
# 컬럼이름을 어떤 분야에서 바로보느냐에 따라 속성, 변수, 특성, 피처 라고도 한다.
# 이 변수들을 이용해 새로운 값을 만드는 것
# 기존 데이터를 이용해서 만드는 것을 파생변수, 파생컬럼 이라고 한다.
# 기존의 것으로부터 파생된 것
# 컬럼의 값을 조회
grade['국어'] # 하나의 행 또는 열은 시리즈다.
# 벡터화 연산 이용
# 시리즈 + 시리즈
grade['국어'] + grade['영어'] + grade['수학'] + grade['과학']
# 파생 변수
grade['총점'] = grade['국어'] + grade['영어'] + grade['수학'] + grade['과학']
grade
# 시리즈 // 스칼라
grade['총점']//4
# 새로운 파생 변수
grade['평균'] = grade['총점']//4
grade
# 메서드 이용해서 파생변수 만들기
grade2 = pd.read_csv('data/grade2.csv', index_col='id')
grade2
# 메서드를 이용해서 연산하기
grade2.sum()# 축 기본값 = 0
# axis=0
# 합계
total = grade2.sum(axis=1)
total
# 평균 구하기
grade2.mean() # 디폴트 값 0번 축
avg = grade2.mean(axis=1)
avg
# 파생 변수로 컬럼 생성하기. 열 추가
grade2['총점'] = total
grade2['평균'] = avg
grade2