확장성이 높은 파이썬은 통계데이터 분석 및 통계처리에도 유용하게 사용할 수 있다. 이 중 가장 널리 이용되는 패키지가 바로 판다스(pandas)이다. 데이터 분석을 진행할때 SAS, SQL이나 R을 많이 사용하고 이를 정리하고 리포팅할때는 엑셀을 많이 사용한다. 엑셀의 함수, 매크로, 시각화 등은 사용하기 쉽고 장점이 명확하지만 조금 아쉬운 부분 또한 존재한다.
엑셀 단점
1. 대용량 데이터 분석이 어렵다.
100mb가 넘어가면 파일을 열고 편집하는데 버벅이기 시작한다. 100mb까지 쓸일이 없다고 생각할 수 있을텐데, 시트 몇장에 데이터를 스캔하여 적용하는 함수들을 몇개 걸다보면 100mb는 금방이다. 만약 매크로가 포함되어있다면...(긴말안함)
2. 엑셀함수
양날의 검이다. 엑셀함수는 장점이지만 어느순간 사용성에 고비가 오게된다. 함수를 쓰다보면 어려워지고, 여러함수를 함께 쓰게되면 잘작동하지않는 경우가 생기게 된다.
이러한 이유들로 엑셀을 최종 보고서를 만들고 이를 시각화하여 전달하고 공유하는데 최적화면 프로그램이 아닐까 싶다.
그렇다면 판다스를 직접 사용해보도록하자. 해당 게시물에서는 판다스로 파일 읽기, 데이터 특성 파악하기 및 기본 연산을 알아볼 것이다.
판다스로 csv 읽기
import pandas as pd file_url = "https://파일_다운로드_주소" data = pd.read_csv(file_url, index_col= "회차")
pandas를 불러오고 앞으로 pd로 부르기로 한다.
파일을 다운로드 받을 수있는 URL을 지정하고 pd.read_csv를 이용해 csv파일을 불러온다. index컬럼(가장 좌측에 오는 컬럼)은 회차라는 컬럼명을 지정하였다.
불러온 파일이 아래와 같은 형식이라고 가정해보자
회차 | 이름 | 구매일 | 무게 | 구매처 |
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 | 과일가게 |
데이터 파일 살펴보기
data.index
결과
Int64Index([1, 2, 3, 4, 5, 6, 7], dtype='int64', name='회차')
>인덱스에 대한 정보를 볼 수 있다.
data.columns
결과
Index(['이름', '구매일', '무게', '구매처'], dtype='object')
>데이터 컬럼들의 종류를 알 수 있다.
data.shape
결과
(7,4)
>데이터의 행갯수, 열갯수를 알 수 있다.
data.head()
결과
회차 | 이름 | 구매일 | 무게 | 구매처 |
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 | 과일가게 |
>상위 5개 행을 볼 수 있다.
괄호에 넣는 숫자만큼 행의 갯수가 나타난다. 데이터를 눈으로 확인하고 싶을때 사용한다.
data.tail(3)
결과
회차 | 이름 | 구매일 | 무게 | 구매처 |
5 | 토마토 | 2021-01-05 | NaN | 과일가게 |
6 | 아보카도 | 2021-01-06 | 0.7 | 백화점 |
7 | 포도 | 2021-01-07 | 0.1 | 과일가게 |
>하위 행들을 볼 수 있다. 괄호안에 숫자를 안넣는것이 기본이고 5개 행이 도출된다. 숫자 3을 넣어 3개의 행만이 나오게 된다. head와 동일
여기서 궁금증이 생길 것이다. 어떤 코드는 소괄호를 쓰고 어떤건 안쓴다. 차이가 뭘까 ?
이는 매소드라는 개념이랑 비슷한데 소괄호가 없는것이 특이한 경우로, 모종의 사정으로 판다스에서 괄호를 안넣었다고 한다.(강의에서 선생님이 그랬습니다. 나는 몰라요) 인덱스(index),쉐이프(shape),컬럼스(columns)만 괄호를 안넣는걸로 생각하면 될듯 하다.
판다스 기본 연산
평균
data["무게"].mean()
결과
0.36
>각 행의 무게들의 평균을 구한다. 이때 NaN은 제외한다.
최솟값
data["무게"].min()
결과
0.1
>무게 중 최솟값을 찾아낸다.
최댓값
data["무게"].max()
결과
0.7
>무게 중 최댓값을 찾아낸다.
기본통계값
data["무게"].describe()
결과
count 5.000000
mean 0.360000
std 0.481663
min 0.100000
25% 0.200000
50% 0.300000
75% 0.500000
max 0.700000
Name: 무게, dtype: float64
>각 값들의 개수, 평균, 표준편차, 최솟값, 사분위수, 최댓값을 알려준다.
이와같이 숫자형 컬럼에 대한 여러 통계값들을 구할 수 있다. 다음 글에서는 이어서 값변경(replace), 행밀고당기기(shift), 컬럼속성변경, 날짜 칼럼 조작과 행렬단위의 기본연산에 대해 알아보겠다.
'OO하는 데이터분석가' 카테고리의 다른 글
[파이썬]으로 데이터 분석하기, 판다스(pandas) 기초2 (2) | 2020.12.21 |
---|---|
[google cloud platform]구글 클라우드 플랫폼 api 부여받기 (0) | 2020.12.16 |
[파이썬]문자형 변수 인덱싱(indexing)과 슬라이싱(slicing) (0) | 2020.11.22 |
[DSschool]파이썬에서 오류메세지 '잘' 읽는 법 (0) | 2020.11.15 |
[MyData]마이데이터란 무엇일까? (0) | 2020.11.10 |