1. Merge : pandas의 함수 중 하나로, 공통컬럼을 기준으로 테이블을 병합
SQL 구문의 JOIN과 가장 유사
1) 주요 옵션(파라미터)
# 기본 작성구문으로, 디폴트값은 inner join # 공통컬럼값은 합쳐져 하나의 컬럼으로 출력 merge_df = pd.merge(df2,df3) ` # 위 코드와 동일한 기능입니다. on 절을 사용할 수 있어요. merge_df = pd.merge(df2,df3, how='inner', on='Customer ID') ` # 공통컬럼이 2개 이상일 때 merge_df = pd.merge(df2, df3, how='inner', on=['공통컬럼1','공통컬럼2']) ` # 기준열 이름이 다를 때 merge_df = pd.merge(df2,df3, how='inner', left_on = 'Customer ID', right_on = 'user id') ` # 공통컬럼을 개별로 출력하고 싶을 때 merge_df = pd.merge(df2,df3, how='inner', on='Customer ID', suffixes=('_left','_rihgt'))
2. Join
pandas의 함수 중 하나로 Join은 인덱스 기준으로 테이블을 병합(index - 축)
1) 주요 옵션(파라미터)
# 단순 조인 df2.join(df3) ` # join 방식 설정 df2.join(df3, how='right') ` # join시 이름이 같은 컬럼이 있을 경우, 옵션으로 설정하여 조인 가능 # 아래 코드는 오류가 남 # df.join(df2) df.join(df2,how='left', lsuffix='1', rsuffix='2') ` # join 이후, 인덱스 정렬하기 df.join(df2,how='left', lsuffix='1', rsuffix='2', sort=True)
3. Concat
pandas 의 함수 중 하나로, 여러 데이터프레임 또는 시리즈를 특정 축을 따라 연결
1) 주요 옵션(파라미터)
# 기본 작성구문 pd.concat([df2, df3]) ` # 세로로 결합 pd.concat([df2, df3], axis=0, ignore_index=True, join='inner') ` # 가로로 결합 pd.concat([df2, df3], axis=1, ignore_index=True, join='inner')
4. Append
pandas의 함수 중 하나, 데이터프레임에 행을 추가하는 메서드로 두 데이터프레임을 행 기준으로 결합
1) 주요 옵션(파라미터)
# 단순 결합, 없는 건 NaN으로 처리되고 결합 # df2 가 df 의 아래로 붙음 df.append(df2)
데이터의 열을 기준으로 피벗테이블로 변환시키는 함수
1) 주요 옵션(파라미터)
# age 라는 축을 기준으로 카테고리별 고객id 카운트 pd.pivot_table(df2, index='Age', columns='Category', values='Customer ID', aggfunc='count') ` # age, Category 라는 축을 기준으로 성별 Previous Purchases 최소, 최대값 구하기 pd.pivot_table(df2, index=['Age','Category'],columns='Gender', values='Previous Purchases', aggfunc=['min','max']) ` # 성별을 축으로 하고, 사이즈, 나이별 고객id 고유하게 카운트 pd.pivot_table(df2, index=['Gender'],columns=['Size','Age'], values='Customer ID', aggfunc='nunique')
1. lambda
# 1.기본 표현구문 lambda 매개변수 : 표현식 ` #2.이해하기 들어온 값에 2를 곱해서 반환한다고 하면 lambda x : x * 2 ` #3.기존 함수 작성방식과 비교하기 #두 수를 더하는 함수 def plus(a,b): return a+b plus(10,40) > 50 ` #두 수를 더하는 함수 - 람다 형식 (lambda a,b: a + b)(10, 40)
2. split
# 예시 문자열 선언 s = "aa.bb.cc.dd.ee.ff.gg" ` # '.' 구분자를 기준으로 데이터를 나눔 # 아래 두 코드 결과 동일 s.split('.') s.split(sep='.') ` # '.' 구분자를 기준으로 데이터를 나누고 컬럼으로 받음 # lambda 함수와 결합하여 사용하는 경우 # 7번 반복, a 를 컬럼 구분자로 받아주고, format 함수를 통해 a0, a1, a2 ... 로 표기 # lambda 함수를 통해 '.' 로 구분. 단, len(x.split('.')), 즉 7 보다 i 가 작을 때 수행 # 중요 for i in range(7): df2["a{}".format(i)] = df2['x'].apply(lambda x: x.split('.')[i] if len(x.split('.'))>i else None)
3. rrule
# 라이브러리 불러오기 from datetime import datetime from dateutil.rrule import rrule, DAILY, TU ` # 시작 날짜, 종료날짜 start_date = datetime(2024, 2, 1) end_date = datetime(2024, 3, 1) ` # 2024-02-01 부터 2024-03-01 까지 strf 사용하여 원하는 데이터 형식으로 출력. weekly_rule = rrule(DAILY, dtstart=start_date, until=end_date) for date in weekly_rule: print(date.strftime('%Y-%m-%d')) ` # 빈 리스트 생성 후 날짜를 담아주기 a=[] for date in weekly_rule: a.append(date.strftime('%Y-%m-%d')) ` # 2023-02-01 부터 2023-03-01 까지 strf 사용하여 원하는 데이터 형식으로 출력 weekly_rule = rrule(DAILY, dtstart=start_date, until=end_date) ` # 데이터프레임에서 특정 날짜기간에 해당하는 데이터만 슬라이싱 하기 # 빈 리스트 생성 후 날짜를 담아주기 a=[] for date in weekly_rule: a.append(date.strftime('%Y-%m-%d')) ` # df3 에 있는 날짜 데이터는 string # string -> datetimd -> string 의 형태로 변환 # 위에서 받은 리스트에 해당하는 데이터만 필터링하기 위함 df3['Time stamp2'] = pd.to_datetime(df3['Time stamp']).dt.strftime('%Y-%m-%d') mask =(df3['Time stamp2'].isin(a)) df3[mask]