Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- mysql
- Github
- ai 캠프
- conda
- 로컬 런타임
- finpilot
- pytorch
- 오블완
- Python
- chromeextention
- ML
- pandas
- streamlit
- ollama
- 파이썬
- ai캠프
- mifare
- ai_캠프
- team_project
- 머신러닝
- seaborn
- djangorestframework
- EC2
- lightsail
- django
- sLLM
- 티스토리챌린지
- 정치기 필기
- Jupyterlab
- aws
Archives
- Today
- Total
greatsangho의 이야기
캠프 17일차 - 데이터 전처리(2) 본문
# 시계열데이터는 시간정보.. 과거와 현재 미래의 정보를 가지고 있음
# 년 월 일 요일 공휴일 로 파생피처를 생성한다
# 대부분 날자데이터는 판다스에서 문자열로 취급하는경우가 대다수
# to_date() 변환
# .dt.yaer .dt.to_period() 등을 이용해서 분리
# 공휴일은 파이썬에 제공안함... 외부 라이브러리를 사용 (다양함)
# 연속적인 시계열 데이서 생성은 pd.date_range()
# 시계열 데이터 생성하기
ts_ms = pd.date_range(
start='2024-01-01',
end = '2024-09-11',
#periods=100,
freq='M', # 월의시작일 MS M:월의 마지막
tz = 'Asia/Seoul'
)
!pip install holidays
import holidays
holiyday = holidays.KR()
df['is_holidyas'] = df['new_date'].isin(holiyday).astype('int8')
df.head()
공휴일을 0과 1로 반환
apply - 시리즈 객체에 적용 함수, 람다와 사용
# apply 시리즈객체에 적용 - 함수 - 람다
import seaborn as sns
df = sns.load_dataset('titanic')
numeric_df = df.select_dtypes(include=['int64','float64'])
numeric_df['adult'] = numeric_df['age'].apply(lambda x : x > 20).astype('int')
numeric_df.head()
pipe - 객체를 함수에 매핑
def missing_value(x):
return x.isnull()
titanic.pipe(missing_value)
titanic.apply(missing_value)
pipe와 apply는 True / False 형태로 반환
GPT로 개념을 정리하면,
- pipe 메서드 사용:
- pipe 메서드는 전체 데이터프레임에 missing_value 함수를 적용하는 데 사용됩니다. 결과는 원본과 동일한 형태를 가진 불리언 데이터프레임으로, 각 항목이 원본 데이터프레임에서 결측값일 경우 True, 그렇지 않으면 False로 표시됩니다.
- apply 메서드 사용:
- 마찬가지로, apply 메서드는 데이터프레임의 각 열에 대해 missing_value 함수를 적용하는 데 사용됩니다. 이 또한 결측값이 있는 위치를 나타내는 불리언 데이터프레임을 생성합니다.
- 두 메서드(pipe와 apply) 모두 동일한 출력을 생성합니다: 일반적으로 pipe 메서드는 연산 체이닝에 사용되고, apply는 데이터프레임의 축을 따라 함수를 적용하는 데 더 일반적으로 사용됩니다.
# 문자열 데이터 ex) 2024-01-23
# 문자열에서 년월까지만 추출한다음
# yyyy-mm 이 문자열을 datetime으로 변환
pd.to_datetime('2024-01') # Timestamp('2024-01-01 00:00:00')
def extract_yearmonth(df):
return df['Date'].str[:7]
def convertDateTime(df):
return pd.to_datetime(df, format="%Y-%m")
stock_df.pipe(extract_yearmonth).pipe(convertDateTime)[0]
이와 같이 활용 가능하다.
Join
pd.merge(df1,df2) # inner
pd.merge(df1,df2,how='outer',on='id') # full outer join
Join 정리
- INNER JOIN: 두 테이블 간의 공통된 값이 있는 행만 반환합니다. 즉, 조인 조건을 만족하는 행들만 결과로 가져옵니다.
- LEFT OUTER JOIN: 왼쪽 테이블의 모든 행과 오른쪽 테이블에서 조인 조건을 만족하는 행을 반환합니다. 오른쪽 테이블에 일치하는 값이 없으면 NULL로 채워집니다.
- RIGHT OUTER JOIN: 오른쪽 테이블의 모든 행과 왼쪽 테이블에서 조인 조건을 만족하는 행을 반환합니다. 왼쪽 테이블에 일치하는 값이 없으면 NULL로 채워집니다.
- FULL OUTER JOIN: 두 테이블에서 조인 조건을 만족하는 모든 행을 반환하며, 어느 한쪽에만 존재하는 행도 NULL로 채워져 반환됩니다.
- CROSS JOIN: 두 테이블의 모든 가능한 조합을 반환합니다. 즉, 첫 번째 테이블의 각 행이 두 번째 테이블의 모든 행과 결합됩니다.
- SELF JOIN: 같은 테이블 내에서 자기 자신과 조인을 수행합니다. 주로 자기 자신과 비교가 필요할 때 사용됩니다.
- NATURAL JOIN: 두 테이블 간 동일한 이름의 컬럼을 자동으로 기준으로 하여 조인합니다. 이때, 동일한 컬럼 이름이 없으면 오류가 발생할 수 있습니다.
그룹 지어 평균
g = titanic2.groupby(['class'])
g.mean()
groupby
group_cs = titanic.groupby(['class','sex'])
for key, data in group_cs:
print(key,len(data),data.head(2))
그룹으로 묶은 key 값과 해당하는 key값에 해당하는 data로 구성
group_cs.get_group(('Second', 'male'))
표준편차 std()
titanic2 = titanic[['age','class','fare','survived']]
# class 별로 groupby 적용
# 모든 컬럼에 대해서 std() 적용
# fare 컬럼에 대해서 std()
grouped = titanic2.groupby(['class'])
print( grouped.std(numeric_only=True) )
print( grouped['fare'].std() )
print( grouped.fare.std() )
그룹 후 집계함수 한번에 적용하기 agg
# 그룹핑을 한후 여러개의 집계함수를 한번에 적용
grouped.agg(['mean','std'])
딕셔너리 형태로 각각 적용 가능
grouped.agg({
'age' : 'mean',
'fare' : 'std',
'survived' : 'sum'
})
transform() 메서드 - Pandas에서 시리즈나 데이터프레임의 각 요소에 함수를 적용하여 변환된 결과를 반환
grouped.age.transform('mean')
# 정규화 Z-score skleanlearn의 StandardScaler 가 지원 데이터를 정규분포형태로
# (x - x.mean() ) / x.std()
def z_score(x):
return (x - x.mean() ) / x.std()
grouped.age.transform(z_score)
.index
해당 인덱스 추출
반응형
'프로그래밍 > SK AI 캠프' 카테고리의 다른 글
캠프 19일차 - 머신러닝(선형회귀) (0) | 2024.09.13 |
---|---|
캠프 18일차 - 데이터 시각화 (2) | 2024.09.12 |
캠프16일차 - 데이터 전처리(1) (0) | 2024.09.12 |
캠프 15일차 - Pandas 입문 (1) | 2024.09.11 |
SKN AI 캠프 3주차 (0) | 2024.09.07 |