출처: https://astrocosmos.tistory.com/202 [ASTROCOSMOS:티스토리] '데이터 - 전처리' 카테고리의 글 목록 (2 Page) :: 하나둘셋넷
728x90

데이터 전처리 날짜, date, Date]

변경 - timedelta 형식의 시리즈열 데이터 유형을 days로 변경

display(df_competition['진행기간'][0])
display(df_competition['진행기간'][0].days)

df_competition['진행기간'] = df_competition['진행기간'].apply(lambda x: x.days)
df_competition['진행기간']

 

 

lambda 함수를 사용하면 pandas 시리즈의 각 요소에 대해 주어진 함수를 적용

 

변경 - pd.to_datetime

import datetime

# '날짜' 열을 datetime 형식으로 변환
df_participate['일자'] = pd.to_datetime(df_participate['일자'])

# 월별 열 생성
df_participate['월별'] = df_participate['일자'].dt.to_period('M')

df_participate.head()

 

 

조회 - 오늘 날짜 출력

from datetime import datetime
print(datetime.today())
print(datetime.today().strftime("%Y-%m-%d %H:%M:%S"))
print(datetime.today().strftime("%Y-%m-%d"))

 

조회 -  오늘 날짜의 일 단위만 조회

from datetime import datetime

# 오늘 날짜만 조회
today_date = today_date.day
today_date

조회 - timedelta, 2년 전 날짜 조회

from datetime import datetime
from datetime import timedelta
print(datetime.today())
print(datetime.today().strftime("%Y-%m-%d %H:%M:%S"))
print(datetime.today().strftime("%Y-%m-%d"))

two_years_ago = datetime.today() - timedelta(days = 2*365)
print(two_years_ago.strftime("%Y-%m-%d"))

 

조회 - timedelta에서 원하는 요소만 추출

display(df_competition['진행기간'][0])
df_competition['진행기간'][0].days

 

 

변경 - 여러 행에 메서드를 적용 lambda, days

display(df_competition['진행기간'][0])
display(df_competition['진행기간'][0].days)

df_competition['진행기간'] = df_competition['진행기간'].apply(lambda x: x.days)
df_competition['진행기간']

 

728x90
728x90

데이터 전처리 파일 관리]

변경

import pandas as pd

# UTF-8 인코딩으로 파일 읽기
df = pd.read_csv('mymeal_all.csv', encoding='utf-8')

# CP949 인코딩으로 파일 저장
df.to_csv('mymeal_all_cp949.csv', encoding='cp949', index=False)

 

저장 - csv로 저장

# 결과 저장
# result 변수를 인덱스 미포함하여 'result3.csv' 파일로 저장 합니다.
# 저장경로는 현재 경로의 하위 './data' 폴더로 지정해 주세요.

result.to_csv('./data/result3.csv',index=False)

 

 

저장 - 특정 위치에 csv로 저장

import pandas as pd

# 예시 DataFrame 생성
data = {'Column1': [1, 2, 3], 'Column2': [4, 5, 6]}
your_dataframe = pd.DataFrame(data)

# CSV 파일로 저장할 경로
file_path = 'path/to/your/folder/filename.csv'

# DataFrame을 CSV 파일로 저장
your_dataframe.to_csv(file_path, index=False)

 

저장 - Excel로 저장

df.to_excel('example.xlsx', index=False)

 

조회, 확인 - 특정 위치의 파일 목록 확인

import os

# 확인하고 싶은 디렉토리 경로
directory_path = 'your/directory/path'

# 디렉토리 내의 파일과 하위 디렉토리 목록 가져오기
file_list = os.listdir(directory_path)

# 파일 목록 출력
print(file_list)

 

728x90
728x90

데이터 전처리] 1,234 등 숫자에서 쉼표를 제거하고 숫자형으로 형식 변경, 빈 칸 np.nan으로 대체 및 제거, str.replace(',', '').astype(float), np.nan, subset

 

seoul_monthly_2023['대여건수'] = seoul_monthly_2023['대여건수'].str.replace(',', '').astype(float)
seoul_monthly_2023['반납건수'] = seoul_monthly_2023['반납건수'].str.replace(',', '')
seoul_monthly_2023['반납건수'] = seoul_monthly_2023['반납건수'].str.replace(' - ', '')
seoul_monthly_2023['반납건수'].replace('', np.nan, inplace = True)
seoul_monthly_2023.dropna(subset=['반납건수'], inplace= True)
seoul_monthly_2023['반납건수'] = seoul_monthly_2023['반납건수'].astype(float)
728x90
728x90

데이터 전처리 가변수화] one-hot encoding, pd.get_dummies

one-hot encoding

 

- 원-핫 인코딩(One-Hot Encoding):

각 범주를 독립된 열로 나타내며, 해당 범주에 속하는 경우 1, 그렇지 않은 경우 0으로 표시

예를 들어, '색상'이라는 특성이 '빨강', '파랑', '초록' 세 가지 범주를 가질 때, 원-핫 인코딩은 이를 세 개의 열로 변환합니다 ('빨강', '파랑', '초록'). 각 열은 해당 색상이면 1, 아니면 0으로 표시됩니다.

 

- 가변수화(Dummy Variable Encoding):

원-핫 인코딩과 유사하지만, 범주 중 하나를 기준(기준 범주)으로 삼아 그 범주를 제외한 나머지 범주에 대해서만 열을 생성

이 방법은 다중공선성(multicollinearity) 문제를 방지하기 위해 사용되며, 통계 모델링에서 자주 사용

예를 들어, 위와 같은 '색상' 특성에 대해 가변수화를 적용할 때, '빨강'을 기준으로 삼으면 '파랑'과 '초록'에 대해서만 열이 생성

 

 

 

pd.get_dummies 함수를 사용하여 drop_first=True 옵션을 설정한 경우, 이는 원-핫 인코딩을 수행하되 첫 번째 범주를 제외한 가변수화(dummy variable encoding)에 해당

 

cat_cols = ['ShelveLoc', 'Education', 'US', 'Urban']
x = pd.get_dummies(x, columns = cat_cols, drop_first = True)

728x90
728x90

xml.etree.ElementTree

import xml.etree.ElementTree as et

 

bs4, Beautiful Soup Parsing

import bs4

 

pprint

import pprint

 

728x90
728x90

데이터 전처리 그룹] 

그룹 - groupby

groupby( by = ['컬럼1', '컬럼2'], as_index = False )[['컬럼 3']].sum()

groupby( by = ['컬럼1'],as_index = False)[['컬럼2', '컬럼3']].sum()

 

728x90

+ Recent posts