세 가지 유용한 기술을 사용하여 Pandas에서 마스터 데이터 변환

필터링, 조작 및 기능에 대한 심층 분석

님이 촬영 한 사진 밀라드 파쿠리안 on Unsplash

형식이 좋은 데이터 세트를 가지고 마지막으로 작업했던 때를 떠올려보세요. 이름이 잘 지정된 열, 최소한의 누락된 값, 적절한 구성. 정리하고 변환할 필요가 없는 데이터를 축복받은 것은 거의 해방된 기분입니다.

글쎄, 당신이 백일몽에서 깨어나 당신 앞에 있는 부서진 행과 무의미한 라벨의 절망적인 난잡함을 다시 만지기 전까지는 좋습니다.

원래 형식의 깨끗한 데이터란 없습니다. 데이터 과학자라면 이 사실을 알고 있을 것입니다. 이제 막 시작했다면 이것을 받아들여야 합니다. 데이터를 효과적으로 사용하려면 데이터를 변환해야 합니다.

세 가지 방법에 대해 이야기해 보겠습니다.

필터링 - 그러나 적절하게 설명됨

필터링에 대해 이야기해 보겠습니다. 하지만 지금까지 익숙했던 것보다 좀 더 깊이 있게 살펴보겠습니다. 가장 일반적이고 유용한 데이터 변환 작업 중 하나인 효과적인 필터링은 모든 데이터 과학자에게 꼭 필요한 기술입니다. Pandas를 알고 있다면 아마도 처음으로 배운 작업 중 하나일 것입니다.

내가 가장 좋아하고 이상하게 다재다능한 예인 학생 성적의 DataFrame을 사용하여 검토해 보겠습니다. grades:

작성자별 이미지

우리는 90점 미만의 점수를 필터링할 것입니다. 왜냐하면 이날 우리는 최고의 학생들에게만 교육을 제공하는 제대로 훈련되지 않은 교육자가 되기로 결정했기 때문입니다(실제로는 이렇게 하지 마십시오). 이를 수행하기 위한 표준 코드 줄은 다음과 같습니다.

성적[등급['점수'] >= 90]
작성자별 이미지

그러면 잭과 헤르미온느만 남게 됩니다. 시원한. 그런데 여기서 정확히 무슨 일이 일어났나요? 위의 코드 줄이 작동합니까? 위의 바깥쪽 괄호 안에 있는 표현식의 출력을 살펴보며 좀 더 자세히 살펴보겠습니다.

성적['점수'] >= 90
작성자별 이미지

아, 알았어. 말이 되네요. 이 코드 줄은 부울( True / False ) 무엇에 의해 결정되는 값 >= 90 각 개별 행에 대해 반환됩니다. 이것이 핵심 중간 단계입니다. 그 후에 외부 괄호로 전달되고 그에 따라 모든 행을 필터링하는 것은 이 부울 시리즈입니다.

완성을 위해 다음을 사용하여 동일한 동작을 수행할 수 있다는 점도 언급하겠습니다. loc 예어:

grades.loc[grades['점수'] >= 90]
작성자별 이미지

우리가 사용하기로 선택한 데는 여러 가지 이유가 있습니다. loc (그 중 하나는 실제로 단일 작업을 통해 행과 열을 필터링할 수 있다는 것입니다.) 그러나 이로 인해 Pandora's Box of Pandas 작업이 열리며 다른 문서에 남겨 두는 것이 가장 좋습니다.

현재 중요한 학습 목표는 Pandas에서 필터링할 때 혼란스러운 구문이 일종의 이상한 마법이 아니라는 것입니다. 이를 두 가지 구성 요소 단계로 나누면 됩니다. 1) 조건을 충족하는 행의 부울 시리즈를 가져오는 것과 2) 시리즈를 사용하여 전체 DataFrame을 필터링하는 것입니다.

