본문 바로가기

Pandas

(165)
판다스 - groupby : 함수로 그룹핑하기 사전이나 시리즈로 그룹핑하는 것보다 함수로 그룹핑하는 것이 보다 더 일반적이다. 그룹 색인으로 넘긴 함수는 색인값 하나마다 한 번씩 호출되며 반환값은 그 그룹의 이름으로 사용된다. 데이터 만들기 이러한 데이터프레임이 있다. 이를 이름의 길이별로 그룹화하려면 groupby 메서드에 len 함수를 넣어주면 되는 것이다. 내부적으로 모두 배열로 변환되므로 함수를 배열이나 사전 또는 시리즈와 섞어써도 문제 없다.
판다스 - groupby : 사전과 시리즈로 그룹핑하기 사전을 groupby 메서드에 넘길 수 있다. 데이터 만들기 1. 사전으로 그룹핑 컬럼을 기준으로 묶을 것이기 때문에 컬럼과 관련된 사전을 만들어야 한다. axis=1로 컬럼으로 그룹화를 했는데 이 과정에서 사전에 있는 키:값을 기준으로 묶였다. a, b, e는 red / c,d는 blue 2. 시리즈로 그룹핑하기 사전이냐 시리즈냐는 크게 중요하지 않고 효율적으로 활용할 줄 알면 된다.
판다스 - stack, unstack 데이터를 생성해서 살펴보자 stack 이 result를 다시 unstack을 하게 되면 가장 안쪽의 레벨부터 끄집어낸다. 숫자 또는 이름을 전달할 수도 있다. 바깥쪽 레벨을 꺼내려면 레벨을 넣어주면 된다. 이름을 넣어도 동일한 결과가 나온다. 데이터프레임의 unstack 데이터프레임을 unstack할 때 unstack 레벨은 결과에서 가장 낮은 단계가 된다. 컬럼의 레벨 1로 unstack되었다.
판다스 - set_index(), reset_index() set_index() - 하나 이상의 컬럼을 색인으로 하는 새로운 DataFrame을 생성한다. reset_index() - 계층적 색인의 단계가 컬럼으로 이동한다. 판다스 데이터프레임에서 인덱스를 설정하는 법은 여러가지가 있다. 지금은 크게 두가지로 살펴보겠다. 데이터 만들기 인덱스 만들기 1. 데이터프레임의 인덱스 = 데이터프레임의 컬럼 Alpha 컬럼이 인덱스로 설정 됐다. 단, 이 방법의 단점은 인덱스와 같은 컬럼이 중복 된다는 것이다. 이렇게 되면 reset_index를 사용할 때 에러가 발생한다. 이미 Alpha 컬럼이 있다는 ValueError가 떴다. 따라서 중복컬럼이 굳이 필요 없다면 Alpha 컬럼을 삭제한 다음 reset_index를 실행하면 에러가 발생하지 않는다. 혹은 중복 컬럼 ..
판다스 - 계층적 색인 축에 대해 둘 이상의 색인 단계를 지정 데이터 만들기 이 데이터프레임의 인덱스와 컬럼은 이렇게 멀티인덱스 형식이다. loc, xs 인덱서 a 행만 보고 싶다면 a행의 2행을 보고 싶다면 세 방법 모두 가능하다. 전체 행에서 2행만 보고 싶다면 계층적 색인의 각 단계에 이름 설정하기 이렇게 하면 인덱서를 사용할 때 가독성을 높일 수 있다. 결과는 동일하다. 계층 정렬, 순서 바꾸기 인덱스의 순서가 다소 뒤죽박죽인 데이터프레임을 설정한다. 이를 정렬하기 위해선 sort_index를 사용한다. key1 의 원소가 사전적으로 정렬되었다. 계층의 순서는 swarplevel을 이용해 바꾼다. swarplevel을 이용해 계층을 바꿀때 sort_index를 이용해 사전적 순서로 정렬하면 데이터를 선택하는 성능이 훨씬..
판다스 - 원핫인코딩 (One-Hot Encoding) https://steadiness-193.tistory.com/19 판다스 - 구간 분할(pd.cut) 데이터 불러오기 horsepower를 3구간으로 저출력 / 보통출력 / 고출력 나누고자 한다. 이때 pd.cut을 이용하는데 (데이터배열, 구간, 레이블이름, 경계 포함) 중 데이터배열과 구간은 필수 입력이다. in steadiness-193.tistory.com 위 포스팅에서 사용한 get_dummies 와 비슷하다. 문제의 데이터를 살펴보자 장르 컬럼에 2개 이상의 값이 같이 있는 행도 있다. 최종 목표는 이렇게 만드는 것이다. 장르별 컬럼을 다 만들고 해당 장르에 속한다면 1을, 아니라면 0을 넣는 것이다. 1. 모든 장르 찾기 extend를 이용해 all_genres 리스트에 모든 장르 데이터를..
판다스 - 특잇값(outlier) 처리하기2 https://steadiness-193.tistory.com/68 판다스 - 특잇값(outlier) 처리하기 데이터프레임을 다루다보면 여러 아웃라이어들을 볼 수 있다. 이 값들은 가치가 있을 수 있지만 때로는 제외하고 처리해야할 때가 많다. 데이터 불러오기 data = pd.DataFrame(np.random.randn(1000, 4)) 요�� steadiness-193.tistory.com 위 포스팅의 방법을 이용하되 평균값으로 특잇값을 처리하는 것이 다르다. 데이터 불러오기 data = pd.DataFrame(np.random.randn(1000, 4)) 요약본 살펴보기 이 데이터도 평균값은 매우 작은데 최소값과 최대값의 절댓값이 3을 초과하는 데이터가 있다. 처리2. 컬럼별 평균값으로 대체하기 평..
판다스 - 특잇값(outlier) 처리하기 데이터프레임을 다루다보면 여러 아웃라이어들을 볼 수 있다. 이 값들은 가치가 있을 수 있지만 때로는 제외하고 처리해야할 때가 많다. 데이터 불러오기 data = pd.DataFrame(np.random.randn(1000, 4)) 요약본을 살펴보자 각 컬럼별 평균값은 굉장히 작은데 최솟값과 최대값의 절대값이 3이 넘는 데이터가 있다. 이를 보통 특잇값이라고 부르며 적절한 값으로 대체할 필요가 있다. 처리전, 특잇값이 있는 행 살펴보기 절댓값이 3을 초과하는 값이 들어있는 모든 로우를 살펴보자 이때 쓰는 것이 any 메서드이다. 한 행에 절댓값이 3이 넘는 데이터가 하나라도 있다면 True를 반환한다. 0번, 2번행에 3이 넘는 데이터가 있다는 뜻이다. True는 1이니 이를 더하면 총 6개의 행에 아웃라..