IT의 이해

오버랩과 데이터 결합

컨텐츠 is 2019. 11. 12. 15:20

병합 작업에서 고려해야 할 마지막 문제는 중복되는 열 이름의 처리다. 중복 문제를 수동으로 해결할 수 있지만(축 레이블의 이름 변경에 대한 뒷부분 참조), 병합에는 왼쪽 및 오른쪽 DataFrame 객체의 중복 이름에 추가할 문자열을 지정하는 접미사 옵션이 있다.

인덱스에 병합
경우에 따라 데이터 프레임의 병합 키 또는 키가 인덱스에서 발견될 수 있다. 이 경우 왼쪽_index=true 또는 오른쪽_index=True(또는 둘 다)를 통과시켜 인덱스를 병합 키로 사용해야 함을 나타낼 수 있다.기본 병합 방법은 조인 키와 교차하는 것이므로 대신 외부 결합과 함께 이들의 결합을 형성할 수 있다. 이 경우 리스트로 병합할 열을 여러 개 표시해야 한다(복제 지수 값 처리에 유의한다). DataFrame은 인덱스별 합병을 위해 보다 편리한 결합 인스턴스를 가지고 있다. 그것은 또한 동일하거나 유사한 인덱스를 가지고 있지만 겹치지 않는 열을 가진 많은 DataFrame 객체를 결합하는 데 사용될 수 있다. 이전 예에서는 다음과 같이 쓸 수 있었다. 부분적으로 레거시 이유(많은 이전 버전의 팬더) 때문에 DataFrame의 결합 방법은 조인 키에서 왼쪽 결합을 수행한다. 또한, DataFrame이라는 호출 열 중 하나에서 전달된 DataFrame의 인덱스에 가입하는 것을 지원한다. 마지막으로, 단순한 인덱스 온 인덱스 조합의 경우 아래에서 설명하는 보다 일반적인 concat 기능을 사용하는 대신 DataFrame 목록을 전달하여 가입할 수 있다.