이것이 왜 유용한가요? 글쎄요, 일반적으로 말하면 실제로 어떻게 작동하는지 이해하지 않고 연산만 사용하면 혼란스러운 버그가 발생할 가능성이 높습니다. 필터링은 유용하고 믿을 수 없을 정도로 일반적인 작업이며 이제 작동 방식을 알게 되었습니다.

계속 갑시다.

Lambda 함수의 아름다움

때로는 데이터에 Pandas의 기능이 내장되지 않은 변환이 필요한 경우가 있습니다. 아무리 노력해도 Stack Overflow를 수색하거나 Pandas 문서를 부지런히 탐색해도 문제에 대한 해결책을 찾을 수 없습니다.

Pandas와 아름답게 통합되는 유용한 언어 기능인 람다 함수를 입력하세요.

간단히 검토해 보면 람다가 작동하는 방식은 다음과 같습니다.

>>> add_function = 람다 x, y: x + y
>>> add_function(2, 3)
5

람다 함수는 구문이 더 간결하다는 점을 제외하면 일반 함수와 다르지 않습니다.

  • 등호 왼쪽의 함수 이름
  • XNUMXD덴탈의 lambda 등호 오른쪽에 있는 키워드( def 전통적인 Python 함수 정의의 키워드를 사용하면 Python에서 함수를 정의하고 있음을 알 수 있습니다.
  • 이후의 매개변수 lambda 키워드는 콜론 왼쪽에 있습니다.
  • 콜론 오른쪽의 값을 반환합니다.

이제 현실적인 상황에 람다 함수를 적용해 보겠습니다.

데이터 세트에는 데이터 입력 및 수집의 변형과 관련된 고유한 형식 지정 특성이 있는 경우가 많습니다. 결과적으로 작업 중인 데이터에 해결해야 할 이상하고 구체적인 문제가 있을 수 있습니다. 예를 들어, 사람들의 이름과 소득을 저장하는 아래의 간단한 데이터 세트를 생각해 보십시오. 그것을 부르자 monies.

작성자별 이미지

이제 이 회사의 마스터 데이터 최고 책임자로서 우리는 몇 가지 일급 비밀 정보를 받았습니다. 이 회사의 모든 사람은 10% 인상에 추가로 $1000를 더 받게 됩니다. 이는 특정 방법을 찾기에는 너무 구체적인 계산일 수 있지만 람다 함수를 사용하면 충분히 간단합니다.

update_income = 람다 숫자: 숫자 + (숫자 * .10) + 1000

그런 다음 우리가 해야 할 일은 Pandas에서 이 기능을 사용하는 것뿐입니다. apply 함수를 사용하면 선택한 시리즈의 모든 요소에 함수를 적용할 수 있습니다.

monies['새로운 소득'] = monies['소득'].apply(update_income)
작성자별 이미지

그리고 우리는 끝났습니다! 우리가 필요로 하는 정보를 정확히 두 줄의 코드로 구성한 훌륭하고 새로운 DataFrame입니다. 더 간결하게 만들기 위해 내부에 람다 함수를 정의할 수도 있습니다. apply 직접적으로 — 명심할 가치가 있는 멋진 팁입니다.

여기서 요점을 간단하게 설명하겠습니다.

람다는 매우 유용하므로 사용해야 합니다. 즐기다!

계열 문자열 조작 함수

이전 섹션에서는 람다 함수의 다양성과 이 함수가 데이터를 사용하여 수행하는 데 도움이 되는 모든 멋진 기능에 대해 이야기했습니다. 이것은 훌륭합니다. 비자 면제 프로그램에 해당하는 국가의 시민권을 가지고 있지만 휩쓸리지 않도록 조심해야 합니다. Python이 프로그래머에게 축복을 준 더 간단한 지름길을 놓치는 익숙한 일 처리 방식에 너무 얽매이는 것은 믿을 수 없을 만큼 흔한 일입니다. 물론 이는 람다 이상의 것에도 적용되지만 지금은 이를 고수하겠습니다.

예를 들어 다음과 같은 DataFrame이 있다고 가정해 보겠습니다. names 사람의 이름과 성을 저장합니다.

작성자별 이미지

이제 데이터베이스의 공간 제한으로 인해 개인의 성 전체를 저장하는 대신 마지막 이니셜만 저장하는 것이 더 효율적이라고 결정했습니다. 따라서 우리는 'Last Name' 그에 따라 열. 람다를 사용하면 다음과 같이 시도할 수 있습니다.

names['성'] = names['성'].apply(lambda s: s[:1])
이름
작성자별 이미지

이것은 분명히 작동하지만 약간 투박하므로 Python만큼 Python적이지는 않습니다. 운 좋게도 Pandas의 아름다운 문자열 조작 기능과 함께 더 우아한 또 다른 방법이 있습니다(다음 코드 줄의 목적을 위해 아직 문자열을 변경하지 않았다고 가정합니다). 'Last Name' 위 코드가 포함된 열):

