11 분 소요

12. 데이터 수정

import pandas as pd
df = pd.read_excel('score.xlsx', index_col='지원번호')
df
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 북산고 197 90 85 100 95 85 Python
2번 정대만 북산고 184 40 35 50 55 25 Java
3번 송태섭 북산고 168 80 75 70 80 75 Javascript
4번 서태웅 북산고 187 40 60 70 75 80 NaN
5번 강백호 북산고 188 15 20 10 35 10 NaN
6번 변덕규 능남고 202 80 100 95 85 80 C
7번 황태산 능남고 188 55 65 45 40 35 PYTHON
8번 윤대협 능남고 190 100 85 90 95 95 C#

Column 수정

df['학교'].replace({'북산고':'상북고', '능남고':'무슨고'})
지원번호
1번    상북고
2번    상북고
3번    상북고
4번    상북고
5번    상북고
6번    무슨고
7번    무슨고
8번    무슨고
Name: 학교, dtype: object
df # inplace가 필요하다.
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 북산고 197 90 85 100 95 85 Python
2번 정대만 북산고 184 40 35 50 55 25 Java
3번 송태섭 북산고 168 80 75 70 80 75 Javascript
4번 서태웅 북산고 187 40 60 70 75 80 NaN
5번 강백호 북산고 188 15 20 10 35 10 NaN
6번 변덕규 능남고 202 80 100 95 85 80 C
7번 황태산 능남고 188 55 65 45 40 35 PYTHON
8번 윤대협 능남고 190 100 85 90 95 95 C#
df['학교'].replace({'북산고':'상북고'}, inplace = True)
df
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 상북고 197 90 85 100 95 85 Python
2번 정대만 상북고 184 40 35 50 55 25 Java
3번 송태섭 상북고 168 80 75 70 80 75 Javascript
4번 서태웅 상북고 187 40 60 70 75 80 NaN
5번 강백호 상북고 188 15 20 10 35 10 NaN
6번 변덕규 능남고 202 80 100 95 85 80 C
7번 황태산 능남고 188 55 65 45 40 35 PYTHON
8번 윤대협 능남고 190 100 85 90 95 95 C#
df['SW특기'].str.lower()
지원번호
1번        python
2번          java
3번    javascript
4번           NaN
5번           NaN
6번             c
7번        python
8번            c#
Name: SW특기, dtype: object
df['SW특기'] = df['SW특기'].str.lower() # 'SW특기' 소문자로 변경
df
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 상북고 197 90 85 100 95 85 python
2번 정대만 상북고 184 40 35 50 55 25 java
3번 송태섭 상북고 168 80 75 70 80 75 javascript
4번 서태웅 상북고 187 40 60 70 75 80 NaN
5번 강백호 상북고 188 15 20 10 35 10 NaN
6번 변덕규 능남고 202 80 100 95 85 80 c
7번 황태산 능남고 188 55 65 45 40 35 python
8번 윤대협 능남고 190 100 85 90 95 95 c#
df['SW특기'] = df['SW특기'].str.upper() # 'SW특기' 대문자로 변경
df
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 상북고 197 90 85 100 95 85 PYTHON
2번 정대만 상북고 184 40 35 50 55 25 JAVA
3번 송태섭 상북고 168 80 75 70 80 75 JAVASCRIPT
4번 서태웅 상북고 187 40 60 70 75 80 NaN
5번 강백호 상북고 188 15 20 10 35 10 NaN
6번 변덕규 능남고 202 80 100 95 85 80 C
7번 황태산 능남고 188 55 65 45 40 35 PYTHON
8번 윤대협 능남고 190 100 85 90 95 95 C#
df['학교'] = df['학교'] + '등학교' # 학교 데이터 + 등학교
df
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 상북고등학교 197 90 85 100 95 85 PYTHON
2번 정대만 상북고등학교 184 40 35 50 55 25 JAVA
3번 송태섭 상북고등학교 168 80 75 70 80 75 JAVASCRIPT
4번 서태웅 상북고등학교 187 40 60 70 75 80 NaN
5번 강백호 상북고등학교 188 15 20 10 35 10 NaN
6번 변덕규 능남고등학교 202 80 100 95 85 80 C
7번 황태산 능남고등학교 188 55 65 45 40 35 PYTHON
8번 윤대협 능남고등학교 190 100 85 90 95 95 C#

Column 추가

