-
[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 = 년-월-일 시-분-초
참고
'Do it! 판다스 입문' 카테고리의 다른 글
Chapter 12-2 사례별 시계열 데이터 계산하기_2 (0) 2022.06.26 Chapter 12-2 사례별 시계열 데이터 계산하기_1 (0) 2022.06.26 Chapter 12-1 datetime 오브젝트 (0) 2022.06.26 Chapter 11-3~11-4 데이터 필터링, 그룹 오브젝트 (0) 2022.06.25 Chapter 11-1~11-2 데이터 집계, 데이터 변환 (0) 2022.06.25