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
- 데이터 프레임
- 네트워크
- 백준
- 파이썬
- 티스토리챌린지
- 판다스
- 오블완
- 알고리즘
- kt aivle school
- 케이티 에이블스쿨 6기 ai
- 백준 사탕 게임
- 프로그래머스
- 에이블 기자단
- kt 에이블스쿨 6기 미니 프로젝트
- KT 에이블스쿨
- 구현
- 케이티 에이블스쿨 6기
- kt 에이블스쿨 6기
- 케이티 에이블스쿨 기자단
- 앙상블
- KT AIVLE
- 케이티 에이블스쿨 6기 java
- 머신러닝
- 케이티 에이블스쿨
- SQLD
- 케이티 에이블스쿨 6기 후기
- 케이티 에이블스쿨 6기 spring
- kt 에이블스쿨 6기 빅프로젝트
- kt 에이블스쿨 기자단
- kt 에이블스쿨 6기 ai
Archives
- Today
- Total
미식가의 개발 일기
[KT 에이블스쿨(6기, AI)] 2주차, 데이터 처리(데이터 프레임 조작, 단변량 분석) 본문
데이터 프레임 조작
데이터 프레임 변경
추가
`df['추가할 열'] = 추가할 값`
변경
`df['변경할 열'] = 변경할 값`
- `.loc`
# 나이가 10 이하인 나이 컬럼을 모두 0으로 변경
df.loc[df['Age'] < 10, 'Age'] = 0
- `np.where(조건, True일 때 출력할 값, False일 때 출력할 값)`
# 나이가 10 이하인 나이 컬럼을 모두 0으로 변경
df['Age'] = np.where(df['Age'] < 10, 0, df['Age'])
- `map`: 주로 범주형 값을 변경할 때 사용
# Gen 컬럼의 값이 Male이면 1, Female이면 0으로 변경
df['Gen'] = df['Gen'].map({'Male': 1, 'Female': 0})
- `cut`: 숫자형 변수 → 범주형 변수
- 균등 분할: `age_group = pd.cut(df['Age'], 2, labels = ['baby', 'adult'])`
- 원하는 범주로 분할: `age_group = pd.cut(df['Age'], bins =[0, 20, 100] , labels = [ 'baby', 'adult'])`
삭제
`df.drop('열 이름', axis=1, inplace=True)`
`df.drop(['열 이름1', '열 이름2', '열 이름3' ], axis=1, inplace=True)`
- axis=0: 행 삭제(기본 값)
- axis=1: 열 삭제
컬럼 이름 변경
- 전체 변경: `df.columns = [(변경할 컬럼 이름 나열)]`
- 일부 변경: `data.rename(columns={'c1' : 'change_c1', 'c2' : 'change_c2'}, inplace=True)`-> inplace=True를 해줘야 변경 사항이 실제 반영된다.
데이터 프레임 결합
`concat`: 구조를 기준으로 병합
pd.concat([df1, df2], axis = 0, join = 'inner')
- `axis`
- `axis = 0`: 세로로 합치기
- `axis = 1`: 가로로 합치기
- `join`
- `inner`: 교집합
- `outer`: 합집합(기본값, 없는 경우 `NaN`으로 채워짐)
`merge`: 값을 기준으로 병합
pd.merge(df1, df2, how = 'inner', on = 'A')
- `how`: 결합하는 방식
- `inner`: 교집합(기본값)
- `outer`: 합집합
- `left`: 왼쪽 기준 결합, `right`: 오른쪽 기준 결합
- `on`: 두 데이터 프레임을 결합할 때 기준이 되는 컬럼
시계열 데이터 처리
날짜 타입으로 변환
pd.to_datetime(df['Date'])
# 입력받은 날짜 형식을 지정해 줄 때
pd.to_datetime(df['Date'], format = '%d-%m-%Y')
날짜 요소 추출
- 연도: `date.dt.year`
- 월: `date.dt.month`
- 일 : `date.dt.day`
- 연도, 월, 일: `date.dt.date`
- 요일: `date.dt.weekday`
- 요일 이름: ` date.dt.day_name()`
시간 차이 계산
- `shift`: 이동
# 이전 행의 값
df['new_s'] = df['v'].shift()
# 전전 행의 값
df['new_s2'] = df['v'].shift(2)
- `rolling`: 구간 계산
# 지정된 구간 미만까지는 NaN, 그 이후 지정된 구간만큼 연산(sum, mean, min, max)
df['new_r'] = df['v'].rolling(5).mean()
# 지정된 구간 미만일 때도 min_periods 값만큼 데이터가 있으면 연산을 수행
df['new_r'] = df['v'].rolling(5, min_periods = 1).mean()
- `diff`: 차분
# 이전 값과의 차이 계산
df['new_d'] = df['value'].diff()
# 다음 값과의 차이 계산
df['new_d2'] = df['value'].diff(-1)
단변량 분석
기초 통계량 | 시각화 | |
숫자형(양적, 정량적 데이터) | min, max, mean, std, 사분위수 | Histogram, Density plot, Box plot |
범주형(질적, 정성적 데이터) | 범주 별 빈도수, 비율 | Bar plot, Pie chart |
※ 시각화에 대해서는 따로 정리해 놓은 글이 있어서 첨부하겠습니다!
데이터 시각화(matplotlib, seaborn)
캐글 -> Datasets -> Amazon Stock csv 파일 다운로드 후 실습 진행 데이터 불러오기 import matplotlib.pyplot as pltimport seaborn as snsimport pandas as pddata = pd.read_csv('datas/amazon_stock.csv')display(data.head())display(len(data)
irreplaceablehotgirl.tistory.com
반응형
'KT 에이블스쿨(6기, AI)' 카테고리의 다른 글
[KT 에이블스쿨(6기, AI)] 4주차, 1차 미니 프로젝트 (0) | 2024.09.25 |
---|---|
[KT 에이블스쿨(6기, AI)] 3주차, 웹 크롤링 (0) | 2024.09.24 |
[KT 에이블스쿨(6기, AI)] 2주차, 데이터 분석(이변량 분석) (0) | 2024.09.23 |
[KT 에이블스쿨(6기, AI)] 1주차, 파이썬 기초와 Numpy & Pandas (4) | 2024.09.22 |
[KT 에이블스쿨(6기, AI)] 최종 합격 후기 (10) | 2024.09.21 |