df['총합'] = df['국어'] + df['영어'] + df['수학'] + df['과학'] + df['사회']
df
이름 학교 국어 영어 수학 과학 사회 SW특기 총합
지원번호
1번 채치수 상북고등학교 197 90 85 100 95 85 PYTHON 455
2번 정대만 상북고등학교 184 40 35 50 55 25 JAVA 205
3번 송태섭 상북고등학교 168 80 75 70 80 75 JAVASCRIPT 380
4번 서태웅 상북고등학교 187 40 60 70 75 80 NaN 325
5번 강백호 상북고등학교 188 15 20 10 35 10 NaN 90
6번 변덕규 능남고등학교 202 80 100 95 85 80 C 440
7번 황태산 능남고등학교 188 55 65 45 40 35 PYTHON 240
8번 윤대협 능남고등학교 190 100 85 90 95 95 C# 465
df['결과'] = 'Fail' # 결과 Column을 추가하고, 전체 데이터는 Fail로 초기화
df
이름 학교 국어 영어 수학 과학 사회 SW특기 총합 결과
지원번호
1번 채치수 상북고등학교 197 90 85 100 95 85 PYTHON 455 Fail
2번 정대만 상북고등학교 184 40 35 50 55 25 JAVA 205 Fail
3번 송태섭 상북고등학교 168 80 75 70 80 75 JAVASCRIPT 380 Fail
4번 서태웅 상북고등학교 187 40 60 70 75 80 NaN 325 Fail
5번 강백호 상북고등학교 188 15 20 10 35 10 NaN 90 Fail
6번 변덕규 능남고등학교 202 80 100 95 85 80 C 440 Fail
7번 황태산 능남고등학교 188 55 65 45 40 35 PYTHON 240 Fail
8번 윤대협 능남고등학교 190 100 85 90 95 95 C# 465 Fail
df.loc[df['총합'] > 400, '결과'] = 'Pass' # 총합이 400보다 큰 데이터에 대해서 결과를 Pass 로 업데이트
df
이름 학교 국어 영어 수학 과학 사회 SW특기 총합 결과
지원번호
1번 채치수 상북고등학교 197 90 85 100 95 85 PYTHON 455 Pass
2번 정대만 상북고등학교 184 40 35 50 55 25 JAVA 205 Fail
3번 송태섭 상북고등학교 168 80 75 70 80 75 JAVASCRIPT 380 Fail
4번 서태웅 상북고등학교 187 40 60 70 75 80 NaN 325 Fail
5번 강백호 상북고등학교 188 15 20 10 35 10 NaN 90 Fail
6번 변덕규 능남고등학교 202 80 100 95 85 80 C 440 Pass
7번 황태산 능남고등학교 188 55 65 45 40 35 PYTHON 240 Fail
8번 윤대협 능남고등학교 190 100 85 90 95 95 C# 465 Pass

Column 삭제

df.drop(columns=['총합']) # 총합 Column을 삭제
이름 학교 국어 영어 수학 과학 사회 SW특기 결과
지원번호
1번 채치수 상북고등학교 197 90 85 100 95 85 PYTHON Pass
2번 정대만 상북고등학교 184 40 35 50 55 25 JAVA Fail
3번 송태섭 상북고등학교 168 80 75 70 80 75 JAVASCRIPT Fail
4번 서태웅 상북고등학교 187 40 60 70 75 80 NaN Fail
5번 강백호 상북고등학교 188 15 20 10 35 10 NaN Fail
6번 변덕규 능남고등학교 202 80 100 95 85 80 C Pass
7번 황태산 능남고등학교 188 55 65 45 40 35 PYTHON Fail
8번 윤대협 능남고등학교 190 100 85 90 95 95 C# Pass
df.drop(columns=['국어', '영어', '수학']) # 국어, 영어, 수학 Column 을 삭제
이름 학교 과학 사회 SW특기 총합 결과
지원번호
1번 채치수 상북고등학교 197 95 85 PYTHON 455 Pass
2번 정대만 상북고등학교 184 55 25 JAVA 205 Fail
3번 송태섭 상북고등학교 168 80 75 JAVASCRIPT 380 Fail
4번 서태웅 상북고등학교 187 75 80 NaN 325 Fail
5번 강백호 상북고등학교 188 35 10 NaN 90 Fail
6번 변덕규 능남고등학교 202 85 80 C 440 Pass
7번 황태산 능남고등학교 188 40 35 PYTHON 240 Fail
8번 윤대협 능남고등학교 190 95 95 C# 465 Pass

