English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Pandas 인덱스 재구성 작업 예제
귀하의 또는 다른 라이브러리의 함수를 Pandas 객체에 적용하려면, 세 가지 중요한 메서드를 이해해야 합니다. 다음과 같습니다. 사용할 적절한 메서드는 귀하의 함수가 전체 데이터 프레임에 대해 작업할 것인지, 행 작업인지, 열 작업인지, 요소 작업인지에 따라 달라집니다.
표 함수应用程序: pipe() 행 또는 열 함수应用程序: apply() 요소 단위 함수应用程序: applymap()
함수와 적절한 수의 파라미터를 파이프 파라미터로 전달하여 DataFrame에 대한 사용자 정의 작업을 수행할 수 있습니다.
예를 들어,2값을 DataFrame에 추가합니다. 추가기능은 두 수치 값을 더하고 총 합을 반환합니다.
def adder(ele1,ele2) : return ele1+ele2
우리는 DataFrame에 대해 사용자 정의 함수를 적용하여 작업을 수행합니다.
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.pipe(adder,2)
전체 프로그램을 보자.
import pandas as pd import numpy as np def adder(ele1,ele2) : return ele1+ele2 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.pipe(adder,2) print(df.apply(np.mean))
실행 결과:
col1 col2 col3 0 2.176704 2.219691 1.509360 1 2.222378 2.422167 3.953921 2 2.241096 1.135424 2.696432 3 2.355763 0.376672 1.182570 4 2.308743 2.714767 2.130288
apply() 메서드를 사용하여 DataFrame 또는 Panel의 축에 어느 함수도 적용할 수 있습니다. 이 메서드는 설명적 통계 방법과 마찬가지로 선택적인 axis 파라미터를 사용합니다. 기본적으로, 이 작업은 열에 대해 수행되며, 각 열을 배열과 유사한 형태로 간주합니다.
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.apply(np.mean) print(df.apply(np.mean))
실행 결과:
col1 -0.288022 col2 1.044839 col3 -0.187009 dtype: float64
axis 매개변수를 전달하여 행 단위로 작업을 수행할 수 있습니다.
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.apply(np.mean,axis=1) print(df.apply(np.mean))
실행 결과:
col1 0.034093 col2 -0.152672 col3 -0.229728 dtype: float64
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.apply(lambda x: x.max() - x.min()) print(df.apply(np.mean))
실행 결과:
col1 -0.167413 col2 -0.370495 col3 -0.707631 dtype: float64
모든 함수가 벡터화될 수 없습니다(NumPy 배열은 다른 배열을 반환하지 않으며, 어떤 값도 반환하지 않습니다). DataFrame의 applymap() 메서드와 Series의 map() 메서드와 마찬가지로, 단일 값을 입력받고 단일 값을 반환하는 Python 함수를 받아들입니다.
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) # 사용자 정의 함수 df['col1'].map(lambda x:x*100) print(df.apply(np.mean))
실행 결과:
col1 0.480742 col2 0.454185 col3 0.266563 dtype: float64
import pandas as pd import numpy as np # 사용자 정의 함수 df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3']) df.applymap(lambda x:x*100) print(df.apply(np.mean))
실행 결과:
col1 0.395263 col2 0.204418 col3 -0.795188 dtype: float64