Python/Pandas

[파이썬 Pandas] 7. 데이터 수정

Delants 2022. 8. 19. 11:14

# 본 내용은 " [나도코딩] - 파이썬 활용편(5) 데이터분석 및 시각화 " 강의를 듣고, 복습하고 공부한 내용을 다루었습니다.

오늘 포스팅할 내용은 다음과 같습니다.

 

Pandas #7. 데이터 수정

12. 데이터 수정

 

=> 데이터 칼럼수정, 대소문자 변환, 글자추가, 칼럼추가 및 삭제, 행 수정 및 삭제 등 작업을 수행할 수 있습니다.


12. 데이터 수정

처리작업에 들어가기 전 먼저 데이터를 임포트 시켜줍니다.

 

12-1 Column 수정

.replace()함수를 사용하여 칼럼을 수정할 수 있습니다.

함수 사용 시 dictionary형태로 key:value 형식으로 지정해 줍니다.

아래 코드와 같이 사용할 수 있습니다.

위 코드에서 inplace를 하지 않았으므로 실데이터셋에 변화가 없습니다.

속성을 추가해주면 변경된 것을 확인할 수 있습니다.

 

12-2 대소문자 바꾸기

이번에는 대소문자를 변경해보겠습니다.

이 경우 대문자로 바꾸려면 .str.upper()함수를 사용하고, 소문자로 바꾸려면 str.lower()함수를 사용하게 됩니다.

sw특기 칼럼을 모두 대소문자로 바꿔주는 작업을 진행해 보겠습니다.

변수명으로 해당 데이터셋의 해당 칼럼으로 지정함으로써, 칼럼이 바뀐 것을 적용시키게 만듭니다.

 

12-3. 칼럼의 데이터에다 글자 추가

현재 존재하는 컬럼 안 데이터에 글자를 추가할 수 있습니다.

예를들어, 학교 칼럼에 상북고만 나와있는데, 이를 상북고등학교로 표시되게끔 '등학교'글자를 추가하는 작업을 진행해 보겠습니다.

12-4. Column 추가

이번에는 칼럼 추가에 대해 알아보겠습니다.

현 데이터셋에는 개별 과목에 대한 점수만 나와있지, 총합은 나와있지 않습니다. 그래서 과목 전체합계를 추가하는 작업을 진행해 보겠습니다.

총합을 변수명으로 지정해 주고, 과목의 점수에 대한 칼럼 이름을 명시하여 각 값을 더해줍니다.

이렇게 단순 점수만 나와있을 수도 있지만, 400점 이상만 합격하는 제도를 도입하여 합격자, 불합격자를 가릴 수도 있습니다. 이번에는 총합 칼럼 옆에 결과 칼럼을 추가해 보겠습니다.

 

12-5. Column 삭제

 

칼럼을 추가했다면 칼럼을 삭제하고 싶은 경우도 생길 수 있습니다. 

이런 경우에는 .drop()함수를 사용하면 되는데, .drop(columns=['삭제할칼럼1' ,'삭제할칼럼2'....], inplace=' ')이렇게 적어주시면 됩니다.

코드를 통해 살펴보도록 하겠습니다.

12-6. Row(행) 추가

이번에는 행을 추가해 보겠습니다.

위 표에서 한 명이 전입을 와서 해당 학생의 정보를 추가해야할 때 사용할 수 있겠네요.

이럴 경우에는 인덱스 위치정보(.loc()함수)를 이용해 해당 학생의 정보를 입력해 줍니다.

칼럼 명은 따로 적지 않고, 해당 데이터에 들어갈 값을 순서대로 적어주면 됩니다.

12-7. Row(행) 삭제

만일 학생이 전출을 가게 된다면 어떻게 해야 할까요?

바로 해당 학생의 정보를 삭제하여야 합니다. 즉, 행의 정보를 삭제해야 하는데, 이 경우에도 .drop()함수를 사용합니다.

예로 4번 학생의 정보를 삭제해 보겠습니다.

또한, 수학점수가 80점 미만인 학생들을 필터링 해서 해당 학생의 정보를 삭제할 경우도 생길 수 있습니다.

