일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정보화
- 교육
- MachineLearning
- 데이터분석가
- 머신러닝
- 인프라
- IT인프라
- KT에이블스쿨
- 데이터다루기
- DX컨설턴트
- 판다스
- 넘파이
- It
- 데이터
- 파이썬기초
- 프로젝트
- 데이터분석기초
- 아키텍처
- 오답노트
- 파이썬
- deeplearning
- 데이터분석
- 데이터다듬기
- 딥러닝
- 자기개발
- 짧은생각
- 미니프로젝트
- KT에이블스쿨5기
- 데이터프레임
- 구조
- Today
- Total
꾸준히 성장하기
[D+16] 프로젝트 | 나만의 Pandas Cheat Sheet 만들기 본문
2주간 데이터 분석 학습을 한 것을 바탕으로 조원들과 함께 미니 프로젝트를 진행했습니다.
자세한 내용은 주말에 공유드리도록 하겠습니다!
이번 프로젝트를 통해 개인 실습에 그치지 않고, 조원들과 함께 생각을 나누고 코드를 토론하는 시간을 가졌습니다.
처음 도전하는 프로젝트였기에 설렘과 긴장이 공존하는 시간이었지만 조원들과 함께 무사히 과정을 마칠 수 있었습니다.
특히 강사님께서 "나만의 Pandas Cheat Sheet을 만들어 보라"는 제안을 하셨습니다.
구글링을 통해 찾아볼 수 있는 예쁘게 정리된 자료들처럼 시작하기는 어렵겠지만 우선은 내 티스토리에 기록해두려고 합니다.
1-1. 지역별 고객 수
선언할 이름 = 기존 데이터 프레임 이름.groupby(by='지역 열 이름', as_index=False)[['고객 열 이름]].count()
1-2. 이름 변경: 키-값 딕셔너리로 접근하기
데이터 프레임 이름.rename(columns={'기존 열 이름1':'변경 열 이름1', '기존 열 이름2':'변경 열 이름2' }, inplace=True)
1-3. Top 5 생성: 고객 수는 많을수록 랭킹이 올라가니깐 내림차순
선언할 이름 = 데이터 프레임 이름.sort_values(by='해당 열 이름', ascending=False).head('상위 몇 번까지')
# 지역별 고객 수
tmp = cst.groupby(by='Addr1', as_index=False)['CustomerID'].count()
# 이름 변경
tmp.rename(columns={'Addr1': '지역', 'CustomerID': '고객수'}, inplace=True)
# 지역별 고객 수 TOP 5
tmp_5 = tmp.sort_values(by='고객수', ascending=False).head(5)
2. if 문 생성하지 않고 등급 생성
bin = [-무한대~무한대까지 구간 값 ,로 구분]
label = [구간마다 이름 정해서 ,로 구분 후 작성]
데이터 프레임 이름['구간 나타내는 열 이름'] = pd.cut(데이터 프레임 이름['구분 할 기존 열 이름'], bins=bin, labels=laber)
# 열의 값 기준에 따라 등급을 갖는 'Level' 추가
bin = [-np.inf, 30000, 100000, 300000, 600000, np.inf]
label = ['Family', 'Bronze', 'Silver', 'Gold', 'Platinum']
cst['Level'] = pd.cut(cst['Amt'], bins=bin, labels=label)
3. 기간 안에 데이터 값 구하기
선언할 이름 = 데이터 프레임 이름[데이터 프레임 이름['해당 열 이름'].between('시작 날짜', '종료 날짜')]
temp = sales[sales['OrderDate'].between('2016-10-01', '2016-12-31')]
4. 날짜 인식 후, 요일 값 주기
기존 데이터 프레임['해당 열 이름'] = pd.to_datetime(기존 데이터 프레임['해당 열 이름'])
기존 데이터 프레임['생성할 열 이름'] = 기존 데이터 프레임['해당 열 이름'].dt.day_name()
# 날짜 인식
day_sales['OrderDate'] = pd.to_datetime(day_sales['OrderDate'])
# dt.day_name() 함수
day_sales['Weekday'] = day_sales['OrderDate'].dt.day_name()
5-1. 2개 자료 가로로 합치기(1가지 열을 기준으로)
선언할 이름 = pd.merge(데이터 프레임 이름1, 데이터 프레임 이름2, on='합칠 열 이름', how='방법 선택')
# merge 함수 활용
top_amt = pd.merge(sales, products, on='ProductID', how='outer')
5-2. 2개 자료 가로로 합치기(2개 이상의 열이 중복일 때)
선언할 이름 = pd.merge(데이터 프레임 이름1, 데이터 프레임 이름2, how='방법 선택')
# merge 함수, how = 'left'로 왼쪽 데이터프레임의 행을 유지
cust_churn0 = pd.merge(cust_churn0, cust03, how='left')
6. 연령대 구할 때 //
데이터 프레임 이름['생성할 열 이름'] = 데이터 프레임 이름['해당 열 이름'] // 10 * 10
# 연령대 = 나이 / 10 * 10
customers['AgeGroup'] = customers['Age'] // 10 * 10
7. 첫 번째 행 남기고 중복된 행 삭제
데이터 프레임 이름.drop_duplicates(subset='해당 열 이름', keep='first', inplace=True)
# 'CustomerID'를 기준으로 중복된 행 중 첫 번째 행만 남기고 나머지 삭제
cust03.drop_duplicates(subset='CustomerID', keep='first', inplace=True)
8-1. 열 추가하고 모든 값에 0 할당
데이터 프레임 이름['생성할 열 이름'] = 0
cust03['churn'] = 0
8-2. 열 추가하고 결측치에 0 할당
데이터 프레임 이름['해당 열 이름'].fillna(0, inplace=True)
cust_churn0['churn'].fillna(0, inplace=True)
저의 Pandas Cheat Sheet이 여러분에게 큰 도움이 되길 바라며 오늘의 데이터 분석 공부를 마칩니다🔥
'KT 에이블스쿨 5기 > 프로젝트' 카테고리의 다른 글
[D+31] 프로젝트 | 2차 미니 프로젝트 3일차(final) (0) | 2024.03.22 |
---|---|
[D+30] 프로젝트 | 2차 미니 프로젝트 2일차 (0) | 2024.03.21 |
[D+29] 프로젝트 | 2차 미니 프로젝트 1일차 (0) | 2024.03.20 |
[D+18] 프로젝트 | 1차 미니 프로젝트 후기 (0) | 2024.03.09 |
[D+17] 프로젝트 | .isna 함수 (0) | 2024.03.08 |