본문 바로가기

Pandas

(165)
판다스 - pd.cut, pd.qcut [cut 함수] 균등한 길이의 그룹 데이터의 분산에 따라 각각의 그룹마다 데이터 수가 다르게 나뉜다. [qcut 함수] 같은 크기의 그룹 표본 변위치를 기반으로 데이터를 나누어, 적당히 같은 크기의 그룹으로 나눌 수 있다. 연속성 데이터를 개별로 분할하거나 분석을 위해 그룹별로 나누기도 한다. 나이대가 이렇게 있다고 해보자 이를 네구간으로 나누려면 pd.cut을 이용하면 된다. https://steadiness-193.tistory.com/19 판다스 - 구간 분할(pd.cut) 데이터 불러오기 horsepower를 3구간으로 저출력 / 보통출력 / 고출력 나누고자 한다. 이때 pd.cut을 이용하는데 (데이터배열, 구간, 레이블이름, 경계 포함) 중 데이터배열과 구간은 필수 입력이다. in steadi..
판다스 - 데이터프레임 축 색인 이름 바꾸기 새로운 자료 구조를 만들지 않고 그 자리에서 바로 축 이름을 변경하는 것이 가능하다. 데이터 불러오기 여기서 인덱스를 첫 4글자를 따와서 대문자로 바꿔보자. 이를 적용할 함수를 우선 설정한다. 축 색인에도 map 메서드가 있다. (시리즈도 있다.) 원래 객체를 변경하지 않고 새로운 객체를 생성하려면 rename 메서드를 이용한다. 인덱스는 title을 이용해 첫 글자만 대문자로 바꿨고 컬럼은 upper를 이용해 모두 대문자로 바꿨다. 딕셔너리를 이용해 축 이름 일부만 변경도 가능하다.
판다스 - 데이터프레임의 인덱스 정렬 : sort_index 인덱스의 순서가 마음에 들지 않는다면 혹은 컬럼의 순서가 마음에 들지 않는다면 sort_index 메서드를 이용한다. sort_index() - 기본축 axis=0 (행 방향↓) - 기본 정렬 : 오름차순 기본적으로 축은 axis=0 기준이다. one이 위로 올라왔다. 컬럼 정렬 컬럼을 정렬하려면 axis=1을 넣어준다. 알파벳 순으로 컬럼이 정렬되었다. 내림차순 정렬은 ascending=False를 넣어주면 된다.
판다스 - 데이터프레임과 시리즈의 연산 데이터프레임과 시리즈의 연산 데이터프레임과 시리즈의 연산은 브로드캐스팅이며 축은 기본적으로 axis=1로 동작한다. 시리즈의 색인을 데이터프레임의 컬럼에 맞추고 아래 로우로 전파한다. 예제 이런 데이터프레임과 시리즈가 있다. 운이 좋게도 데이터프레임의 컬럼과 시리즈의 인덱스가 같다. axis=1이므로 행 기준 열방향 동작이다. 즉, 한 행씩 가져와서 시리즈끼리 연산한다고 생각하면 된다. 시리즈끼리는 인덱스가 같아야지만 연산이 가능하다. 이렇게 한 행씩 브로드캐스팅을 통해 연산을 하는 것이다. 위 그림은 동작 원리를 나타냈고 실제 동작은 다음과 같다. 시리즈의 색인을 데이터프레임의 컬럼에 맞추고 아래 로우로 전파한다. 색인과 컬럼이 모두 동일하지 않다면? 예제 d와 f는 짝이 없다. 예상했던대로 짝이 없는..
판다스 - 데이터프레임 팁 1. 라벨이름으로 슬라이싱하면 시작점과 끝점을 포함한다. 일반 파이썬의 슬라이싱과 달리 끝점을 포함하여 나왔다. 2. 슬라이싱으로 로우 선택 1번과 다르게 숫자로 슬라이싱을 해, Utah 행은 나오지 않았다. 3. 데이터프레임 간의 산술연산 데이터프레임은 공통되는 컬럼과 인덱스끼리 연산이 가능하다. 따라서 df1과 df2를 더하게 되면 df2에만 있던 3번행와 e컬럼은 NaN이 된다. 이를 방지하기 위한 fill_value가 있다. NaN을 0으로 바꾸는 것이 아니라, NaN이 되기 전에 0으로 바꾼후 0과 연산을 하는 것이다. 뺄셈 df1에서 df2를 뺀 것이다. 이를 반대로 하려면 rsub을 이용하면 된다. df2에서 df1을 뺀 것이다.
판다스 - 카테고리 자료형 (category) [범주형 데이터] 카테고리 자료형의 장점 - 용량과 속도 측면에서 굉장히 효율적이다. - groupby 같은 일부 pandas 함수는 범주형 데이터를 사용할 때 더 나은 성능을 보인다. - 메모리도 훨씬 적게 사용한다. 사용하는 경우 - 주로 동일한 '문자열'이 반복되어 데이터를 구성하는 경우 memory usage 확인 천만 개의 값을 가지는 시리즈를 만들었다. 위 시리즈를 카테고리형으로 바꿔주자 메모리 사용량 확인 약 8배나 차이가 난다. 데이터프레임으로도 살펴보자 데이터 불러오기 seaborn의 tips 데이터를 불러와 info를 확인해보자. 총 메모리 사용량은 8.8 KB이며 성별 컬럼은 문자열로 구성되어있고 Female과 Male 두가지 뿐이다. 이럴때 카테고리 자료형으로 변환하는 것이다. 범주..
판다스 - 시계열데이터4 : date_range(normalize), timedelta 데이터 생성하기 dup_ts 라는 중복이 있는 시계열 인덱스의 시리즈를 만들었다. 중복된 시계열 그룹화하기 새 데이터 생성하기 date_range는 기본적으로 시작 시간이나 종료 시간의 타임스탬프를 보존한다. 자정에 맞춰 타임스탬프 정규화 자정 기준이라 일별로 range가 생긴 것처럼 정규화되었다. timedelta를 인덱스 설정하기 데이터 불러오기 기준 날짜를 설정한뒤 Timestamp로 자료형을 변환한다. Timestamp 간의 차이는 timedelta64의 자료형으로 생성되며 이를 새 컬럼으로 추가했다. 이를 다시 한번 인덱스로 설정하면 활용할 수 있다. 특정 날짜로 부터 경과한 날짜를 슬라이싱하여 살펴볼 수 있는 것이다.
판다스 - 시계열 데이터3 (날짜 분리) 날짜 데이터 분리 https://steadiness-193.tistory.com/22 판다스 - 열 분리하기 데이터 불러오기 연월일 컬럼을 연 / 월 / 일 세개의 컬럼으로 나눠서 보고 싶다면 방법1 : str.split() 1. 연월일 컬럼의 자료형을 object로 변환한다. 2. 판다스의 자료형과 파이썬의 문자열을 이용해 steadiness-193.tistory.com 이미 열 분리하기 포스팅에서 설명했지만 이는 문자열 기준이며 날짜 데이터를 최대로 활용하기 어렵다. datetime64형을 간단하게 연/월/일별로 분리해보자 데이터 불러오기 바로 이전 포스팅의 주가데이터를 그대로 이용한다. Date 컬럼의 자료형 변환하기 dt 속성 이용하기 dt 속성을 이용하면 연,월,일을 개별적으로 추출할 수 있다...