Pandas (165) 썸네일형 리스트형 판다스 - groupby : apply 가장 일반적인 Groupby 메서드의 목적은 apply이다. 아니 agg를 쓰면 되지 굳이? agg는 이전 포스팅에서 설명한 바와 같이 사용자 정의 함수를 이용할 수 있지만, 집계함수에 한해 가능하다. 즉 판다스 객체의 개별 원소를 특정 함수에 1:1 매핑하려면 apply를 이용해야 하는 것이다. 간단한 예시를 통해 살펴보자 마이너스라는 사용자 정의 함수를 만들어보자 바로 apply를 적용해보면 너무 당연하게도, 에러가 발생한다. 에러 메세지에 의하면 문자열과 숫자는 연산이 불가능하다는 것인데 이처럼 apply는 agg처럼 사용자 정의함수별로 연산가능한 컬럼만 선정해서 해주지 않는다. 이럴땐 컬럼명을 명시한 뒤 작업을 요청하면 된다. val 컬럼은 숫자가 있으므로 연산이 가능해졌다. 그렇다면 apply .. 판다스 - groupby : filter (len, size, count) 데이터 불러오기 class 별로 그룹화 했다. [목표 : 클래스별로 일정 수 이상의 그룹만 보고 싶다] 1. len 그룹별로 길이를 구했다. 이는 누락값의 유무와 관계 없으므로 다 동일한 결과가 출력된다. 200건 이상의 데이터가 있는지에 대한 불린을 보자 First 클래스와 Third 클래스는 모든 열이 다 200건 이상 있으므로 다 True가 나왔다. 이때 Second 그룹만 없이 보고 싶을때 이용하는 것이 바로 filter 메서드 이다. filter 총 891건의 데이터 중 184건의 데이터가 제외된 (Second 그룹은 제외된) 707행의 나왔다. *** filter를 하니 기존 그룹용 컬럼인 class는 사라졌다. (grouped라는 변수명 사용 때문) 2. size size는 문제가 좀 많아 .. 판다스 - groupby : aggregate, size 데이터프레임 DataFrameGroupBy SeriesGroupBy .size() 시리즈 .size 데이터 불러오기 grp 컬럼으로 그룹핑 → grouped first를 이용해 그룹화된 데이터프레임을 살펴본다. 타입은 DataFrameGroupBy이기에 .size()를 이용해야 한다. 각 그룹별 행의 개수를 보자 grouped의 하나의 컬럼별로, 행의 개수를 세기 위해선 size() 일까 size일까 위에 나온대로 하나의 컬럼을 선택하면 유형은 SeriesGroupBy로 나타난다. 이를 시리즈라고 생각해, .size를 이용한다면 에러는 나지 않으나 원하는 대로 시리즈가 보이지 않는다. 이에 .size()를 이용하면 보고 싶은 결과가 나타난다. 따라서 SeriesGroupBy도 .size()를 이용해야함을.. 판다스 - groupby : aggregate (agg 메서드 안의 기준 컬럼, count 이용) 데이터 불러오기 C 컬럼의 초성별로 그룹화 했다. count 각 컬럼별 누락값을 제외한 값을 셌다. 1보다 큰 값을 가지는 불린 데이터프레임도 나타냈다. 여기서 agg() 메서드를 이용해보자 위의 결과와 동일한 불린 데이터프레임이 나왔다. 그렇다면 컬럼별로 agg 메서드를 이용해보자 위 불린 데이터프레임을 시리즈로 쪼개어 동일한 결과가 나왔다. 그런데, agg 메서드 안에 컬럼이 들어가면 어떻게 될까? 정말 이상하게도 B컬럼도 모두 True를 나타내고 있다. 이는 agg 메서드 안의 컬럼이 기준이 되기 때문이다. A 컬럼은 모두 True 였는데, agg 메서드 안에서 적용되니 모두 False가 나왔다. 이는 이어질 filter 메서드에서 유용하게 사용되니 잘 기억해두어야 한다. 판다스 - groupby : aggregate 데이터 불러오기 tips의 데이터를 size 컬럼 별로 그룹화했다. (size는 1, 2, 3, 4, 5, 6 의 값으로 구분된다.) 그룹화가 어떻게 되어있는지 확인을 위해 first를 사용한다. 이번에 설명할 aggregate는 groupby에서 유용하게 쓰인다. [agg() 메서드] 1. 집계 연산을 처리하는 사용자 정의 함수를 그룹 객체에 적용 2. 연산 가능한 컬럼만 알아서 집계해 나타내 줌 (transform 메서드와 같은 기능) 3. 집계함수, list(집계함수), {컬럼:함수} 번호별로 살펴보자 1. 집계 연산을 처리하는 사용자 정의 함수 사이즈별로 total_bill 컬럼의 최대값에서 최소값을 뺀 결과이다. 2. 연산 가능한 컬럼만 알아서 집계해 나타내 줌 위의 사용자 정의 함수를 전체 g.. 판다스 - groupby 데이터 불러오기 C컬럼의 초성을 기준으로 그룹화하고자 한다. 이때 이용하는 메서드가 바로 groupby 이다. 다른 것과 달리 그냥 grouped를 보고자하면 나오지 않는다. 집계 메서드를 사용해야 그룹화된 데이터프레임을 볼 수 있다. groupby - 집계 메서드 count 누락값을 제외한 데이터 수 size 누락값을 포함한 데이터 수 데이터프레임 -> .size() / 시리즈 -> .size 위 사항을 잘 구분해서 사용해야 한다. mean 평균값 min 최솟값 max 최대값 sum 전체 합 describe 데이터 수, 평균, 표준편차, 최솟값, 최대값, 백분위수 quantile(q=0.25) 백분위수 25% quantile(q=0.50) 백분위수 50% quantile(q=0.75) 백분위수 75% .. 판다스 - apply, applymap, pipe(응용3) INPUT USE RETURN 시리즈 원소 apply 단일 값, 시리즈 시리즈 객체 (데이터프레임의 행 or 열) 단일 값, 시리즈, 데이터프레임(통합) 데이터프레임의 원소 applymap (동일한 형태의)데이터프레임 데이터프레임 객체 pipe 단일 값, 시리즈, 데이터프레임 데이터 불러오기 apply 적용할 함수 생성하기 시리즈별로 null 유무를 판단하고 null 개수의 합을 구하는 함수 기존 포스팅에선 열별로 누락값의 합을 구했다. 이번엔 행별로 구해보자 axis=1을 하면 행별로 누락값의 개수를 구하게 된다. 인덱스는 기존의 행이며 나오는 값은 누락값의 개수이다. 시리즈가 나오게 된다. 위 시리즈를 변수에 넣고 새로운 컬럼으로 추가해보자 맨 오른쪽 컬럼에 행별 누락값의 개수를 넣은 열이 추가됐다... 판다스 - apply, applymap, pipe(응용2) INPUT USE RETURN 시리즈 원소 apply 단일 값, 시리즈 시리즈 객체 (데이터프레임의 행 or 열) 단일 값, 시리즈, 데이터프레임(통합) 데이터프레임의 원소 applymap (동일한 형태의)데이터프레임 데이터프레임 객체 pipe 단일 값, 시리즈, 데이터프레임 데이터 불러오기 데이터 살펴보기 총 891행, 15열 컬럼의 자료형도 확인할 수 있다. 이전 응용1 글에선 apply와 pipe의 결과가 동일한 함수를 보았다. 이번엔 조금 다른 함수를 보자. 이전 함수를 이용하기에 이전 함수에 대한 코드와 결과를 첨부한다. 함수 생성 및 결과 확인 size 속성은 시리즈의 행 개수를 셀 때 이용한다. 데이터프레임에 이용하면 모든 데이터의 수를 센다. (행 x 열) 이제 하나씩 뜯어보자 apply는.. 이전 1 ··· 14 15 16 17 18 19 20 21 다음