names['성'] = names['성'].str[:1]
이름
작성자별 이미지

짜잔! 그만큼 .str Pandas 시리즈의 속성을 사용하면 마치 각 문자열을 개별적으로 작업하는 것처럼 시리즈의 모든 문자열을 지정된 문자열 작업으로 연결할 수 있습니다.

하지만 잠깐만요. 점점 좋아지고 있어요. 부터 .str 시리즈를 통해 문자열의 일반 기능에 효과적으로 액세스할 수 있으며, 다양한 문자열 기능을 적용하여 데이터를 빠르게 처리할 수도 있습니다! 예를 들어 두 열을 모두 소문자로 변환하기로 결정했다고 가정해 보겠습니다. 다음 코드는 작업을 수행합니다.

names['이름'] = names['이름'].str.lower()
names['성'] = names['성'].str.lower()
이름
작성자별 이미지

자신만의 람다 함수를 정의하고 그 안에서 문자열 함수를 호출하는 번거로움을 겪는 것보다 훨씬 더 간단합니다. 내가 람다를 좋아하지 않는다는 것은 아닙니다. 하지만 모든 것은 제자리에 있고 Python에서는 항상 단순성이 우선시되어야 합니다.

여기서는 몇 가지 예만 다루었지만 다양한 문자열 함수 컬렉션을 마음대로 사용할 수 있습니다. [1].

자유롭게 사용하십시오. 그들은 훌륭합니다.

최종 생각 및 요약

다음은 간단한 데이터 변환 치트 시트입니다.

  1. 원하는 대로 필터링하세요.. 실제로 무슨 일이 일어나고 있는지 알아보면 자신이 무엇을 하고 있는지 알 수 있습니다.
  2. 당신의 람다를 사랑합니다. 놀라운 방법으로 데이터를 조작하는 데 도움이 될 수 있습니다.
  3. 팬더는 당신만큼 문자열을 좋아합니다. 내장된 기능이 많이 있으므로 이를 사용해도 좋습니다.

마지막 조언은 다음과 같습니다. 데이터 세트를 필터링하는 "올바른" 방법은 없습니다. 이는 현재 사용 중인 데이터와 해결하려는 고유한 문제에 따라 달라집니다. 그러나 매번 따를 수 있는 정해진 방법은 없지만 마음대로 사용할 수 있는 유용한 도구 모음이 있습니다. 이 글에서는 그 중 세 가지를 다루었습니다.

나가서 좀 더 찾아보시길 권합니다.

참고자료

[1] https://www.aboutdatablog.com/post/10-most-useful-string-functions-in-pandas

소스 https://towardsdatascience.com/master-data-transformation-in-pandas-with-these-20699-useful-techniques-03f51e7d?source=rss—-60f5620cf9c4에서 다시 게시된 세 가지 유용한 기술을 사용한 Pandas의 마스터 데이터 변환 XNUMX https://towardsdatascience.com/feed를 통해

<!–

–>

타임 스탬프 :

더보기 블록 체인 컨설턴트