DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
fillna ๋ฉ์๋ : DataFrame์์ ๊ฒฐ์ธก๊ฐ์ ์ํ๋ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํ๋ ๋ฉ์๋์ ๋๋ค.
- value : ๊ฒฐ์ธก๊ฐ์ ๋์ฒดํ ๊ฐ์ ๋๋ค. dictํํ๋ก๋ ๊ฐ๋ฅํฉ๋๋ค.
- method : ๊ฒฐ์ธก๊ฐ์ ๋ณ๊ฒฝํ ๋ฐฉ์์ ๋๋ค. bfill๋ก ํ ๊ฒฝ์ฐ ๊ฒฐ์ธก๊ฐ์ ๋ฐ๋ก ์๋ ๊ฐ๊ณผ ๋์ผํ๊ฒ ๋ณ๊ฒฝํฉ๋๋ค.ffill๋ก ํ ๊ฒฝ์ฐ ๊ฒฐ์ธก๊ฐ์ ๋ฐ๋ก ์ ๊ฐ๊ณผ ๋์ผํ๊ฒ ๋ณ๊ฒฝํฉ๋๋ค.
- axis : {0 : index / 1 : columns} fillna ๋ฉ์๋๋ฅผ ์ ์ฉํ ๋ ์ด๋ธ์ ๋๋ค.
- inplace : ์๋ณธ์ ๋ณ๊ฒฝํ ์ง ์ฌ๋ถ์ ๋๋ค. True์ผ ๊ฒฝ์ฐ ์๋ณธ์ ๋ณ๊ฒฝํ๊ฒ ๋ฉ๋๋ค.
- limit : ๊ฒฐ์ธก๊ฐ์ ๋ณ๊ฒฝํ ํ์์ ๋๋ค. ์์์๋ถํฐ limit๋ก ์ง์ ๋ ๊ฐฏ์๋งํผ๋ง ๋ณ๊ฒฝํฉ๋๋ค.
- downcast : ๋ค์ด์บ์คํธํ ์ง ์ฌ๋ถ์ ๋๋ค. downcast='infer'์ผ ๊ฒฝ์ฐ float64๋ฅผ int64๋ก ๋ณ๊ฒฝํฉ๋๋ค.
์์
๋จผ์ 5x5 ๋ฐ์ดํฐํ๋ ์ ์์ฑ
col = ['col1','col2','col3','col4','col5']
row = ['row1','row2','row3','row4','row5']
na = np.nan
data = [[na, 2,na, 4,na],
[ 6, 7,na, 9,na],
[11,na,na,14,15],
[na,17,na,na,20],
[na,22,na,na,25]]
df = pd.DataFrame(data,row,col)
print(df)
col1 col2 col3 col4 col5
row1 NaN 2.0 NaN 4.0 NaN
row2 6.0 7.0 NaN 9.0 NaN
row3 11.0 NaN NaN 14.0 15.0
row4 NaN 17.0 NaN NaN 20.0
row5 NaN 22.0 NaN NaN 25.0
value์ ํ์์ ๋ฐ๋ฅธ ์ฌ์ฉ
value๊ฐ ์ซ์๋ ๋ฌธ์์ผ ๊ฒฝ์ฐ ๊ทธ๋๋ก ๊ฒฐ์ธก๊ฐ์ ๋์ฒดํ๊ฒ ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ A๋ก ๋ฐ๊ฟ๋ณด๊ฒ ์ต๋๋ค.
print(df.fillna('A'))
col1 col2 col3 col4 col5
row1 A 2.0 A 4.0 A
row2 6.0 7.0 A 9.0 A
row3 11.0 A A 14.0 15.0
row4 A 17.0 A A 20.0
row5 A 22.0 A A 25.0
dictํํ๋ก ์ ๋ ฅํ ๊ฒฝ์ฐ ๊ฐ๊ฐ ๋ ์ด๋ธ๊ฐ์ ๋ํด ์ํ๋ ๊ฐ์ผ๋ก์ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํฉ๋๋ค.
dict = {'col1':'A', 'col2':'B', 'col3':'C', 'col4':'D', 'col5':'E'}
print(df.fillna(value=dict))
# print(df.fillna(dict))๋ ๊ฐ๋ฅ
col1 col2 col3 col4 col5
row1 A 2.0 C 4.0 E
row2 6.0 7.0 C 9.0 E
row3 11.0 B C 14.0 15.0
row4 A 17.0 C D 20.0
row5 A 22.0 C D 25.0
method์ธ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
method์ธ์์ bfill์ ์ ๋ ฅํ ๊ฒฝ์ฐ ๊ฒฐ์ธก๊ฐ์ด ๋ฐ๋ก ์๋๊ฐ๊ณผ ๋์ผํ๊ฒ ์ค์ ๋ฉ๋๋ค.
โป df.backfill( )์ด๋ df.bfill( )๊ณผ ์์ ํ ๋์ผํ ๊ธฐ๋ฅ์ ์ํ
print(df.fillna(method='bfill'))
col1 col2 col3 col4 col5
row1 6.0 2.0 NaN 4.0 15.0
row2 6.0 7.0 NaN 9.0 15.0
row3 11.0 17.0 NaN 14.0 15.0
row4 NaN 17.0 NaN NaN 20.0
row5 NaN 22.0 NaN NaN 25.0
method์ธ์์ ffill์ ์ ๋ ฅํ ๊ฒฝ์ฐ ๊ฒฐ์ธก๊ฐ์ด ๋ฐ๋ก ์๊ฐ๊ณผ ๋์ผํ๊ฒ ์ค์ ๋ฉ๋๋ค.
โป df.pad( )๋ df.ffill( )๊ณผ ์์ ํ ๋์ผํ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค.
print(df.fillna(method='ffill'))
col1 col2 col3 col4 col5
row1 NaN 2.0 NaN 4.0 NaN
row2 6.0 7.0 NaN 9.0 NaN
row3 11.0 7.0 NaN 14.0 15.0
row4 11.0 17.0 NaN 14.0 20.0
row5 11.0 22.0 NaN 14.0 25.0
limit์ธ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
limit์ธ์๋ ๊ฐ ๋ ์ด๋ธ๊ฐ์ ๋ํด์ ๊ฒฐ์ธก์น ๋ณ๊ฒฝ์ ์ํํ ํ์์ ๋๋ค. ํ ๊ธฐ์ค์ผ๊ฒฝ์ฐ ์ผ์ชฝ๋ถํฐ, ์ด ๊ธฐ์ค์ผ ๊ฒฝ์ฐ ์์์๋ถํฐ ์ํํฉ๋๋ค.
print(df.fillna('A', limit=2))
col1 col2 col3 col4 col5
row1 A 2.0 A 4.0 A
row2 6.0 7.0 A 9.0 A
row3 11.0 A NaN 14.0 15.0
row4 A 17.0 NaN A 20.0
row5 NaN 22.0 NaN A 25.0
downcast์ธ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
downcast ์ธ์๋ฅผ 'infer'๋ก ์ค์ ํจ์ผ๋ก์จ float64ํํ๋ฅผ int64ํํ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
print(df.fillna(0, downcast='infer'))
col1 col2 col3 col4 col5
row1 0 2 0 4 0
row2 6 7 0 9 0
row3 11 0 0 14 15
row4 0 17 0 0 20
row5 0 22 0 0 25
inplace๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
๋ค๋ฅธ ํ์ด์ฌ ๊ฐ์ฒด์์์ ๋ง์ฐฌ๊ฐ์ง๋ก inplace๋ ์๋ณธ์ ๋ฎ์ด์์ฐ๋ ๊ธฐ๋ฅ๊ณผ ์ ์ฌํ ๊ธฐ๋ฅ์ ํฉ๋๋ค.
์ฆ df.fillna(0, inplace=True) ๋ df=df.fillna(0)๊ณผ ๋์ผํ ๊ธฐ๋ฅ์ ํฉ๋๋ค.
df.fillna('A', inplace=True)
print(df)
col1 col2 col3 col4 col5
row1 A 2.0 A 4.0 A
row2 6.0 7.0 A 9.0 A
row3 11.0 A A 14.0 15.0
row4 A 17.0 A A 20.0
row5 A 22.0 A A 25.0
์๋ณธ: https://wikidocs.net/153209
'Study > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] read_csv๋ก ๋ฐ์ดํฐ ๋ถ๋ฌ์ฌ ์ parse_dates ์ต์ ์ผ๋ก datetime ํํ๋ก ์ง์ ํ๊ธฐ (0) | 2023.06.09 |
---|---|
[python] ์ธ๋ฑ์ค๋ฅผ ์ด๋ก ๋ณํ (reset_index) (0) | 2023.06.06 |
[python] ๋์ ํฉ/๋์ ๊ณฑ (cumsum / cumprod) (0) | 2023.06.06 |
[python] numpy ์์์ ์ฌ๋ฆผ, ๋ด๋ฆผ, ๋ฒ๋ฆผ (0) | 2023.05.23 |
[Matplotlib] python matplotlib ํ๊ธ ๊นจ์ง ํด๊ฒฐํ๊ธฐ (0) | 2023.03.26 |