Pandas에서 자주 사용하는 메서드 및 함수 소개
소개할 매서드와 함수는 데이터 처리 및 분석 과정에서 매우 유용하며, Pandas 문서를 통해 더 많은 기능들을 탐색할 수 있습니다.
The .apply() method
- 이 메서드를 사용하면 데이터프레임의 열(column)에 사용자 정의 함수를 적용하고, 해당 함수를 열 전체에 브로드캐스트(적용)할 수 있습니다.
# 숫자에서 마지막 4개의 숫자만 가져온다.
def last_four(num):
return str(num)[-4:]
df['last_four'] = df['CC Number'].apply(last_four)
df['last_four']
- 이와 같이 모든 열의 값들이 사용자 정의 함수들을 적용한 결과로 바뀌게 되었습니다.
apply() 메소드에 lambda 사용
- apply() 메소드는 사용자 정의 함수를 적용 할 수 있습니다.
그렇다면 사용자 정의 함수를 압축시켜 사용하는 lambda 또한 apply메소드에 적용이 가능합니다.
# total_bill 값들을 0.18씩 곱합니다.
df['total_bill'].apply(lambda bill:bill*0.18)
.apply() 메서드는 여러 열을 사용하는 경우에도 유용하게 사용할 수 있습니다.
- 이를 위해, 함수에 여러 열을 인자로 전달할 수 있습니다. 이 방법을 사용하면 데이터프레임의 여러 열을 참조하여 복잡한 계산을 수행할 수 있습니다.
# tip과 total_bill이 0.25보다 크면 Generous 작다면 Other값 출력
def quality(total_bill,tip):
if tip/total_bill > 0.25:
return "Generous"
else:
return "Other"
df['Tip Quality'] = df.apply(lambda df: quality(df['total_bill'],df['tip']),axis=1)
df['Tip Quality']
- 이와 같이 여러 열을 참조하여 복잡한 계산도 가능한 것을 확인하실수 있습니다.
np.vectorize()
- 해당 메소드 또한 apply 메소드와 사용하는 방식은 다르나, 같은 기능을 합니다.
import numpy as np
df['Tip Quality'] = np.vectorize(quality)(df['total_bill'], df['tip'])
- 이 코드 또한 출력 또한 같습니다.
np.vectorize() VS apply()
- 확인 결과 np.vectorize()가 훨씬 빠른 것으로 확인 되었습니다.
- 좀 더 디테일한 부분은 https://numpy.org/doc/stable/reference/generated/numpy.vectorize.html 해당 글을 참조 하면 될 거 같습니다.
sort_values()
- 해당 메소드는 매개변수에 넣은 값을 기준으로 오름차순으로 정렬해주는 메소드 입니다.
- 그리고 꼭 매개변수에 값 하나가 아닌 두 개이상 넣어도 해당하는 두 개의 매개 변수를 기준으로 정렬을 하는 메소드입니다.
df.sort_values(['tip','size'])
df.corr()
- 해당 메서드는 데이터프레임의 열 간 상관관계를 계산하는 데 사용됩니다. 이 메서드는 수치형 데이터 열들 간의 상관계수를 반환하며, 상관계수는 두 변수 간의 선형 관계를 측정합니다.
- 이 메서드는 정확하게 숙지가 안되어 좀 더 공부하고 수정하겠습니다...
idxmin and idxmax
- 해당 메서드는 설정한 컬럼에서의 가장 큰 값의 인덱스를 가져옵니다.
df['total_bill'].max()
# 결과 : 50.81
df['total_bill'].idxmax()
# 결과 : 170
df.iloc[170]
이와 같이 170 인덱스와 가장 큰 값 50.81을 확인 할 수 있습니다.
value_counts
- 해당 메서드는 DataFrame의 카테고리별로 빠르게 개수를 구할 수 있는 유용한 방법입니다.
df['sex'].value_counts()
'Data Analyst > ML' 카테고리의 다른 글
ML - PANDAS(Combining DataFrames) (0) | 2024.09.02 |
---|---|
ML - PANDAS(Useful Methods) - 2 (0) | 2024.08.31 |
ML - PANDAS(Condition-Filtering) (0) | 2024.08.29 |
ML - PANDAS(DATA FRAME) - 2 (1) | 2024.08.28 |
ML - PANDAS(Data Frame) - 1 (0) | 2024.08.28 |