80점 이상인 학생들은 특별관리반으로 이동해서 공부를 시킨다던지 할 수 있겠네요.

이 경우에는 조금 더 advanced된 스킬을 요합니다.

 

먼저, 임의의 변수명을 지정해주고, 80점 미만인 학생을 필터링 해 줍니다.

그 다음으로 .index를 활용해 해당 값들의 인덱스 값을 찾습니다. 

물론 위 데이터처럼 데이터 개수가 적을때는 그냥 눈으로 보고 바로 해도 되지만, 데이터가 수천개 이상이 된다면 무리가 있습니다. 그렇기에 해당 열의 고유한 값인 인덱스를 찾고, 삭제하는 방법을 사용합니다.

이제 .drop()을 이용해 해당 필터링된 값들을 인덱스 값을 이용해 삭제해 줍니다.

물론, 실 데이터에 적용시키기 위해서는 inplace속성이 필요합니다.

12-8. 셀 수정

대학교에서는 전과를 한다면 전공이름에 변동이 생깁니다. 이런 경우에 셀 수정을 이용해 해당 학생의 정보를 수정할 수 있습니다.

이번에는 .loc()함수를 사용하고, 위 데이터 프레임을 활용하여, 4번학생의 sw특기를 'Python'으로 변경하는 작업을 해 보겠습니다.

원래 결측값이었던 데이터가 Python으로 변경되었다.

 

또한, 두 개 이상의 정보를 동시에 수정할 수도 있습니다.

5번 학생의 학교는 능남고등학교, sw특기는'c'로 변경해 보겠습니다.

이 경우에는 바꿀 행을 먼저 적고 뒤에 바꿀 데이터를 적는 것에 주의해 줍니다. 

12-9. column 순서 변경

 

다음으로 칼럼의 순서를 변경해 보겠습니다.

현재 결과를 맨 앞으로 가져오고 싶을 경우 사용할 수 있는데, 다음 예시를 통해 확인해 보겠습니다.

 

먼저 칼럼을 리스트로 변경하여 cols라는 변수에 저장합니다.

그 다음으로 cols에서 -1에 해당하는 위치(끝)에 해당하는 값(결과 칼럼)을 cols에서 찾아서, cols[0:-1]에 해당하는 위치와 합칩니다. 

여기서 cols에서 -1에 해당하는 값이 맨 앞에 와야 하므로 df[cols[-1]]을 먼저 적어준 뒤 나머지 칼럼의 값, 즉 0번째부터 끝까지 칼럼을 의미하는 코드인 cols[0:-1]]을 적어줌에 유의합니다. 그리도 이 둘을 +기호를 기용해 합칩니다.

만일 특정 칼럼 (결과, 이름, 학교)만 보고 싶다면 다음과 같이 할 수 있습니다.

 

12-10. Column 이름 변경

 

.columns()함수를 사용해 이름을 변경할 수도 있습니다.

예를 들어, df데이터셋에서 결과, 이름, 학교 칼럼을 Result, Name, School이라는 이름으로 변경하고자 할 경우 사용될 수 있습니다.

df.columns['바꿀칼럼명1', '바꿀칼럼명2'....] 이러한 형식으로 적어주면 되겠네요.


오늘은 데이터를 수정하는 방법에 대해 학습하였습니다.

수정하는 종류가 많아, 공부하는데 헷갈리는 일이 꽤 있었습니다.

그렇지만 연습을 하면서 기초를 탄탄하게 다져나가는 것이 중요하기 때문에

조바심을 가지지 않고 해야겠다는 생각이 들더군요.

 

최근에는 9월 4일에 시행되는 sqld자격증 취득을 위한 공부도 하고 있어서 이와 관련된 내용도 포스팅을 할까 합니다.

sql을 공부하면서 sqld자격증도 취득하고, sql을 좀 더 활용할 수 있는 강의도 인프런에서 수강해 봐야겠네요.

(sqld 자격증 대비로 인해 당분간 python업로드는 조금 뜸해질 수 있습니다. 양해 부탁드리겠습니다.)

 

다음 학습 내용 (Pandas #8)
13 함수 적용

감사합니다.