OO하는 데이터분석가

[파이썬]으로 데이터 분석하기, 판다스(pandas) 기초2

흔흔 2020. 12. 21. 00:40

지난 글(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

 

이로써 원하는 행렬을 선택해 불러오는 방법까지 알아보았다.

반응형