본문 바로가기

데이터프레임3

결측치에 그룹별 최빈값 대입하기 결측치에 그룹별 최빈값 넣기¶ In [1]: import numpy as np import pandas as pd In [73]: # 데이터프레임 생성 df1 = pd.DataFrame({'col1' : list('a' * 4 + 'b' * 4), 'col2' : [np.nan, 1, 1, 2, np.nan, 3, 2, 1]}) df1 Out[73]: col1 col2 0 a NaN 1 a 1.0 2 a 1.0 3 a 2.0 4 b NaN 5 b 3.0 6 b 2.0 7 b 1.0 In [70]: # a 그룹에서는 최빈값이 1 하나만 나오지만, b 그룹에서는 최빈값이 여럿이라 1, 2, 3 모두 출력 df1.groupby('col1')['col2'].apply(pd.Series.mode) Out[70]:.. 2022. 11. 27.
조건에 맞는 데이터에 값 대입 조건에 맞는 데이터에 값 대입¶ 데이터프레임에서 특정 조건을 만족하는 데이터를 조건색인으로 검색해 값을 대입하는 경우 In [1]: import pandas as pd import numpy as np In [4]: # 데이터프레임 생성 x = pd.DataFrame({'no':[30, 30, 32, 33, 34], 'name':['James', 'Min', 'Kevin', 'Liz', 'Anne']}) x Out[4]: no name 0 30 James 1 30 Min 2 32 Kevin 3 33 Liz 4 34 Anne In [3]: # no가 30인 데이터의 name을 aa로 변경 x.loc[x['no'] == 30, 'name'] = 'aa' x Out[3]: no name 0 30 aa 1 30.. 2022. 11. 11.
transform 메소드로 결측치에 그룹별 평균값 대입하기 transform 메소드로 결측치에 그룹별 평균값 대입하기¶ 1. df.transform(함수)¶ 칼럼/로우 혹은 데이터프레임 전체에 해당 함수를 적용한 결과 값을 원본과 같은 형태의 시리즈 혹은 데이터프레임으로 반환한다. In [1]: import pandas as pd import numpy as np In [7]: df = pd.DataFrame(np.arange(1, 21).reshape(4,5), columns=list('abcde')) df Out[7]: a b c d e 0 1 2 3 4 5 1 6 7 8 9 10 2 11 12 13 14 15 3 16 17 18 19 20 In [8]: # 컬럼에만 적용하면 같은 형태의 시리즈 반환 df['e'].transform(np.sqrt) Out[8.. 2022. 11. 9.