df.copy() <- 기존 데이터 그대로 복사하는 구문
Ex)
df = pd.read_csv('data/scores.csv')
df = df.head()
df_copy = df.copy()
df_copy.head() # df.head()와 동일한 결과 출력
컬럼의 데이터 변경 (' ' 표시 없이 직관적으로 입력 可)
Ex) math 컬럼에 대해서
df_copy.math = df.math+5 #df['math']의 모든 점수에 일괄적 5점 더하기.(--> 105점 오류 有)
df_copy
그렇기에 100점을 넘지 않으면서 모두를 5점 더하는 조건의 함수를 적용해야 한다. df['이름'].apply(함수) 사용!
def plus5(x):
score = x+5 # 5점 더하는데
if score>=100: # 100점 이상인 경우 조건 설정
score=100
return score # 반환값은 score!
df_copy['math'] = df['math'].apply(plus5)
df_copy
함수에 더할 점수도 변수로 둔다면, 다음과 같이 한다.
def plusn(x,n): # 모든 점수에 n점 더하기. 100점이 넘을 수 없다.
score = x+n
if score>=100:
score=100
return score
df_copy['eng'] = df['eng'].apply(plusn, n=1) # df['eng']의 모든 점수에 1점 더하기 in [0,100]
지금까지 예제는 함수를 특정 한 컬럼을 지정하여 일괄 적용했다.
전체를 일괄 적용하려면 axis 옵션을 추가한다.
df.apply(함수이름, 변수지정(생략可), axis = 0 or 1)
axis = 0 -> col에 대한 연산을 각각 전체 col에 적용
axis = 1 -> row에 대한 연산을 각각 전체 row에 적용
Ex) col에 대한 연산을 제일 아래에 출력한다.
def get_sum(x): # 합계 구하는 함수
return x.sum()
df_copy.loc['sum'] = df.apply(get_sum, axis=0) # 과목 별 점수 합계
df_copy
Ex) row에 대한 연산을 제일 오른쪽에 출력한다.
df_copy['sum'] = df.apply(get_sum, axis=1) # 학생 별 점수 합계
df_copy
(잠깐 예제) index를 지우고 기존 컬럼으로 대체하기
df = pd.read_csv('data/scores.csv')
df = df.head()
df.index = df.name # <-- 이 부분이 index를 name으로 대체하는 부분
df.drop(columns=['name'], inplace=True) # <- 기존 name 칼럼은 지움
df_copy = df.copy()
df.head()
df_copy.head()
df, df_copy와 결과 출력물 동일함
[잠깐 note]
apply() -> df, series 둘 다 적용 可 df에 lamda함수 쓸 수 있게 해줌
map() -> series만 적용 可 합성함수 mapping 개념. index기준으로 transition.
applymap() -> df만 적용 可
[map 함수 예제]
주어진 데이터에 대해서 Indicator을 삭제하고 First Tooltip 컬럼에서 신뢰구간에 해당하는 표현을 지워라
df.drop('Indicator',axis=1,inplace=True) # col indicator 삭제
df['First Tooltip'] = df['First Tooltip'].map(lambda x: float(x.split("[")[0]))
# lambda쓰기위해 map씀. 해당 부분은 string이므로 float형태로 '['기준으로 나눈 후 [0]째 부분만 추출
Ans = df
Ans.head(4)
728x90
반응형
'Programming > Python' 카테고리의 다른 글
[Pandas] type 확인 및 변환 (0) | 2023.08.30 |
---|---|
[Pandas] Null(결측치) 다루기 (2) | 2023.08.30 |
[Pandas] col, row 조작 및 변경 (0) | 2023.08.30 |
[Pandas] 문제풀이 2 (0) | 2023.08.30 |
[Pandas] Matplotlib.pyplot로 그래프 그리기 (기본) (0) | 2023.08.29 |