본문 바로가기

Pandas/응용

(64)
판다스 - 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는..
판다스 - apply, applymap, pipe(응용1) INPUT USE RETURN 시리즈 원소 apply 단일 값, 시리즈 시리즈 객체 (데이터프레임의 행 or 열) 단일 값, 시리즈, 데이터프레임(통합) 데이터프레임의 원소 applymap (동일한 형태의)데이터프레임 데이터프레임 객체 pipe 단일 값, 시리즈, 데이터프레임 데이터 불러오기 데이터 살펴보기 총 891행, 15열 컬럼의 자료형도 확인할 수 있다. 함수 정의 count_missing 함수는 데이터프레임의 컬럼별 null의 개수를 구한다. 우선 결과부터 보자 잘 나온 것을 볼 수 있다. 시리즈로 리턴이 되었으니, applymap은 이용할 수 없다. 그렇다면 pipe를 이용해도 될까? pipe를 이용해도 동일한 결과가 나왔다.(?) 이제 하나하나 뜯어서 보자. apply bool_df가 구해지..
판다스 - apply, applymap, pipe(2) INPUT USE RETURN 시리즈 원소 apply 단일 값, 시리즈 시리즈 객체 (데이터프레임의 행 or 열) 단일 값, 시리즈, 데이터프레임(통합) 데이터프레임의 원소 applymap (동일한 형태의) 데이터프레임 데이터프레임 객체 pipe 단일 값, 시리즈, 데이터프레임 applymap과 pipe를 살펴보자 데이터 불러오기 데이터프레임의 개별 원소에 특정 함수를 매핑할때 applymap을 이용한다. 데이터프레임을 반환한다. * 참고 : 시리즈는 각 원소에 적용할 함수를 지정하기 위한 map 메서드를 가지고 있다. 함수 정의 applymap을 이용해 함수 적용 df의 각 원소에 숫자 10을 더한 값을 원소로 갖는 데이터프레임이 만들어진다. 여기서 apply와의 차이점이 궁금해지는데, apply는 각..
판다스 - apply, applymap, pipe(1) INPUT USE RETURN 시리즈 원소 apply 단일 값, 시리즈 시리즈 객체 (데이터프레임의 행 or 열) 단일 값, 시리즈, 데이터프레임 (통합) 데이터프레임의 원소 applymap (동일한 형태의) 데이터프레임 데이터프레임 객체 pipe 단일 값, 시리즈, 데이터프레임 판다스를 하면서 헷갈리는 메서드 중 하나가 apply라고 해도 과언이 아니다. 예제를 통해 이해해보자 데이터 불러오기 타이타닉 데이터에 ten이라는 컬럼을 추가하고 값을 10으로 모두 맞춰놓았다. 함수 생성 개별 원소에 함수 적용 (시리즈 원소에 함수 적용) : apply df['age'] 시리즈에 두개의 함수를 적용해보았다. add_10 함수를 적용하면 기존 시리즈의 값(원소)에 10씩 더한 새로운 시리즈를 반환한다. add_..
판다스 - 여러 대용량 데이터 처리하기 : glob 이 다섯개의 csv 파일을 불러와 한꺼번에 보고자 한다. glob 라이브러리, glob 메서드 이용 glob 라이브러리의 glob메서드는 특정한 패턴의 이름을 가진 파일을 한번에 읽어들일 수 있다. 방법1. 하나씩 불러와 concat을 이용한다. 방법2. for loop와 list를 이용한다. 차례대로 csv파일을 읽고 읽어서 만들어낸 데이터프레임(df)을 taxi_list_df에 차곡히 쌓는다. taxi_list_df에 쌓인 데이터프레임들을 concat을 이용해 합친다. 위에서 생성했던 taxi 데이터프레임과 taxi_loop_concat 데이터프레임은 동일함을 볼 수 있다.
판다스 - 인덱스로 데이터프레임 병합 : merge, join 데이터 불러오기 인덱스 기준 병합 left_index=True, right_index=True 옵션을 넣으면 왼쪽 데이터프레임의 인덱스와 오른쪽 데이터프레임의 인덱스가 같은 행만 추출한다. (inner 기본 적용) how='outer'를 명시하면 겹치지 않는 인덱스도 보여준다. 인덱스로만 겹치는 데이터를 보고 싶다면 merge보다 간단한 join을 사용할 수 있다. join 위의 merge보다 간단하다. join은 기본적으로 왼쪽 조인을 수행한다. outer도 가능하다. 새 데이터 불러오기 left1과 right1의 인덱스는 다르다 인덱스가 다른 상태에서 명시적 옵션을 넣지 않으면 왼쪽 조인이 기본적으로 수행되지만 값은 NaN만 보인다. a와 b가 있는 행은 모두 잘 조인되었다. 5번행의 group_va..
판다스 - merge 데이터 불러오기 df1의 행은 총 10행, 열은 id, stock_name, value, price df2의 행도 총 10행, 열은 id, name, eps, bps, per, pbr df1과 df2의 겹치는 컬럼은 id컬럼 하나뿐 merge하기 전, id가 겹치는 행만 보고 싶다면? df2의 id리스트를 id_list라는 변수로 가져왔다. isin()을 이용하여 df1의 아이디가 id_list에 들어있는지에 대한 True/False 리스트를 가져왔고 이를 불린 인덱싱하여 df1과 df2의 아이디가 겹치는 행을 볼 수 있다. df1을 기준으로 불린 인덱싱을 했으므로 기준 테이블은 df1임을 볼 수 있다. (컬럼이 df1의 컬럼) 이를 더 간단하게 하는 방법은 그냥 merge를 이용하는 것. merge, ..