파이썬 pandas의 fillna 메소드를 사용하는 방법은?
_____A1: fillna()는 pandas의 DataFrame이나 Series에서 결측치(NaN)를 특정 값이나 방법으로 채워 넣을 때 사용하는 메소드입니다.
Q2: fillna()를 기본적으로 어떻게 사용하나요?
A2: 예를 들어, df.fillna(0)은 데이터프레임 df 안의 모든 NaN 값을 0으로 대체합니다.
Q3: fillna()에 숫자가 아닌 다른 값을 넣을 수 있나요?
A3: 네, 문자열이나 리스트, 딕셔너리 등도 가능합니다. 예를 들어 df.fillna('N/A')는 NaN을 'N/A'로 채웁니다.
Q4: 특정 컬럼별로 다른 값으로 NaN을 채우려면 어떻게 하나요?
A4: 딕셔너리를 사용해 컬럼별 대체값을 지정할 수 있습니다. 예: df.fillna({'A':0, 'B':1})은 A 컬럼의 NaN은 0, B 컬럼의 NaN은 1로 대체합니다.
Q5: inplace 인자는 무엇인가요?
A5: inplace=True로 설정하면 원본 데이터프레임을 직접 수정하며, False(기본값)면 새로운 객체를 반환합니다.
Q6: method 파라미터는 어떤 역할을 하나요?
A6: method='ffill'은 앞 값으로 채우기, method='bfill'은 뒤 값으로 채우기를 의미하며, 누락된 값을 인접한 값으로 보간하는 데 유용합니다.
A7: limit은 연속으로 채울 최대 NaN 개수를 제한합니다. 예를 들어 limit=2면 최대 2개 NaN까지만 앞뒤 값으로 채웁니다.
Q8: 예를 들어서 보여주세요.
A8:
```python
import pandas as pd
df = pd.DataFrame({'A':[1,None,3,None], 'B':[None,2,None,4]})
df_filled = df.fillna(0) 모든 NaN을 0으로 채움
df_filled2 = df.fillna({'A':0, 'B':1}) 컬럼별 다르게 채움
df_ffill = df.fillna(method='ffill') 앞 값으로 채움
```
Q9: fillna()는 결측치만 채우나요?
A9: 네, 원래 NaN인 값만 변경하며, 기존 값에는 영향을 주지 않습니다.
Q10: fillna()와 interpolate()의 차이는 무엇인가요?
A10: fillna()는 지정한 값이나 인접 값으로 단순 대체하는 반면, interpolate()는 선형, 다항식 등 보간법으로 값을 추정해 채웁니다.
이 메소드를 사용하면 데이터프레임(DataFrame) 또는 시리즈(Series)에서 결측값을 다양한 방법으로 처리할 수 있습니다.
기본 사용법 1. 단일 값으로 채우기 : 결측값을 통일된 값으로 채울 수 있습니다.
```python import pandas as pd import numpy as np 예시 데이터프레임 생성 data = { 'A': [1, 2, np.nan, 4], 'B': [np.nan, 2, 3, 4] } df = pd.DataFrame(data) NaN을 0으로 채우기 df_filled = df.fillna(0) print(df_filled) ```
2. 앞/뒤 값으로 채우기 : 이전 또는 이후의 값으로 결측값을 채울 수 있습니다.
`method` 매개변수를 사용하여 `'ffill'`(forward fill) 또는 `'bfill'`(backward fill)로 설정합니다.
```python Forward fill df_ffill = df.fillna(method='ffill') print(df_ffill) Backward fill df_bfill = df.fillna(method='bfill') print(df_bfill) ```
3. 특정 컬럼에만 채우기 : 특정 열에만 결측값을 채우려면 해당 열을 선택하여 사용합니다.
```python 컬럼 A의 NaN만 0으로 채우기 df['A'] = df['A'].fillna(0) print(df) ```
4. 사전(dict)으로 여러 값으로 채우기 : 여러 열에 대해 다른 값으로 결측값을 채우고 싶을 때 사전을 사용할 수 있습니다.
```python A열은 0, B열은 1로 채우기 df_filled = df.fillna({'A': 0, 'B': 1}) print(df_filled) ```
5. 인플레이스(inplace)로 변경 : 원래 데이터프레임을 직접 수정하고 싶다면 `inplace=True`를 사용할 수 있습니다.
```python df.fillna(0, inplace=True) print(df) ``` 결론 `fillna()` 메소드는 결측값 처리에 매우 유용하며, 다양한 방법으로 데이터를 채울 수 있습니다.
상황에 맞춰 적절한 방법을 선택하여 사용할 수 있습니다.
작성자:
김채영 [비회원]
| 작성일자: 1년 전
2025-02-10 05:31:07
조회수: 152 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 152 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.