ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Pandas] DataFrame 다루기 메모
    Do it! 판다스 입문 2022. 11. 2. 11:33

    데이터프레임 만들기

    •  딕셔너리 이용
    df = pd.DataFrame.from_dict([{'column':'data'}])
    
    # 더 많은 row
    # df = pd.DataFrame.from_dict([{'column':['data', 'data2', 'data3']}])

     

    • db select한 데이터로 만들기
    df = pd.DataFrame(data, columns = ['column'])

     

     

    컬럼 추가

    • 맨 뒤에 추가
    df['column'] = 'data'

     

    • 원하는 위치에 추가
    df.insert(원하는 열 인덱스, column명, data)

    (맨 앞)

     

     

     

     

     

    (2번째 열)

     

     

     

     

     

    • 빈 값 추가
    df['column'] = ''

     

    • nan 값 추가
    df['column'] = np.nan

     

     

    index 다루기

    • 인덱스 열 추가하기
    df['columns'] = df.index

     

    • index 번호가 0이 아닌 1로 시작하고 싶을 때 !!!
    df.columns = df.columns+1

    (예시는 새로 열을 만들었지만 .index 를 입력하면 원래 인덱스열이 변경)

     

    • 인덱스 초기화
    df.index_reset(drop = True, inplace = True)
    # drop = True : 기존 인덱스 삭제 , False : 기존 인덱스 유지

     

    • 기존 열 인덱스로 만들기
    df.set_index('columns', drop = True, append = False, inplace = True)
    # drop : 기존 컬럼 유지(False) or 삭제(True)
    # append : 기존 인덱스 유지(True) or 삭제(False)

     

     

    열 삭제

    df = df.drop(['column'], axis = 1)
    # axis 1=열, 0=행

     

     

    컬럼 이름 바꾸기

    df.rename(columns = {'변경 전':'변경 후'}, inplace=True)
    # inplace=True 옵션 : 변경사항 저장(덮어쓰기)

     

     

    열 순서 재배치

    df = df[['column', 'column2']]
    # [[원하는 순서대로 컬럼명 기재]]

     

     

    행 추가

    df.loc[인덱스번호] = ['', '']
    # 인덱스번호 = 마지막 행 번호 + 1

     

     

    데이터프레임 합치기

    • concat
    df = pd.concat([df1,df2], axis = 1 , join = 'inner')
    # axis = 0 일 경우 위아래로 병합
    # index 재배열 : ignore_index=True
    
    # axis = 1 일 경우 좌우로 병합
    # inner : 교집합, outer : 합집합

     

    • + 추가 ) for문 append하기
    new_df = pd.DataFrame()
    
    for i in range:
    	~
        ~
        ~
        ~
        # 데이터프레임 append
        new_df = new_df.append(df)

     

     

    결측값(nan) 다루기

    • 결측값 찾기
    df.isnull()
    # 결측값인 경우 = True

     

    • 결측값 개수 세기
    df.isnull().sum()

     

    • 결측값 채우기
    df.fillna()
    # ()안에 원하는 값 입력
    # () 안에
    # 	df.mean() : 각 열의 평균값
    # 	method = 'ffill' or 'pad' : 앞의 값
    # 	method = 'bfill' or 'backfill' : 뒤의 값
    # 	df.interpolate() : 앞, 뒤 값의 평균

     

    • 결측값 삭제하기
    df.dropna()
    # 결측값이 있는 행 모두 삭제 (=default)

    조건 기본값(default) : (axis = 'index', how='any')

    행 방향 : axis = 'index'

    열 방향 : axis = 'columns'

    모두 nan일 경우 : how = 'all'

    하나라도 nan일 경우 : how = 'any'

     

    ex )

    • '행'이 '모두' nan일 때 삭제
    df.dropna(axis = 'index', how='all')

     

    • '열' 방향으로 nan이 '하나'라도 있는 경우 삭제
    df.dropna(axis = 'columns', how='any')

     

    • '원하는 열'에 nan이 있는 행 삭제
    df.dropna(axis = 'index', how='any', subset=['column'])

     

    • '두 열'이 '모두' nan일 때 행 삭제
    df.dropna(axis = 'index', how='all', subset=['column', 'column']

     

     

    timestamp

    • 현재시간 입력하기
    df['column'] = pd.Timestamp(datetime.now())

     

    •  포매팅
    df['column'] = df['column'].map(lambda ts: ts.strftime("%Y-%m-%d %H:%M:%S"))
    # %Y-%m-%d %H:%M:%S = 년-월-일 시-분-초

     

     

     

     

     

     

     

    참고

Designed by Tistory.