지난 글(2020/12/16 - [OO하는 데이터분석가] - [파이썬]으로 데이터 분석하기, 판다스(pandas) 기초)에서 판다스의 왕기본에 대해 알아보았다. 데이터의 최소, 최대, 평균 등이었다. 오늘은 같은 데이터를 가지고 데이터 자체를 수정하는 방법들을 알아보려한다. 값변경(replace), 행밀고당기기(shift), 컬럼속성변경, 날짜 칼럼 조작과 행렬단위의 기본연산이 될 것이다.
예제 파일은 아래와 같다.
회차 | 이름 | 구매일 | 무게 | 구매처 |
1 | 복숭아 | 2021-01-01 | 0.3 | 백화점 |
2 | 딸기 | 2021-01-02 | 0.2 | 과일가게 |
3 | 아보카도 | 2021-01-03 | NaN | 백화점 |
4 | 딸기 | 2021-01-04 | 0.5 | 과일가게 |
5 | 토마토 | 2021-01-05 | NaN | 과일가게 |
6 | 아보카도 | 2021-01-06 | 0.7 | 백화점 |
7 | 포도 | 2021-01-07 | 0.1 | 과일가게 |
데이터 값 변경하기: replace
판매처 컬럼의 '백화점'을 '슈퍼마켓'으로 바꾸려면 아래와 같이 replace를 사용하면 된다.
data["판매처"] = data["판매처"].replace("백화점","슈퍼마켓")
data
판매처의 백화점을 슈퍼마켓으로 바꾸어 다시 판매처로 지정한다고 보면 된다.
결과
회차 | 이름 | 구매일 | 무게 | 구매처 |
1 | 복숭아 | 2021-01-01 | 0.3 | 슈퍼마켓 |
2 | 딸기 | 2021-01-02 | 0.2 | 과일가게 |
3 | 아보카도 | 2021-01-03 | NaN | 슈퍼마켓 |
4 | 딸기 | 2021-01-04 | 0.5 | 과일가게 |
5 | 토마토 | 2021-01-05 | NaN | 과일가게 |
6 | 아보카도 | 2021-01-06 | 0.7 | 슈퍼마켓 |
7 | 포도 | 2021-01-07 | 0.1 | 과일가게 |
NaN에 기본값(디폴트값) 부여하기 : fillna
무게에 있는 NaN값에 기본값으로 0.4를 넣어보겠다. fillna()를 이용하고, 소괄호 않에 결측값에 넣을값을 넣어주면 된다.
data["무게"] = data["무게"].fillna(0.4)
data
결과
회차 | 이름 | 구매일 | 무게 | 구매처 |
1 | 복숭아 | 2021-01-01 | 0.3 | 슈퍼마켓 |
2 | 딸기 | 2021-01-02 | 0.2 | 과일가게 |
3 | 아보카도 | 2021-01-03 | 0.4 | 슈퍼마켓 |
4 | 딸기 | 2021-01-04 | 0.5 | 과일가게 |
5 | 토마토 | 2021-01-05 | 0.4 | 과일가게 |
6 | 아보카도 | 2021-01-06 | 0.7 | 슈퍼마켓 |
7 | 포도 | 2021-01-07 | 0.1 | 과일가게 |
날짜에서 연도, 월, 일추출
구매일을 날짜변수로 할당하고 , 날짜에서 연도, 월, 일을 추출하는 방법이다.
판다스에서는 변수의 값이 '숫자'랑 '.'만있으면 숫자형 데이터라고생각하고, '-'이나','가있으면 문자형이라고 생각한다. 그래서 날짜 관련 값을 추출하기위해서는 to_datetime을 이용해 날짜형 변수로 바꿔줘야한다.
data["구매일"] #dtype: object라고 나옴
data["구매일"] = pd.to_datetime(data["구매일"])
data["구매일"].dt.year
결과
첫줄을 실행하면 값들과 함께 dtype : object라고 나와 날짜형이 아님을 확인할 수 있다.
두번째줄을 실행하면 "구매일"변수가 날짜형으로 변경되게 된다.
세번째 줄에서 .year을 실행하면 아래와같은 출력이 생성된다.(7개의 행에대해 각 연도인 2021이 도출되는것이다.)
회차
1 2021
2 2021
3 2021
4 2021
5 2021
6 2021
7 2021
Name: 구매일, dtype: int64
직관적이게도 월을 추출하는 함수는 month이다.
data["구매일"].dt.month
결과
회차
1 01
2 01
3 01
4 01
5 01
6 01
7 01
Name: 구매일, dtype: int64
날짜를 추출하는 함수는 day이다.
data["구매일"].dt.day
결과
회차
1 1
2 2
3 3
4 4
5 5
6 6
7 7
Name: 구매일, dtype: int64
이렇게 데이터값을 직접 변경하는법, 결측값을 처리하는법, 날짜변수로 변환하여 추출하는 방법등을 알아보았다.
추가로 해당 데이터를 행렬단위로 편집하여 불러오는 방법까지 알아보도록하겠다.
컬럼을 가져오는 가장 간단한 방법은 아래와 같다.
data["무게"]
결과
회차
1 0.3
2 0.2
3 0.4
4 0.5
5 0.4
6 0.7
7 0.1
Name: 몸무게, dtype: float64
칼럼을 두개이상 가져오고싶을때는 아래와 같이 작성한다.
앞 코드와 비교하면 대괄호의 갯수가 다르다. 이는 바깥쪽 대괄호랑 안쪽 대괄호가 기능이 다르기 때문이다. 파이썬문법과 판다스문법을 통일하고싶기때문에 이와같이 사용한다. 첫번째 줄의 실행결과와, 두번째+세번째 줄의 실행결과는 동일하다.
#컬럼 여러개 추출하기
data[["구매일","무게"]]
#columns라는 리스트 생성
columns = ["구매일", "몸무게"]
data[columns]
결과
회차 구매일 무게
1 2021-01-01 0.3
2 2021-01-02 0.2
3 2021-01-03 0.4
4 2021-01-04 0.5
5 2021-01-05 0.4
6 2021-01-06 0.7
7 2021-01-07 0.1
이로써 원하는 행렬을 선택해 불러오는 방법까지 알아보았다.
'OO하는 데이터분석가' 카테고리의 다른 글
[파이썬]pandas의 색인기능 (SQL where, 파이썬 판다스 조건문) (0) | 2021.01.17 |
---|---|
[파이썬]판다스(pandas)로 행,열,행렬 가져오기 (1) | 2021.01.02 |
[google cloud platform]구글 클라우드 플랫폼 api 부여받기 (0) | 2020.12.16 |
[파이썬]으로 데이터 분석하기, 판다스(pandas) 기초 (0) | 2020.12.16 |
[파이썬]문자형 변수 인덱싱(indexing)과 슬라이싱(slicing) (0) | 2020.11.22 |