[ 데이터프래임, DataFrame ]
우리는 간단한 데이터를 보기 좋게 확인할 때 엑셀(Excel)을 사용한다.
그리고 엑셀에 데이터를 시트(Sheet)에 넣어서 집계를 한다.
하지만 엑셀은 행x열에 한계가 있다.
1,048,576행x16,384열이 전부 차면 더 이상 값을 넣을 수 없다.
그래서 데이터 사이언티스트는 데이터프래임을 사용하기 시작했다.
왜냐? 데이터프래임에는 한계가 없기 때문이다.
데이터 프래임의 한계라면 메모리이다.
결국 메모리가 버텨주는한 데이터는 계속 넣을 수 있다.
그리고 이 데이터프래임을 정말 편하게 사용하게 해주는 도구가 있다.
그것이 바로 판다스(Pandas)다.
파이썬에서는 엑셀이 판다스가 되고, 시트가 데이터프래임이 된다.
[ 판다스의 기능 찾기 ]
판다스(Pandas)에서 제공하는 도구들은 데이터를 처리할 때 강력하다.
판다스에 어떤 기능이 있을까는 고민하지 않아도 된다.
기능에 대해서 1부터 10까지 하나씩 배워도 다 까먹는다.
그렇기 때문에 내가 데이터를 어떻게 처리할까만을 생각하면 된다.
최고의 방법이고 단순한 방법으로
SQL로 데이터를 처리할 수 있을까를 생각하면 된다.
이 말은 검색할 때 힘을 발휘한다.
예를 들어 데이터프래임에서 SQL의 where not in 기능을 찾아보겠다.
그러면 아래와 같이 간단하게 검색이 된다.
검색 결과는 코드로 되어 있어서 아주 직관적이다.
데이터프래임과 SQL을 연관 지어서 검색하면 빠르게 찾을 수 있다.
[ 궁극의 기술 apply와 lambda ]
apply를 사용하게 되면 컬럼끼리 값을 합거나 뺄 수 있다.
또한 조건별로 데이터를 처리할 수 도 있다.
For문을 돌려서 처리하면 되지 라고 생각할 수 있다.
1000만 건을 for문으로 처리한다고 생각해보자.
이번 생에는 끝나지 않을 수 도 있다.
하지만 apply는 dataframe을 빠르게 처리할 수 있는 알고리즘이 적용되었다.
또한 메모리에 올려서 속도를 Max로 올려준다.
평생 끝나지 않을 거 같은 처리가 apply로는 몇 분 만에 해결된다.
이런 궁극의 기술도 몇 가지 예시만 있으면 금세 사용 가능하다.
먼저 테스트 데이터프래임을 만들어 보자
import pandas as pd
import numpy as np
animal = pd.DataFrame(np.array([['사자', "1", "10", '어흥','010-1234-1234'],
['사자', "2", "20", '야옹','010-1234-4321'],
['늑대', "1", "30", '컹컹','010-4331-1234'],
['하마', "2", "40", '므허','010-1234-3567']]),
columns=['종류', '반', '번호', '별명', "연락처"])
animal.head()
아래 두 가지 형태만 알아도 데이터를 만들어 가는데 큰 도움이 될 것이다.
#컬럼끼리 값 합치기
lambda x => x가 animal 데이터프래임을 대표한다.
x['반'] + '-' + x['번호'] => animal 데이터프래임의 반 컴럼과 번호 컬럼의 문자열을 "-"와 합친다.
animal['반-번호'] => 새로운 컬럼명("반-번호")에 문자열을 합친 걸 넣는다.
axis=1 => 1은 "컬럼끼리 계산 하겠다" 라고 이해하면 된다. 대부분 이걸 쓰게 될 것이다.
animal['반-번호'] = animal.apply(lambda x: x['반'] + '-' + x['번호'], axis=1)
animal.head()
#조건별로 컬럼들의 값 합치기
'자퇴' if x['별명'] == '어흥' => animal 데이터프래임의 별명 컴럼이 "어흥"이면 자퇴로 적용한다.
else x['반'] + '-' + x['번호'] => "어흥" 외의 값은 animal 데이터프래임의 반 컴럼과 번호 컬럼의 문자열을 "-"와 합친다.
if가 있으면 반드시 else가 있어야 한다.
주의해서 적어 넣는다.
animal['반-번호'] = animal.apply(lambda x: '자퇴' if x['별명'] == '어흥'
else x['반'] + '-' + x['번호'], axis=1)
animal.head()
'동굴 속 정보' 카테고리의 다른 글
인터뷰에서 중요한 알고리즘 질문 1 (0) | 2020.04.27 |
---|---|
최고의 여행용 쌍안경 부쉬넬 레전드 울트라 HD (0) | 2020.04.25 |
python groupby로 그룹끼리 한줄 정리하기 (1) | 2020.04.20 |
동백꽃과 수선화 그리고 남쪽 마을 (0) | 2020.04.19 |
임차인이 월세를 내지 않는다. (0) | 2020.04.18 |