
시작하기 전에 import 하기
import numpy as np import pandas as pd import numba from pandas import DataFrame
DataFrame.idxmax(axis=0, skipna=True)
DataFrame.idxmin(axis=0, skipna=True)
idxmax와 idxmin은 각각 축에서 최대/최소값의 인덱스를 반환하는 메서드입니다.
기본 사용법
df.idxmax(axis=0, skipna=True)
df.idxmin(axis=0, skipna=True)
axis : {0 : index / 1:columns} 기준이 될 축입니다.
skipna : 결측치의 무시 여부입니다. True면 결측치가 포함된 열은 무시하고 False면 NaN를 출력합니다.
먼저 3x3짜리 객체를 만들어보겠습니다..
n=np.nan idx = ['row1','row2','row3'] col = ['col1','col2','col3'] data = [[1,2,200],[100,5,6],[7,300,n]] df = pd.DataFrame(data, idx, col) print(df)
기본적인 사용법
(실행 예시1)
axis=0인경우(기본값) 열에서 최대/최소 값에 해당되는 행을 출력합니다.print(df.idxmax(axis=0))
(실행 예시2)print(df.idxmin(axis=0))
axis=1인경우 행에서 최대/최소 값에 해당되는 열을 출력합니다.
(실행 예시1)print(df.idxmax(axis=1))
(실행 예시2)print(df.idxmin(axis=1))
skipna인수의 사용
skipna인수는 기본값이 True로 결측값이 포함된 행/열을 연산에서 무시합니다. False일 경우 NaN를 출력하게됩니다.print(df.idxmax(axis=1,skipna=False))
DataFrame.empty
empty메서드는 DataFrame이 비어있는지 여부를 bool 형식으로 반환합니다.
여기서 비어있다는것은 정말 완전히 비어있는 상태를 말하는 것으로,
공백 문자열("")이나 Nan의 경우조차 허용하지 않는것을 말합니다.
즉, 축이 존재하지 않는 경우를 말합니다.
기본 사용법
df.empty
공백으로 이루어진 객체, Nan으로 이루어진 객체, 행이 없는 객체, 열이 없는객체로 확인해보겠습니다.
공백으로 이루어진 객체
(실행 예시1)data_empty=[['','',''],['','',''],['','','']] df = pd.DataFrame(data = data_empty, index = ['row1', 'row2', 'row3'], columns=['col1','col2','col3']) print(df)
(실행 예시2)print(df.empty)
공백으로 이루어져있지만 df.empty 가 False로 출력됩니다.
""으로 차있기 때문입니다.
NaN으로 이루어진 객체
(실행 예시1)df = pd.DataFrame(data = np.nan, index = ['row1', 'row2', 'row3'], columns=['col1','col2','col3']) print(df)
(실행 예시2)print(df.empty)
NaN으로 이루어진 객체 또한, 어쨌던 Nan으로 채워져 있기 때문에 df.empty값을 False로 반환합니다.
행이나 열이 없는 객체
열이없는경우
(실행 예시1)df1 = pd.DataFrame(index = ['row1', 'row2', 'row3']) # 열이 없는 객체 print(df1)
(실행 예시2)print(df1.empty)
행이 없는 경우
(실행 결과1)df2 = pd.DataFrame(columns=['col1','col2','col3']) # 행이 없는 객체 print(df2)
(실행 결과2)print(df2.empty)
DataFrame.isin(values)
isin메서드는 DataFrame객체의 각 요소가 values값과 일치하는지 여부를 bool형식으로 반환합니다.
기본 사용법
df.isin(values)
value : Iterable, Series, DataFrame, dict등이 올 수 있습니다.
Series일 경우 : Index가 일치해야 합니다.
DataFrame일 경우 : Index와 열 레이블이 일치해야 합니다.
Dict일 경우 : key는 열 레이블 입니다.
먼저 3x3 의 기본적인 DataFrame객체를 하나 만들어보겠습니다.
data = [[1,1,1],[2,3,4],[5,3,6]] col = ['col1','col2','col3'] row = ['row1','row2','row3'] df = pd.DataFrame(data=data,index=row,columns=col) print(df)
list의 사용
리스트를 이용하여 1과 3이 포함된 요소를 확인해보겠습니다.result = df.isin([1,3]) print(result)
dict의 사용
dict를 사용해서 col1에서는 2,3인 경우, col3에서는 1,6이 포함된 요소를 확인해보겠습니다.result = df.isin({'col1':[2,3],'col3':[1,6]}) print(result)
Series 와 DataFrame의 사용
DataFrame객체를 사용하기위해 match_df라는 DataFrame객체를 하나 만들어보겠습니다.match_col = ['col1','col3'] match_row = ['row1','row3'] match_data = [[2,3],[1,6]] match_df = pd.DataFrame(data=match_data,index=match_row,columns=match_col) print(match_df)
이제 이 match_df를 value로 isin 메서드를 사용해보겠습니다.
result = df.isin(match_df) print(result)
DataFrame.all(axis=0, bool_only=None, skipna=True, level=None, kwargs)
DataFrame.any(axis=0, bool_only=None, skipna=True, level=None, kwargs)
all/any는 축의 값들의 True/False여부를 판단하는 메서드입니다.
all은 축의 값이 전부 True이면 True반환, 하나라도 False가 있으면 False를 반환합니다.
any는 축의 값이 하나라도 True가 있으면 True반환, 전부 False이면 False를 반환합니다.
기본 사용법
df.all(axis=0, bool_only=None, skipna=True, level=None, kwargs)
df.any(axis=0, bool_only=None, skipna=True, level=None, kwargs)
axis : {0 : index / 1:columns} 기준이 될 축입니다.
bool_only : True면 축의 모든 값이 bool인 경우에만 계산을 수행합니다. None면 모든 경우를 고려합니다.
예를들어 0과 공백()은 False로 고려되고 결측값(pd.NA)은 True로 고려되는 등 입니다.
skipna : 결측치의 무시 여부입니다. True면 결측치가 포함된 열은 무시됩니다.
level : Multi Index에서 레벨의 선택입니다.
kwargs : 추가 키워드는 효과가 없지만 NumPy와의 호환성을 위해 허용될 수 있습니다.
먼저 4x6짜리 객체를 만들어보겠습니다.
[N,T,F]=[pd.NA,True,False] idx = ['row1','row2','row3','row4'] data = {'col1':[T,T,T,T], 'col2':[F,F,F,F],'col3':[F,T,T,T],'col4':[T,N,T,T],'col5':[T,T,'',T],'col6':[T,T,T,0]} df = pd.DataFrame(data=data, index=idx) print(df)
기본적인 사용법(all과 any 비교)
all은 축의 값이 전부 True면 True를 반환하고 any는 하나라도 True면 True를 반환합니다.
0과 공백()은 False로, 결측값(pd.NA)은 True로 분류됩니다.
(실행 결과1)print(df.all())
(실행 결과2)print(df.any())
any의 경우 하나라도True면 True를 반환하기때문에, axis=1로 하여 행 기준으로 실행하면, 모두 True를 반환하는것을 볼 수 있습니다.
print(df.any(axis=1))
bool_only인수의 사용
bool_only=True일 경우 모든 요소가 bool형식인 경우만 계산됩니다.print(df.all(bool_only=True))
skipna인수의 사용
skipna=True인 경우 결측치는 True로서 계산되며, skipna=False인 경우 결측치가 포함된 축이 계산에서 제외됩니다.
(실행 결과1)print(df.all(skipna=True))
(실행 결과2)print(df.all(skipna=False))
DataFrame.count(axis=0, level=None, numeric_only=False)
count메서드는 각 행/열에 결측치가 아닌 요소의 갯수를 구합니다.
기본 사용법
df.count(axis=0, level=None, numeric_only=False)
axis : 적용할 축입니다.
level : Multi Index의 경우 레벨을 설정할 수 있습니다.
numeric_only : True일 경우 int, float, bool 형태인 경우만 출력합니다.
먼저 4x4짜리 객체를 만들어보겠습니다..
[N,T,F]=[pd.NA,True,False] idx = ['row1','row2','row3','row4'] data = {'col1':[1,N,N,4.0],'col2':['A','B','C',N],'col3':[N,N,N,7],'col4':[1,2.4,3.6,4]} df = pd.DataFrame(data,idx) print(df)
기본적인 사용법
axis에 대해서 기본값은 0으로 열에 대해서 결측치가 아닌 값의 갯수를 구합니다.print(df.count())
axis=1인 경우 행에 대해서 결측치가 아닌 값의 갯수를 구합니다.
print(df.count(axis=1))
numeric_only인수의 사용
numeric_only=True인 경우 int, float, bool로 구성된 행/열에 대해서만 계산값을 반환합니다.print(df.count(numeric_only=True))
DataFrame.equals(other)
equals메서드는 두 객체가 완벽하게 동일한지를 확인하는 메서드입니다.
기본 사용법
df.equals(other)
other : df와 일치하는지 비교할 객체입니다.
먼저 2x2짜리 객체를3개 만들어보겠습니다.
df1과 df2는 완벽하게 같고, df3는 3의 값이 3.0으로 type이 다릅니다.
(실행 결과1)df1 = pd.DataFrame(data=[[1,N],[3,T]]) df2 = pd.DataFrame(data=[[1,N],[3,T]]) print(df1)
(실행 결과2)df3 = pd.DataFrame(data=[[1,N],[3.0,T]]) print(df3)
기본적인 사용법
두 객체가 완벽히 같을경우 True를 반환하며 다를경우 False를 반환합니다. 요소의 type이 다르더라도 False를 반환합니다.
(실행 결과1)print(df1.equals(df2))
(실행 결과2)print(df1.equals(df3))
DataFrame.bool()
bool 메서드는 1칸짜리 Series나 DataFrame에 대해서 bool 값의 True or False여부를 확인합니다.
값이 bool이 아니거나 1칸이 아니라면 Value Error를 발생시킵니다.
기본 사용법
df.bool( )
먼저 1x1짜리 이며 값이 bool인 DataFrame객체를 2개 만들어보겠습니다.
df1은 True, df2는 False입니다.
(사용 예시1)df1 = pd.DataFrame([True],['row'],['col']) print(df1)
(사용 예시2)df2 = pd.DataFrame([False],['row'],['col']) print(df2)
기본적인 사용법
1칸짜리 객체의 bool값을 그대로 반환하게 됩니다.
(사용 예시1)print(df1.bool( ))
(사용 예시2)print(df2.bool( ))
DataFrame.duplicated(subset=None, keep='first')
duplicated 메서드는 중복되는 행을 확인하는 메서드입니다.
행의 모든 요소가 동일한 행이 이미 존재할경우 해당 행은 True로 반환됩니다.
기본 사용법
df.duplicated(subset=None, keep='first')
subset : 특정 열만을 대상으로 할 수 있습니다. list의 사용도 가능합니다.
keep : {first : 위부터 검사 / last : 아래부터 검사} 검사 순서를 정합니다. first일 경우 위부터 확인해서 중복행이 나오면 True를 반환하며, last일 경우 아래부터 확인합니다.
먼저 5x3짜리 객체를 만들어보겠습니다.
idx = ['row1','row2','row3','row4','row5'] col = ['col1','col2','col3'] data= [['A','가',1],['A','가',1],['A','나',2],['B','나',3],['B','다',4]] df = pd.DataFrame(data, idx, col) print(df)
기본적인 사용법
기본적으로 keep='first'이며 위에서부터 행을 확인하여 중복인 행이 나오면 True를 반환합니다.print(df.duplicated(keep='first'))
keep='last'일 경우 아래부터 행을 확인하여 중복인 행이 나오면 True를 반환합니다.
print(df.duplicated(keep='last'))
subset으로 특정 열만 확인
subset을 이용하여 특정 열을 대상으로만 중복행의 확인이 가능합니다.print(df.duplicated(subset=['col1','col3']))