Row 삭제

df.drop(index='4번') # 4번 학생 데이터 row를 삭제
이름 학교 국어 영어 수학 과학 사회 SW특기 총합 결과
지원번호
1번 채치수 상북고등학교 197 90 85 100 95 85 PYTHON 455 Pass
2번 정대만 상북고등학교 184 40 35 50 55 25 JAVA 205 Fail
3번 송태섭 상북고등학교 168 80 75 70 80 75 JAVASCRIPT 380 Fail
5번 강백호 상북고등학교 188 15 20 10 35 10 NaN 90 Fail
6번 변덕규 능남고등학교 202 80 100 95 85 80 C 440 Pass
7번 황태산 능남고등학교 188 55 65 45 40 35 PYTHON 240 Fail
8번 윤대협 능남고등학교 190 100 85 90 95 95 C# 465 Pass
filt = df['수학'] < 80 # 수학 점수가 80점 미만 학생 필터링
df[filt]
이름 학교 국어 영어 수학 과학 사회 SW특기 총합 결과
지원번호
2번 정대만 상북고등학교 184 40 35 50 55 25 JAVA 205 Fail
3번 송태섭 상북고등학교 168 80 75 70 80 75 JAVASCRIPT 380 Fail
4번 서태웅 상북고등학교 187 40 60 70 75 80 NaN 325 Fail
5번 강백호 상북고등학교 188 15 20 10 35 10 NaN 90 Fail
7번 황태산 능남고등학교 188 55 65 45 40 35 PYTHON 240 Fail
df[filt].index
Index(['2번', '3번', '4번', '5번', '7번'], dtype='object', name='지원번호')
df.drop(index=df[filt].index)
이름 학교 국어 영어 수학 과학 사회 SW특기 총합 결과
지원번호
1번 채치수 상북고등학교 197 90 85 100 95 85 PYTHON 455 Pass
6번 변덕규 능남고등학교 202 80 100 95 85 80 C 440 Pass
8번 윤대협 능남고등학교 190 100 85 90 95 95 C# 465 Pass

Row 추가

df.loc['9번'] = ['이정환', '해남고등학교', 184, 90, 90, 90, 90, 90, 'Kotlin', 450, 'Pass'] # 새로운 Row 추가
df
이름 학교 국어 영어 수학 과학 사회 SW특기 총합 결과
지원번호
1번 채치수 상북고등학교 197 90 85 100 95 85 PYTHON 455 Pass
2번 정대만 상북고등학교 184 40 35 50 55 25 JAVA 205 Fail
3번 송태섭 상북고등학교 168 80 75 70 80 75 JAVASCRIPT 380 Fail
4번 서태웅 상북고등학교 187 40 60 70 75 80 NaN 325 Fail
5번 강백호 상북고등학교 188 15 20 10 35 10 NaN 90 Fail
6번 변덕규 능남고등학교 202 80 100 95 85 80 C 440 Pass
7번 황태산 능남고등학교 188 55 65 45 40 35 PYTHON 240 Fail
8번 윤대협 능남고등학교 190 100 85 90 95 95 C# 465 Pass
9번 이정환 해남고등학교 184 90 90 90 90 90 Kotlin 450 Pass

Cell 수정

df.loc['4번', 'SW특기'] = 'Python' # 4번 학생의 SW특기 데이터를 Python으로 변경
df
이름 학교 국어 영어 수학 과학 사회 SW특기 총합 결과
지원번호
1번 채치수 상북고등학교 197 90 85 100 95 85 PYTHON 455 Pass
2번 정대만 상북고등학교 184 40 35 50 55 25 JAVA 205 Fail
3번 송태섭 상북고등학교 168 80 75 70 80 75 JAVASCRIPT 380 Fail
4번 서태웅 상북고등학교 187 40 60 70 75 80 Python 325 Fail
5번 강백호 상북고등학교 188 15 20 10 35 10 NaN 90 Fail
6번 변덕규 능남고등학교 202 80 100 95 85 80 C 440 Pass
7번 황태산 능남고등학교 188 55 65 45 40 35 PYTHON 240 Fail
8번 윤대협 능남고등학교 190 100 85 90 95 95 C# 465 Pass
9번 이정환 해남고등학교 184 90 90 90 90 90 Kotlin 450 Pass
df.loc['5번', ['학교','SW특기']] = ['능남고등학교', 'C'] # 5번 학생의 학교는 능남고등학교로, SW특기는 C로 변경
df
이름 학교 국어 영어 수학 과학 사회 SW특기 총합 결과
지원번호
1번 채치수 상북고등학교 197 90 85 100 95 85 PYTHON 455 Pass
2번 정대만 상북고등학교 184 40 35 50 55 25 JAVA 205 Fail
3번 송태섭 상북고등학교 168 80 75 70 80 75 JAVASCRIPT 380 Fail
4번 서태웅 상북고등학교 187 40 60 70 75 80 Python 325 Fail
5번 강백호 능남고등학교 188 15 20 10 35 10 C 90 Fail
6번 변덕규 능남고등학교 202 80 100 95 85 80 C 440 Pass
7번 황태산 능남고등학교 188 55 65 45 40 35 PYTHON 240 Fail
8번 윤대협 능남고등학교 190 100 85 90 95 95 C# 465 Pass
9번 이정환 해남고등학교 184 90 90 90 90 90 Kotlin 450 Pass

