[Pandas] 데이터 음수값 없애기

2023. 3. 14. 00:41·데이터분석/데이터 전처리

* 공부한 것을 정리한 글이므로 틀린 내용이 있을 수 있습니다.

* 더 좋은 방법 또는 틀린부분이 발견될 시 계속 수정하며 업데이트 할 예정입니다.

 

오늘 정리해볼 전처리는 데이터의 음수값을 없애고 간단한 선형 보간법으로 데이터를 채워넣는 과정입니다.

일단 제가 10분동안 요리조리 만든 월단위 매출 2년 데이터입니다. 

 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 2년치 매출 데이터
sales_list = [50,60,55,45,60,75,90,
              120,110,-5,-5,45,50,
              60,40,50,70,130,140,
              110,-5,-5,40,50]
              
# 월별 2년
date = pd.date_range(start="2021-01", end="2023-01", freq='M')
date

df = pd.DataFrame({"Sales":sales_list}, index=date)
df

 

제가 만든 데이터를 시각화 해보면

# 시각화
df.plot(figsize=(10,5), title="Retail Sales", marker='.')

이렇게 매출에 음수값이 들어간 걸 볼 수가 있습니다.

잘 안보이므로 음수값을 빨간색 점으로 표시를 해보겠습니다.

 

# 음수 인덱스
idx = np.where(df<0) # 결과값 (array[9,10,20,21],..)

fig,ax = plt.subplots(figsize=(10,5))
ax.plot(df.index, df['Sales'],marker='.')
ax.scatter(df.iloc[idx[0]].index, df['Sales'].iloc[idx[0]], marker='o', color='r')
ax.set_title("Retail Sales")

 

서론이 길었습니다. 데이터 전체의 음수값을 없애주려면 아래와 같이 정말 간단합니다.

다만 음수값을 없애고 어떻게 전처리 해줄지를 고민해야 하기 때문에 Nan값으로 대체하여 줍니다.

# 음수값 없애기
# 음수값을 Nan값으로 변환
df[df<0] = np.NaN

이후 다시 시각화를 진행해보면 아래와 같이 그래프에 빈값이 생기게 되네요

 

간단한 linear interpolation을 통해 전처리를 마치도록 하겠습니다.

시각화가 제일 어려웠던 것 같습니다!!

# 선형 보간
df_filled = df.interpolate(method="linear")

# 시각화
ax = df_filled.plot(figsize=(10,5), marker='.')
df_filled[df.isnull()].plot(ax=ax, marker='.', color='r', legend=None)
ax.set_title("Filled Retail Sales")

 

'데이터분석 > 데이터 전처리' 카테고리의 다른 글

[pandas] if 문으로 빈 데이터프레임 거르기  (0) 2023.03.16
[pandas] 데이터프레임 날짜 인덱스 늘리기(reindex)  (0) 2023.03.16
[Pandas] 년,월,일 따로 있는 데이터 읽기 : parse_dates, date_parser, index_col  (0) 2023.01.08
[전처리] 전처리 파이프라인 구축하기(1)  (0) 2023.01.07
'데이터분석/데이터 전처리' 카테고리의 다른 글
  • [pandas] if 문으로 빈 데이터프레임 거르기
  • [pandas] 데이터프레임 날짜 인덱스 늘리기(reindex)
  • [Pandas] 년,월,일 따로 있는 데이터 읽기 : parse_dates, date_parser, index_col
  • [전처리] 전처리 파이프라인 구축하기(1)
데이터분석과 개발
데이터분석과 개발
데이터분석 뿐 아니라 데이터엔지니어링까지 다하고 싶은 데이터분석가입니다 :)
  • 데이터분석과 개발
    먼지뭉치 Data Analysis
    데이터분석과 개발
  • 전체
    오늘
    어제
    • 분류 전체보기 (41)
      • 데이터분석 (22)
        • 데이터분석 (3)
        • 시계열분석 (6)
        • 데이터 전처리 (9)
        • 데이터시각화 (3)
        • 환경세팅 (1)
        • 논문 (0)
      • AI agent (0)
      • SQL (6)
      • 개발&분석 경험 (3)
      • 알고리즘 (3)
      • OS (1)
      • 수학 (4)
        • 선형대수 (2)
        • 확률&통계 (2)
      • 맛집 (2)
        • 이수&사당 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    짧은 시계열 # 금융시계열
    이수역 양식집
    timeseries decomposition
    시계열시각화
    시간형식변환
    응용이 보이는 선형대수
    seaborn # kdeplot # 데이터분석
    시간형식
    오제이튜브
    pandas
    플로틀리
    np.split
    stl
    시계열 #reindex #인덱스 확장 #datetime index #index extention # 데이터전처리
    음수값 #전처리 #선형보간 #pandas #데이터 #데이터분석
    빈 데이터프레임 #pandas #데이터전처리
    시계열분해
    파이프라인전처리
    시계열
    시계열모듈
    확률
    Python
    데이터분석
    크롤링자동화
    SQL
    adf_test
    리눅스개념
    loess
    시계열데이터셋
    pandas # 월말 날짜 # 마지막 주 # 날짜계산 # 시계열 # 마지막 주 금요일
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데이터분석과 개발
[Pandas] 데이터 음수값 없애기
상단으로

티스토리툴바