코드잇 "데이터 사이언스 입문" 과정을 수강 중이다.
해당 코스 "2강 데이터 프레임 다루기"의 마지막 퀴즈 3개는 갑자기 높아진 난이도를 자랑한다. 😅
이틀에 걸쳐서 여러 가지 방법을 찾으면서 공부한 내용을 정리했다.
1. DataFrame 조건에 맞는 행의 값만 변경하기
1.1. 조건에 맞는 행의 특정 열의 값 변경하기
#너무 길면 헷갈리니까 조건은 미리 정의하기
condition = (df['course name'] == 'information technology') & (df['year']==1)
#조건에 맞는 값만 변경하기
df.loc[condition,'status']= 'not allowed' #df.loc[조건, '열 이름'] = '바꿀 값'
1.2. 조건에 맞는 행의 모든 값 변경하기
#조건은 미리 정의하기
condition = (df['course name'] == 'information technology') & (df['year']==1)
#조건에 맞는 행의 모든 값 바꾸기
df[condition]= 'not allowed' #df[조건] = '바꿀 값'
2. Dictionary에 맞게 DataFrame 한 열의 값 바꾸는 방법
과제는 'room assignment'이 같은 'course name'을 오름차순으로 정렬 후, 순서대로 'room assignment-1', 'room assignment-2' ... 이런 식으로 방 배정을 해주는 것이었다.
그래서 좌측의 0~2 데이터를 보면 Auditorium이 Auditorium-3, Auditorium-3, Auditorium-1이 된 것을 볼 수 있다. 나는 이 문제를 풀기 위해 다음과 같이 세 가지 스탭으로 진행했다.
1. 'room assignment'별로 'course name' unique 값을 가져온 다음, 오름차순으로 정렬한다.
a=df.loc[df['room assignment'] == 'Auditorium','course name'].unique()
a=np.sort(a)
2. dictionary를 만들어서 'course name':'room assignment-n' 세트를 넣어준다. '원래 값' : '변경할 값'이다.
k=1
dict1={}
for i in a:
dict1[i]=('Auditorium-'+str(k))
k+=1
3. dictionary에 모든 세트를 넣어준 다음, 이제 course name 열의 기존 값을 새로운 값으로 치환해준다.
처음에 헷갈렸던 게, 각 course name에 해당하는 값을 새로운 열로 넣어줄 수 있다고 생각했는데, 그게 아니라 course name 열 내에서 값을 변경해줄 수 있는 것이었다.
.fillna를 붙여서 치환할 값이 없는 course name은 모두 'not assigned'로 변경해준다.
df['room number']=df['course name'].map(dict1).fillna('not assigned')
*참고*
아래 방법을 이용하면 Dictionary에 정의되어 있지 않은 (그러니까 변환할 정보가 없는) 값을 어떻게 할 것인지 정할 수 있다. 같은 값을 일괄적으로 넣어줄 수도 있고, 아니면 기존 값으로 유지할 수도 있다.
df['col2'].map(dic).fillna(df['col2']) # 'col2' 컬럼의 기존 값으로 NA 채움
df['col2'].map(dic).fillna(1) # 1로 NA 채움
참고한 링크:
[Python] 한 Column에 대해서 Dictionary를 이용해 값을 바꾸는 방법
import pandas as pd import numpy as np df = pd.DataFrame({'col1':[10, 20, 10, 20, 30, 40], 'col2': ['US', 'BR','JP', 'KR', 'JP', np.nan]} ) dic = { 'US':"US10YT=RR" , 'GB':"GB10YT=RR" , 'KR':"KR10YT..
sseongju1.tistory.com
'서비스 기획 > ☁️ 데이터 분석 공부' 카테고리의 다른 글
[코드잇] 데이터 사이언스 입문 수강 완료! (0) | 2022.07.18 |
---|---|
[코드잇] 2. 데이터 분석과 시각화: 타이타닉 EDA 퀴즈 (0) | 2022.07.14 |
데이터 분석 - 대검찰청의 범죄자 전과 데이터 (2019) (0) | 2022.06.13 |
딥러닝 CDS 교육 후기 (0) | 2022.05.24 |
SQL 퀴즈/실습 사이트 추천 (0) | 2022.02.27 |
댓글