Column 순서 변경

cols = list(df.columns) # list형태로 바꿈
cols
['이름', '학교', '키', '국어', '영어', '수학', '과학', '사회', 'SW특기', '총합', '결과']
df = df[[cols[-1]] + cols[0:-1]] # 결과를 맨 앞으로, cols[-1] : 값이므로 [] list로 감싸준다.
df
결과 이름 학교 국어 영어 수학 과학 사회 SW특기 총합
지원번호
1번 Pass 채치수 상북고등학교 197 90 85 100 95 85 PYTHON 455
2번 Fail 정대만 상북고등학교 184 40 35 50 55 25 JAVA 205
3번 Fail 송태섭 상북고등학교 168 80 75 70 80 75 JAVASCRIPT 380
4번 Fail 서태웅 상북고등학교 187 40 60 70 75 80 Python 325
5번 Fail 강백호 능남고등학교 188 15 20 10 35 10 C 90
6번 Pass 변덕규 능남고등학교 202 80 100 95 85 80 C 440
7번 Fail 황태산 능남고등학교 188 55 65 45 40 35 PYTHON 240
8번 Pass 윤대협 능남고등학교 190 100 85 90 95 95 C# 465
9번 Pass 이정환 해남고등학교 184 90 90 90 90 90 Kotlin 450
df
결과 이름 학교 국어 영어 수학 과학 사회 SW특기 총합
지원번호
1번 Pass 채치수 상북고등학교 197 90 85 100 95 85 PYTHON 455
2번 Fail 정대만 상북고등학교 184 40 35 50 55 25 JAVA 205
3번 Fail 송태섭 상북고등학교 168 80 75 70 80 75 JAVASCRIPT 380
4번 Fail 서태웅 상북고등학교 187 40 60 70 75 80 Python 325
5번 Fail 강백호 능남고등학교 188 15 20 10 35 10 C 90
6번 Pass 변덕규 능남고등학교 202 80 100 95 85 80 C 440
7번 Fail 황태산 능남고등학교 188 55 65 45 40 35 PYTHON 240
8번 Pass 윤대협 능남고등학교 190 100 85 90 95 95 C# 465
9번 Pass 이정환 해남고등학교 184 90 90 90 90 90 Kotlin 450

Column 이름 변경

df.columns
Index(['결과', '이름', '학교', '키', '국어', '영어', '수학', '과학', '사회', 'SW특기', '총합'], dtype='object')
df.columns = ['Result', 'Name', 'School', '키', '국어', '영어', '수학', '과학', '사회', 'SW특기', '총합']
df
Result Name School 국어 영어 수학 과학 사회 SW특기 총합
지원번호
1번 Pass 채치수 상북고등학교 197 90 85 100 95 85 PYTHON 455
2번 Fail 정대만 상북고등학교 184 40 35 50 55 25 JAVA 205
3번 Fail 송태섭 상북고등학교 168 80 75 70 80 75 JAVASCRIPT 380
4번 Fail 서태웅 상북고등학교 187 40 60 70 75 80 Python 325
5번 Fail 강백호 능남고등학교 188 15 20 10 35 10 C 90
6번 Pass 변덕규 능남고등학교 202 80 100 95 85 80 C 440
7번 Fail 황태산 능남고등학교 188 55 65 45 40 35 PYTHON 240
8번 Pass 윤대협 능남고등학교 190 100 85 90 95 95 C# 465
9번 Pass 이정환 해남고등학교 184 90 90 90 90 90 Kotlin 450

댓글남기기