축을 따라 결합
다른 종류의 데이터 조합 연산을 대체적으로 결합, 바인딩 또는 적층이라고 한다. NumPy는 원시 NumPy 어레이로 이 작업을 수행하기 위한 연결 기능을 가지고 있다. Series 및 DataFrame과 같은 팬더 객체의 맥락에서, 라벨이 붙은 축을 사용하면 어레이 연결을 더욱 일반화할 수 있다. 특히 다음과 같은 몇 가지 추가 사항을 생각해 보십시오. 판다의 오목 기능은 이러한 각각의 우려를 해결하는 일관된 방법을 제공한다. 나는 그것이 어떻게 작동하는지 설명하기 위해 여러 가지 예를 들겠다. 인덱스 중첩이 없는 세 개의 시리즈가 있다고 가정해 봅시다: 기본적으로 concat은 축=0을 따라 작동하며, 다른 시리즈를 생성한다. 축=1을 통과하면 결과는 데이터프레임이 된다. 이 경우 다른 축에는 겹침이 없으며, 보시다시피 지수의 정렬된 조합('외부' 결합')이 있다. 대신 합자=내부'를 통과하면 교차할 수 있다. 한 가지 문제는 그 결과에서 그 결합 조각들을 식별할 수 없다는 것이다. 대신 연결 축에 계층 인덱스를 생성하려고 했다고 가정해 보십시오. 이렇게 하려면 키 인수를 사용하십시오. 축=1을 따라 Series를 결합하는 경우 키가 DataFrame 열 헤더가 됨:

오버랩과 데이터 결합
또 다른 데이터 조합 상황은 병합 또는 결합 작업으로 표현될 수 없다. 인덱스가 전체 또는 부분적으로 겹치는 데이터셋이 두 개 있을 수 있다. 동기를 부여하는 예로서, 벡터화된 if-else를 표현한 NumPy의 Where 기능을 고려해보자. Series는 combin_first 방법을 사용하여 이 작업과 데이터 정렬에 상응하는 작업을 수행한다. DataFrames를 사용하면 complex_first는 자연스럽게 동일한 작업을 열별로 수행하므로, 다음과 같이 호출하는 객체의 누락된 데이터를 다음과 같이 "패칭"하는 것으로 생각할 수 있다.

크기 조정 및 피벗
표 데이터를 재배치하기 위한 여러 가지 기본적인 작업이 있다. 이를 교대로 재조립 또는 피벗 연산이라고 한다. 계층 인덱싱을 사용한 크기 조정, 계층적 인덱싱은 데이터프레임에서 일관된 데이터 재배열 방법을 제공한다. 두 가지 주요 작용이 있다. • 스택: 이 "회전" 또는 데이터의 열에서 행으로 피벗 및 분리: 행에서 열로 피벗. 일련의 예를 통해 이러한 작업을 설명하겠다. 행 및 열 인덱스로 문자열 어레이를 사용하는 작은 DataFrame을 고려해야한다.

 

"긴" 형식에서 "넓은" 형식으로의 전환
여러 개의 시계열을 데이터베이스와 CSV에 저장하는 일반적인 방법은 다음과 같다. 데이터는 MySQL과 같은 관계형 데이터베이스에 고정 스키마로 자주 저장되므로, 표에 데이터가 추가되거나 삭제될 때 항목 열의 구별되는 값의 수가 증가하거나 감소할 수 있다. 위의 예에서 날짜와 항목은 대개 관계형 무결성과 쉬운 조인 및 많은 경우 프로그래밍 방식의 쿼리를 모두 제공하는 기본 키가 될 것이다. 물론 단점은 데이터를 긴 형식으로 작업하기가 쉽지 않을 수 있다는 것이다. 날짜 열의 타임스탬프에 의해 색인된 개별 항목 값당 하나의 열을 포함하는 데이터 프레임을 사용하는 것을 선호할 수 있다. DataFrame의 피벗 방법은 다음과 같은 변환을 정확하게 수행한다. 처음 두 값은 행과 열 인덱스로 사용할 열이며, 마지막으로 데이터프레임을 채우기 위한 선택적 값 열이다. 동시에 다시 만들려는 값 열이 두 개 있다고 가정해 보자.


복제 제거
중복된 행은 여러 가지 이유로 DataFrame에서 찾을 수 있다. 예를 들어보자. 중복된 DataFrame 메서드는 각 행이 중복되었는지 여부를 나타내는 부울 시리즈를 반환한다. 기본적으로 이 두 방법 모두 모든 열을 고려하며, 또는 중복된 항목을 탐지하도록 하위 집합을 지정할 수 있다. 추가 값 열이 있고 'k1' 열에 따라 중복 항목을 필터링하려고 한다고 가정해 보십시오. 중복 항목과 drop_duplicates는 기본적으로 첫 번째 관측된 값 조합을 유지하십시오. take_last=true를 선택하면 마지막 항목이 반환된다.


기능 또는 매핑을 사용하여 데이터 변환
많은 데이터 세트의 경우, 데이터 프레임의 어레이, 시리즈 또는 열에 있는 값을 기반으로 일부 변환을 수행할 수 있다. 일부 고기에 대해 수집된 다음과 같은 가상 데이터를 고려하십시오. 각 음식이 나온 동물의 종류를 나타내는 열을 추가하고 싶다고 가정해보자. 각각의 뚜렷한 고기 종류에 대한 지도를 동물의 종류에 적읍시다. 시리즈의 지도 방법은 지도 제작이 포함된 함수나 받아쓰기 같은 물체를 받아들이지만, 여기서는 위의 고기 중 일부는 자본화 되고 다른 것들은 그렇지 않다는 점에서 작은 문제가 있다. 따라서 우리는 또한 다음과 같은 경우로 각 값을 변환할 필요가 있다.

 

값 바꾸기
누락된 데이터를 채우기 방법으로 채우는 것은 보다 일반적인 가치 대체의 특별한 경우라고 생각할 수 있다. 위에서 보았듯이 지도는 물체의 값의 하위 집합을 수정하는 데 사용될 수 있지만, 대체는 그렇게 하는 더 간단하고 유연한 방법을 제공한다. 이 시리즈를 고려해보자