본문 바로가기

Pandas/응용

(64)
판다스 - map map 순차적 자료형에 대해 함수를 적용하는, 내장 함수 map(함수, 순차적 자료) map(func, iterables) map의 첫번째 인자인 함수는 파이썬의 내장함수도 가능하며 사용자 정의 함수나 딕셔너리(사전) 등도 가능하다. map(str, 순차적 자료형) 순차적 자료형을 돌며 자료형을 문자열로 바꿔냈다. 이를 응용해서 리스트로 가져올 수도 있다. 데이터 불러오기 시리즈.map(내장함수 or 사용자 정의함수 or 딕셔너리 등) map은 Pandas Series(column)에 사용할 수 있는 함수로 Series의 각 원소에 연산을 적용 각 원소를 입력으로 받아, 단일 값을 반환 시리즈.map(내장함수) pclass 컬럼의 자료형을 문자열로 바꾸기 지금 pclass의 자료형은 int다. 이를 시리..
정규표현식 - 원하는 문자열이 있는 행만 남기기 : re.compile, re.search 데이터 불러오기 위 데이터프레임에서 한글, 영문(대/소문자), -, 공백 만 있는 행만 살려보자 (1, 2, 3번 행) re.compile 한글, 영문, 공백과 - 이 아닌 문자열을 찾는 표현식이다. 메타캐릭터에 대한 내용은 아래 포스팅 참조 https://steadiness-193.tistory.com/203 정규표현식 - re.sub : 원하는 문자만 남기고 제거하기 re.sub('찾을 패턴', '찾은 패턴을 변경할 내용', '원본') 주어진 문자열(찾을 패턴)에서 일치하는 모든 패턴을 (변경할 내용으로)바꾼다. 두번째 인자는 특정 문자열이거나 함수가 될 수도 있다. 메� steadiness-193.tistory.com re.search 첫번째 행의 문자열은 Abc!&* 이다. search는 여기서 ..
정규표현식 - re.sub : 원하는 문자만 남기고 제거하기 re.sub('찾을 패턴', '찾은 패턴을 변경할 내용', '원본') 주어진 문자열(찾을 패턴)에서 일치하는 모든 패턴을 (변경할 내용으로)바꾼다. 두번째 인자는 특정 문자열이거나 함수가 될 수도 있다. 메타캐릭터 [] []안에 들어있는 캐릭터 자체를 나타내며 [abc] : a 또는 b 또는 c - : 해당 문자 사이 범위에 속하는 문자 중 하나 [a-d] : a 또는 b 또는 c 또는 d ^ : 맨 앞에 사용될 경우에만 해당 문자 패턴이 아닌 것과 매칭 [^a-d] : a 그리고 b 그리고 c 그리고 d 가 아닌 문자열 위 두가지 원리를 가지고 예제를 풀어보자 위 전화번호에서 010-1234-1321만 뽑아내려고 한다. 이때 re.sub를 이용하면 된다. % 또는 $ 또는 ^ 또는 * 또는 !을 없애주..
판다스 - groupby : set_index와 사용자 정의 함수로 그룹핑 판다스 - groupby : 함수로 그룹핑하기 사전이나 시리즈로 그룹핑하는 것보다 함수로 그룹핑하는 것이 보다 더 일반적이다. 그룹 색인으로 넘긴 함수는 색인값 하나마다 한 번씩 호출되며 반환값은 그 그룹의 이름으로 사용된다. 데�� steadiness-193.tistory.com 판다스 - groupby : 인덱스로 그룹화하기 (멀티인덱스, level) https://steadiness-193.tistory.com/76 판다스 - groupby : 색인 단계로 그룹핑하기(계층적 색인) 계층적 색인에서는 축 색인의 단계 중 하나를 이용해 집계할 수 있다. 데이터 만들기 컬럼이 멀티인덱스이므� steadiness-193.tistory.com 판다스 - groupby : 인덱스를 함수로 그룹핑하기 https..
판다스 - groupby : 집계함수를 활용한 뒤 데이터프레임 분석 데이터 불러오기 25행 6열의 df가 있다. 광고그룹과 키워드는 위와 같다. 이를 우선 광고그룹으로 그룹핑해보자 목표 : 광고그룹별 클릭률 구하기 try1 : 함수정의 후 apply 데이터프레임의 원본을 반환한다. 이는 컬럼간 나누기를 한 것이기 때문에 키워드별 클릭률과 동일한 값이 나왔다. try1 실패 try2 : lambda와 apply 이용 이 또한 try1과 같은 결과로 원하는 값이 아니다. try2 실패 try3 : lambda와 집계함수 이용 그룹별 클릭수의 합과 노출수의 합으로 나누면 원하는 데이터를 얻을 수 있다. 단, 그룹과 값만 있는 시리즈가 나와서 활용도는 다소 떨어질 수 있다. try4 : 집계함수를 포함한 함수 정의 그룹별 그룹_클릭률 컬럼이 새로 추가된다. 데이터프레임의 원본 ..
판다스 - groupby : 그룹 객체별 상위 N개의 행만 추출 타이타닉 데이터프레임을 pclass와 성별 컬럼으로 그룹화 그룹별 데이터 개수 여기서 그룹별 fare(요금) 컬럼 기준으로 상위 50개씩만 추출하려면? 1. lambda 함수 이용 위 lambda 함수를 apply와 함께 이용한다. pclass 3개 성별 2개 각 50개의 행 6 x 50 = 300개의 행 잘 출력되었다. 2. 함수 정의 위 lambda 함수와 결과로는 큰 차이가 없다.
판다스 - groupby : 그룹 객체에서 컬럼간 연산 타이타닉 데이터프레임을 pclass와 성별 컬럼으로 그룹화 1. 하나의 컬럼 그룹별 나이를, 그룹별 나이의 합으로 나누고 싶다면? 방법1. apply와 lambda 함수 이용 멀티인덱스의 시리즈로 나왔다. 보기엔 편할 수 있으나 굳이 인덱스까지 필요없다면 방법2. 컬럼명.apply 또는 컬럼명.transform 이용 좌,우 두 개의 결과는 동일하다. apply와 transform에 대한 내용은 아래 포스팅 참조 https://steadiness-193.tistory.com/42 판다스 - groupby : apply와 transform (차이) [개별 원소] apply transform [공통] 컬럼명을 메서드 밖에서 명시하면 결과는 같게 나온다. [차이1] 컬럼명을 메서드 안에서 명시하면 그룹별 시리즈..
판다스 - groupby : 컬럼 선택 (SeriesGroupBy, DataFrameGroupBy) GroupBy 객체를 컬럼 이름으로 색인 → SeriesGroupBy 컬럼 이름이 담긴 배열로 색인 → DataFrameGroupBy 위 두개는 같지만서도 조금 다르다. 데이터를 불러와 살펴보자 위 데이터프레임을 key1 컬럼으로 그룹핑하자 우선 그룹핑한 객체는 당연하게도 DataFrameGroupBy 이다. 컬럼 이름으로 색인 ['컬럼명'] SeriesGroupBy가 나온다. 컬럼 이름이 담긴 배열로 색인 [['컬럼명']] DataFrameGroupBy가 나온다. 사실 중요한 것은 위 둘의 차이보단 '이를 어떻게 활용하느냐'이다. 결과가 나올 수 있게 평균 집계함수를 써서 결과물을 리턴하자 SeriesGroupBy data1의 컬럼명은 나오지 않고 결과만 나와있다. DataFrameGroupBy dat..