결측치 제거 - 열 제거하기
# 결측치 제거1 - 열 제거하기
df3 = df3.drop('Unnamed: 4', axis=1)
# 결측치 제거2 -결측치가 있는 행들은 모두 제거
# 원본 데이터 변경 - dropna(inplace = True)
# 원본 데이터 유지 - dropna()
df3.dropna(inplace=True)
df3.dropna()
결측치 대체: 최빈값
# 결측치는 카운트 되지 않는다.
# interaction type의 빈칸을 채우고 싶다
df3.groupby('Interaction type').count()
df3.groupby('Interaction type')['product id'].count().reset_index()
# 결측치가 있는 Interaction type 컬럼을 최빈값으로 대체하기 위해, 해당 컬럼의 최빈값을 구함
df3['Interaction type'].mode()
# mode 는 최빈값을 의미
# df3 의 Interaction type 컬럼을 fillna함수를 이용하여 채워주되, mode() 함수를 사용하여 최빈값으로 넣어줌
# mode 함수는 시리즈를 output으로 가집니다.
# mode 함수는 값을 하나를 가진다. [0]을 통해 시리즈 중 단일값을 가져와야 합니다. [1]을 하면 오류가 난다. 값이 하나이기 때문에
df3 = df3['Interaction type'].fillna(df3['Interaction type'].mode()[0])
연산 후 인덱스 재설정
# 연산 후 인덱스 재설정
df3= df3.reset_index()
최빈값으로 대체된 데이터프레임 확인
# 최빈값으로 대체된 데이터프레임 확인
df3.groupby('Interaction type').count()
결측치 대체: 평균, 중앙값
# str.split 을 통해 문자열을 분리하고, 그 값 중 첫번째 인덱스를 가져옴
# df['sw'] = dd['Shipping Weight'].str.split().str[1]과 비교해보세요!
df['sw'] = df['Shipping Weight'].str.split().str[0]
# string to float, 에러무시
df['sw'] = pd.to_numeric(df['sw'] , errors='coerce')
# 평균값 대체
# inplace=True 로 하면 원본 데이터가 바뀌게 됩니다.
df['sw'] = df['sw'].fillna(df['sw'].mean())
df.isnull().sum()
# 중간값 대체
# inplace=True 로 하면 원본 데이터가 바뀌게 됩니다.
df['sw'] = df['sw'].fillna(df['sw'].median())
df.isnull().sum()
바로 위 값으로 대체
# 바로 위 값으로 대체
df['sw'] = df['sw'].fillna(method='ffill')
df.isnull().sum()
바로 아래 값으로 대체
# 바로 아래 값으로 대체
df['sw'] = df['sw'].fillna(method='bfill')
#df.isnull().sum()
결측치 대체: group by
# group by 값으로 채워넣기 - 사전 데이터 확인
df.groupby('Is Amazon Seller')['sw'].median()
transform 함수 사용
#group by한 데이터를 데이터프레임의 컬럼으로 추가하기 위해
#transform 함수 사용
df['sw'] = df['sw'].fillna(df.groupby('Is Amazon Seller')['sw'].transform('median'))
'[업무 지식] > Python' 카테고리의 다른 글
[pandas 라이브러리] DATEUTIL (1) | 2024.10.30 |
---|---|
[Python Basic] 이상치 파헤치기 (0) | 2024.10.30 |
[Python 기초] ② (0) | 2024.10.24 |
[Python 기초] ① (0) | 2024.10.24 |
Python / 데이터 시각화 (0) | 2024.10.23 |