주요 컨텐츠로 이동

Pandas Dataframe(판다스 데이터프레임)

Databricks 무료로 시작하기

pandas 로고

데이터 사이언스 분야에서 pandas DataFrame으로 데이터 사이언스의 모든 잠재력을 이끌어 낸다면 기업의 업무 방식을 혁신할 수 있다는 말은 과장이 아닙니다. 이를 위해서는 적합한 데이터 구조가 필요하며 적합한 데이터 구조를 사용하면 데이터를 조작하고 분석하면서 효율성을 극대화할 수 있습니다.

이러한 목적을 위해 사용 가능한 가장 유용한 데이터 구조 중 하나가 pandas DataFrame입니다.

pandas(판다스)는 Python(파이썬) 프로그래밍 언어로 작성된 오픈 소스 라이브러리로, 빠르고 조정 가능한 데이터 구조와 데이터 분석 툴을 제공합니다. 원래 Wes McKinney가 개발한 이 데이터 조작 툴은 NumPy 패키지 기반으로 구축되었으며 주요 데이터 구조를 DataFrame이라고 부릅니다.

"잠깐만요. 천천히 진행하세요. pandas DataFrame이 뭔가요?"라고 질문하고 싶으시다면 걱정 마세요. 잠시 후 자세히 설명해 드리겠습니다. 지금은 pandas DataFrame이 데이터에 크게 의존하는 분야에서 사용하기 적합한 사용자 친화적 툴이라고만 이해하시면 됩니다. 이러한 분야의 예로는 사이언티픽 컴퓨팅, 머신 러닝, 그리고 앞서 언급한 데이터 사이언스가 있습니다.

pandas의 구체적인 구조는 바로 아래에 나와 있습니다. 여기서 다룰 주제에는 pandas DataFrame을 만드는 방법, pandas DataFrame으로 작업을 시작하는 방법, 그리고 pandas DataFrame을 사용하여 얻을 수 있는 이점이 포함되어 있습니다.

pandas는 다음과 같이 두 가지 유형의 데이터 구조를 제공합니다.

  • Pandas DataFrame(2차원)
  • Pandas Series(1차원)

Pandas의 데이터 구조 유형

pandas는 CSV 또는 TSV 파일과 같은 데이터 또는 SQL(Structured Query Lnaguage) 데이터베이스를 행과 열이 있는 Python 개체로 바꿉니다. 이러한 개체를 DataFrame이라고 합니다. 이러한 개체는 통계 소프트웨어(예: Excel 또는 SPSS)에서 이용할 수 있는 테이블과 무척 비슷합니다. Excel과 유사하게, pandas DataFrame을 사용하면 테이블 형식의 데이터를 여러 행의 관측과 여러 열의 변수로 저장 및 조작하고, 주어진 데이터 세트에서 유용한 정보를 추출할 수 있습니다.

Apache Spark 3.2 기반 pandas API를 실행할 수 있습니다. 그러면 pandas 워크로드를 고르게 배포하여 모두 올바르게 수행되도록 할 수 있습니다.

지금까지 pandas가 제공하는 두 가지 유형의 데이터 구조를 살펴봤습니다. 그럼 이제 잠시 추고 pandas DataFrame이 무엇인지 살펴보도록 하죠. 먼저 간단히 정의를 설명한 다음 DataFrame이 받아들일 수 있는 입력 유형이 포함된 유용한 목록을 알려 드리겠습니다.

Pandas DataFrame(판다스 데이터프레임)이란 무엇입니까?

pandas DataFrame은 테이블 형식의 데이터를 표현하고 다루는 한 방식입니다. 이것은 데이터를 여러 행과 열로 구성하여 2차원 데이터 구조로 만드는 테이블로 보일 수 있습니다. DataFrame은 처음부터 새로 만들어도 되고, NumPy 배열과 같은 다른 데이터 구조를 사용해도 됩니다.

pandas DataFrame을 사용하면 다양한 형식으로 다양한 소스에서 데이터를 가져올 수 있습니다. 예를 들면, pandas 콘텐츠를 가져오면서 NumPy 배열도 가져올 수 있습니다.

DataFrame이 수용하는 주요 입력 유형은 다음과 같습니다.

  • 사전(Dict), 목록, 사전 또는 계열(Series)의 1D ndarray
  • 2-D numpy.ndarray
  • 구조적 또는 레코드 ndarray
  • 계열(Series)
  • 또 다른 DataFrame

Pandas DataFrame(판다스 데이터프레임)으로 작업하는 방법에 대한 일반적인 질문

pandas가 제공하는 구조와 pandas DataFrame의 뜻을 안다고 해서 pandas DataFrame에 대한 모든 것을 안다고 할 수는 없습니다. 그래서 이 섹션에서는 pandas DataFrame으로 작업하는 방법과 관련하여 가장 흔한 질문 몇 가지에 답해보려고 합니다.

아래 6개의 질문과 답변 중에 여러분이 궁금한 사항이 없다면 계속 이 글을 읽어 보시기 바랍니다. 이 글을 끝마치기 전에 여러 가지 다른 주제를 다루고 추가적인 핵심 질문 몇 가지에 대해 답변을 드릴 것입니다.

1. Pandas DataFrame(판다스 데이터프레임)에서 인덱스, 행 또는 열을 삭제하는 방법

모든 DataFrame 열(또는 행 또는 인덱스)이 항상 똑같이 필요하지는 않습니다. 경우에 따라 DataFrame 개체를 삭제해야 할 수 있습니다. 그래서 삭제하는 방법을 보여드리려고 합니다.

인덱스부터 시작하여 차례로 한 가지씩 삭제하는 방법을 설명하겠습니다. 아래의 예, 그리고 이 글에서 이후에 사용되는 모든 예의 코드에서 일반적인 사용법처럼 "DataFrame"을 "df"로 축약하겠습니다.

DataFrame에는 항상 일종의 인덱스가 있어서 인덱스를 완전히 삭제하는 것이 어렵지만, 인덱스 라벨을 수정하거나 이름을 모두 삭제하는 것이 가능합니다. del df.index.name 명령을 실행하면 이름을 삭제할 수 있습니다.

또한 DataFrame 인덱스를 초기화할 수도 있습니다. 이 기능은 중복된 인덱스 값이 있는 경우 유용합니다. 인덱스를 초기화하고 중복된 인덱스를 드롭한 다음 중복 없는 새로운 열의 인덱스를 복원하기만 하면 됩니다.

열을 삭제하는 일은 약간 더 쉽습니다. drop ( ) 방법을 사용하여 열을 제거할 수 있습니다. 이를 위해서는 제거하려는 열의 라벨을 입력한 다음 올바른 열의 이름인지 확인한 후 drop ( ) 명령을 실행해야 합니다. 또한 inplace를 True로 설정하면 DataFrame을 재할당하지 않고도 열을 제거할 수 있습니다.

마지막으로, DataFrame 행을 삭제하는 방법을 보여드리겠습니다.

df.drop_duplicates( )를 실행하면 행 라벨에 제공한 기준에 따라 중복된 행을 제거할 수 있습니다. 또한 열에도 사용할 수 있는 .drop() 방법을 선택할 수도 있습니다. 그러나 행의 인덱스를 대신 드롭하려는 경우는 예외입니다. 이 작업을 수행한 후 인덱스를 반드시 초기화하십시오.

누락된 값이 있는 특정 행을 제거하려면, DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)를 사용할 수 있습니다. 그러면 널(null) 값이 있는 모든 행이 자동으로 제거됩니다. 또한 선택된 특정 데이터에서 누락된 값을 제거할지 여부를 결정하기 위해 함수의 매개변수를 조정할 수도 있습니다.

널(null) 값을 특정 값으로 바꾸려고 하는 경우에는 .dropna()로 삭제하는 대신 .fillna() 명령을 사용할 수 있습니다.

2. Pandas DataFrame(판다스 데이터프레임)의 인덱스 또는 열의 이름을 재지정하는 방법

인덱스 및 열의 이름을 재지정하는 것은 삭제하는 것보다 훨씬 더 쉽고 간단합니다. 개체 이름의 재지정은 .rename( ) 방법을 사용하고 새 값을 줄 인덱스(또는 열)를 채우기만 하면 됩니다.

이름 재지정 작업에서 inplace 인수를 False로 변경하면 열의 이름을 바꿀 때 DataFrame이 재할당되지 않습니다.

3. Pandas DataFrame(판다스 데이터프레임)에서 데이터 형식을 지정하는 방법

대부분 DataFrame 사용자는 DataFrame에서 값을 편집 및 변경하고 형식을 지정해야 합니다. 이 작업을 진행할 경우 알아야 할 가장 중요한 전략 몇 가지를 살펴보겠습니다.

문자열의 모든 인스턴스를 교체하려는 경우, .replace() 명령을 사용하고 (변경 전 값, 변경 후 값)의 형식으로 작업을 완료할 수 있습니다.

그러면 프로그램이 자동으로 변경하려는 문자열 또는 값의 모든 인스턴스를 변경 후 문자열 또는 값으로 대체합니다.

사용자에게 필요할 수 있는 또 다른 유형의 형식 지정 방법은 문자열에서 필요하지 않은 부분을 제거하는 것입니다. map ( ) 명령을 "결과(result)" 열에 사용할 경우 선택된 lambda 함수를 해당 열의 각 요소에 적용합니다.

또한 열의 텍스트를 여러 행으로 나눌 수도 있습니다. 하지만 이 작업은 조금 더 복잡합니다. 그래서 간단한 튜토리얼을 진행하려고 하니 조금만 기다려 주세요.

첫째, 행의 길이가 너무 길어서 나누고자 하는 행을 결정해야 합니다. 나눌 행을 찾은 후에는 행이 들어 있는 열과 공간의 문자열을 찾아야 합니다. 다음 단계는 여러 행으로 나눌 값들을 찾아서 이 값들을 계열(Series) 개체에 넣는 것입니다.

계열(Series)에 NaN 값이 있다면 걱정 마세요. 올바른 방향으로 가고 있는 것입니다. 계열(Series)을 스태킹하기만 하면 계열(Series)의 최종 카피에 불필요한 NaN 값이 없도록 할 수 있습니다.

스태킹된 계열(Series)을 원하는 형식으로 바꾸려면 DataFrame과 정렬되도록 레벨을 드롭해야 합니다. 그런 다음, 계열(Series)을 DataFrame으로 변환하기만 하면 됩니다. 즉, 계열을 원본 계열이 속해 있던 DataFrame으로 다시 넣은 다음 원본 DataFrame에서 결함이 있는 열을 삭제합니다. 이 마지막 단계(열 삭제)를 통해 중복된 행이 생성되지 않도록 할 수 있습니다.

DataFrame의 데이터에 적용할 수 있는 마지막 종류의 형식 지정은 DataFrame의 행 또는 열에 함수를 적용하는 것입니다.

먼저 .loc[ ] 또는 .iloc[ ]를 사용하여 작업하려는 행을 선택합니다. 하지만 현재 DataFrame을 사용 중이므로 더 구체적으로 df.loc 및 df.iloc를 사용해야 합니다. 그 다음, 적합한 행을 선택했다면 행 또는 열에 doubler와 같은 기능을 적용하기 위해 apply ( )를 사용할 수 있습니다.

4. 빈 DataFrame(데이터프레임)을 만드는 방법

빈 DataFrame을 만들려면 pandas DataFrame() 함수를 사용해야 합니다.

DataFrame을 NaN로 초기화하려면 단순히 numpy.nan을 사용할 수 있습니다. numpy.nan에는 type float이 있고 이는 새 DataFrame의 데이터 값도 기본적으로 type float이라는 뚯입니다. dtype 속성을 입력한 다음 찾고 있는 유형(type)을 입력하여 이 기본 설정을 피할 수 있습니다.

DataFrame ( ) 함수를 사용하려면 사용자가 DataFrame에 넣으려고 하는 인덱스나 열과 같은 데이터를 전달해야 합니다. 이 데이터는 다양한 유형을 가질 수 있습니다. 또한, 설정한 대로, 항상 dtype 속성을 사용하여 데이터 유형을 자유롭게 지정할 수 있습니다.

사용자는 빈 DataFrame이 사용할 축 라벨 또는 인덱스를 지정할 수 있습니다. 이를 지정하지 않으면, pandas DataFrame은 일반 규칙에 따라 자동으로 구성합니다.

5. pandas(판다스)는 데이터를 가져올 때 날짜를 인식하나요?

이론적으로는 그렇지만 실제로는 약간 더 복잡합니다.

pandas는 날짜가 입력되고 있다는 사실을 인식하지만, 사용자의 가이드가 있을 때 가장 잘 인식합니다. 구체적으로 말하자면, CSV 파일이나 이와 유사한 파일에서 데이터를 가져올 때마다 parse_dates 인수를 추가해야 합니다. CSV 파일의 경우 다음과 같이 보일 것입니다.

pd.read_csv('yourFile', parse_dates=True)

이 방법은 숫자 형식의 날짜에 가장 효과적입니다. 그러나 날짜가 모두 이러한 형식으로 되어 있지는 않습니다.

일반적이지 않은 날짜 형식이나 DataFrame이 인식하기 어려운 날짜 형식의 경우에는 자체 파서(parser)를 만들어야 합니다. 이를 위해 입력된 날짜와 시간을 인식하는 방식을 제어하기 위한 형식 문자열을 사용하는 lambda 함수를 사용할 수 있습니다.

pandas에게 어떤 방식으로 가이드를 제공하든 작업을 완료하면 pandas는 날짜와 시간을 인식할 것입니다. 즉, 사용자 측에서 최소한의 입력으로도 DataFrame에게 사용자가 공급한 날짜 기반 정보를 모두 인식하도록 지시할 수 있습니다.

6. 언제, 왜, 그리고 어떻게 pandas DataFrame(판다스 데이터프레임)을 재구성해야 합니까?

데이터 분석은 pandas DataFrame의 가장 중요한 용도 중 하나이기 때문에 DataFrame을 구성하고 재구성할 줄 아는 것이 매우 중요합니다. 그래야 DataFrame의 구조를 데이터 분석 요구 사항에 가장 적합하도록 구성할 수 있습니다.

"언제 DataFrame을 재구성해야 합니까?"라는 질문에 대한 답은 이렇습니다. 현재 형식이 사용자가 구축하려는 데이터 분석에 유용하지 않은 경우, 그리고 이 목적을 위해 새 열 또는 행을 만들 생각이 없는 경우 DataFrame을 재구성해야 합니다. DataFrame을 재구성해야 하는 이유는 데이터 분석에 가장 적합한 형태(shape)를 찾아야 하기 때문입니다.

그러면 질문 하나만 남습니다. "어떻게 재구성해야 할까요?"

피봇하거나 스태킹 중에서 선택할 수 있고 "언스태킹 및 멜팅(unstacking and melting)" 방법을 사용할 수도 있습니다. 이 세 가지 방법이 각각 어떻게 작동하는지 자세히 살펴보고 DataFrame 재구성에 이들을 어떻게 사용할 수 있는지 알아보겠습니다.

피봇 방법으로 DataFrame 재구성

먼저 피봇 옵션부터 살펴보겠습니다. 이 방법을 사용하면 원본 테이블에서 새 테이블을 만듭니다. 따라서 사용자는 원하는 모습의 새 카피를 구성할 수 있습니다. 이 함수를 사용하려면 세 개의 인수를 전달해야 합니다.

첫째, 값이 있습니다. 이 인수는 새 DataFrame으로 통합될 예정인 원본 DataFrame의 값을 선택하는 지점이며 포함할 것과 제외할 것을 선택할 수 있습니다.

그 다음, 열을 전달합니다. 무엇을 전달하든 이것이 최종 테이블의 열이 됩니다.

마지막으로, 새 테이블에 사용할 인덱스를 선택해야 합니다.

결과적으로 생기는 테이블에 어떤 데이터를 통합할지를 구체적으로 생각하는 것이 중요합니다. 예를 들면, 지정된 열에 중복된 값을 포함하는 행을 포함하면 오류 메시지가 표시됩니다. 또 다른 예는 최종 테이블에 포함할 값을 정확히 선택하지 않을 경우 여러 열로 피봇하는 것입니다.

그 다음 스태킹에 대해 고려해 보겠습니다.

스태킹(Stacking) 방법으로 DataFrame을 재구성

DataFrame을 스태킹하면 DataFrame이 높아지는 것을 인식할 수도 있습니다. DataFrame의 데이터 형식을 지정하는 방법을 설명하면서 세 번째 질문에서 스태킹에 대해 다뤘습니다.

기술적으로 설명하자면, 가장 안쪽에 있는 열 인덱스를 이동하여 가장 안쪽에 있는 행 인덱스로 바꾸는 것입니다. 이렇게 하면 가장 안쪽의 레벨에 위치한 새 레벨의 행 라벨이 있는 새 인덱스를 가진 DataFrame을 얻게 됩니다.

이제 언스택킹하는 방법을 고려해야 합니다. 상상할 수 있듯이, 언스태킹은 스태킹과 반대되는 프로세스입니다. 스태킹은 가장 안쪽의 열 인덱스를 이동하는 반면, 언스태킹은 가장 안쪽의 행 인덱스를 이동합니다. 따라서 언스태킹을 할 때는 가장 안쪽의 행 인덱스를 이동하여 이것이 가장 안쪽의 열 인덱스로 대신 사용될 수 있도록 합니다. 언스태킹은 멜팅과 함께 사용됩니다. 그래서 이 다음으로 멜팅을 살펴보겠습니다.

멜팅(Melting) 방법으로 DataFrame 재구성

멜팅은 DataFrame이 하나 이상의 열을 식별자 변수로 사용하고, 나머지 열은 측정 변수인 경우에 이상적입니다. 이러한 경우에 멜팅으로 인해 DataFrame은 기본적으로 더 넓어지지 않고 길어집니다.

멜트(melt)로 측정 변수가 DataFrame의 너비가 아니라 높이에 배치되도록 측정 변수를 행 축에 언피봇(un-pivot)합니다. 최종 산물에는 두 개의 열이 포함되며 둘 중 하나는 변수를 위한 것이고 나머지 하나는 값을 위한 것입니다.

Pandas DataFrame(판다스 데이터프레임) 사용법

DataFrame은 Excel 스프레드시트와 거의 비슷한 방식으로 사용할 수 있으며, pandas DataFrame도 마찬가지입니다.

기본적으로, pandas DataFrame을 데이터 구조로 사용할 수 있습니다. pandas DataFrame은 스프레드시트처럼 데이터를 처리하고 데이터를 분석하는 데도 사용할 수 있습니다.

pandas는 데이터를 읽거나 조작해야 하는 경우에 가장 유용한 툴입니다. pandas DataFrame에 데이터를 입력하는 방법은 이미 설명했습니다. pandas는 다양한 유형의 데이터와 호환되므로 다양한 유형의 데이터를 pandas에 가져올 수 있습니다. 이 덕분에 사용자의 정보가 어떤 형식이든 작업을 수행할 수 있습니다.

그리고 위에서 설명한 형식 지정 프로세스에 따라 데이터를 필요한 형식으로 변환할 수 있습니다. 이미 확보한 데이터를 필요에 따라 더 적합하고 더 유용한 형식으로 구성할 수도 있습니다.

pandas는 특히 Python과 함께 사용하도록 설계되었으므로 pandas와 Python을 대부분 함께 사용할 수 있습니다. 따라서 PySpark 및 pandas로 SHAP 계산 스케일링과 같은 작업을 쉽게 수행할 수 있습니다.

pandas DataFrame 안에서 특정 작업과 함수를 어떻게 실행하는지 더 구체적으로 살펴보겠습니다. pandas DataFrame 만들기, 인덱싱 및 반복과 같은 작업에 대해 살펴본 후 처음부터 pandas를 사용하면 얻을 수 있는 이점을 자세히 살펴보겠습니다.

Pandas DataFrame(판다스 데이터프레임)을 만드는 방법

pandas DataFrame은 다양한 방법으로 사용할 수 있는 다목적 툴이기 때문에 몇 가지 다른 전략에 따라 만들 수 있습니다.

4번 질문에 답하면서 빈 pandas DataFrame을 설정하는 방법을 이미 살펴보았습니다. 이 방법은 새 pandas DataFrame을 만들 때 사용할 수 있는 방법 중 하나입니다. 이 방법은 pandas로 "이전"할 수 있는 다른 데이터 구조가 없는 경우에 가장 적합합니다. 다시 말해, 완전히 백지에서부터 시작하려고 사는 경우에 가장 적합합니다.

이제 NumPy ndarray에서 pandas DataFrame을 만드는 방법을 살펴보겠습니다.

요컨대, NumPy 배열로 상당히 쉽게 DataFrame을 만들 수 있습니다. 선택한 배열을 pandas 데이터 인수의 DataFrame ( ) 함수로 전달하기만 하면 이 인수는 NumPy 데이터를 사용하여 새 DataFrame을 구성할 것입니다. 이 인수는 다음은 형태입니다.

print(pd.dataframe [ ] )

입력하려는 데이터는 꺾쇠괄호 안에 들어갑니다.

pandas가 구체적인 정보를 사용하여 사용자에게 적합한 DataFrame을 만들 수 있도록 값, 인덱스, 열 이름은 NumPy 배열에 이미 포함되어 있어야 합니다.

pandas DataFrame을 사용할 경우 얻을 수 있는 장점 중 하나는 DataFrame ( ) 함수에 다양한 구조를 입력할 수 있다는 것입니다. 비NumPy 구조를 사용하여 구조를 만들 경우, 이 프로세스는 거의 동일한 방식으로 작동합니다. 다시 말해, 사용자는 DataFrame ( ) 함수에 배열을 전달한 다음 pandas에게 이 정보로 새 DataFrame을 만들도록 지시합니다.

뿐만 아니라 DataFrame을 입력 정보로 사용하여 새 DataFrame을 만들 수도 있는데 my_df = pd.DataFrame ( )을 사용하고 입력 데이터를 공식에 삽입하면 됩니다.

원본 사전의 키는 계열(Series)의 인덱스 안에 포함되고 DataFrame도 동일합니다. 가져오기가 완료되면 키는 자동으로 정렬됩니다.

.index 특성과 함께 shape 특성을 사용하여 새로 만든 DataFrame의 차원을 알아볼 수 있습니다. 이 특성을 사용하면 너비와 높이가 표시되는데 높이만 알고자 하는 경우, LEN ( ) 함수(다시 말하지만 .index 특성과 함께)를 사용하면 DataFrame의 높이가 표시됩니다.

이 두 방법 모두 모든 NaN 값이 포함된 DataFrame의 규격을 보여 줍니다. 반면, df[0].count ( )를 사용하면 NaN 값이 포함되지 않은 DataFrame의 높이가 표시됩니다.

Pandas DataFrame(판다스 데이터프레임)에서의 인덱싱

데이터 인덱싱은 물리적 항목들을 인덱싱하는 것과 같다고 생각하면 됩니다. 다시 말해, pandas에서 인덱싱하는 경우, 작업하려는 특정 값, 행, 열을 선택하여 데이터를 분류하고 정리하게 됩니다.

pandas DataFrame에서 인덱싱을 통해 수행할 수 있는 작업은 Excel에서 수행 가능한 작업과 비슷합니다. 가장 큰 차이점은 pandas에서는 더 자세하게 다양한 목적을 위해 인덱싱할 수 있다는 것입니다. 따라서 원하는 대로 데이터를 처리하기 위해 다양한 옵션을 이용할 수 있습니다.

pandas에서 인덱싱을 시작하려면 먼저 DataFrame에서 작업하려는 데이터의 특정 행 및/또는 열을 선택해야 합니다. 예를 들면, 행은 몇 개만 사용하되 열은 모두 사용할 수도 있고, 반대로 열은 몇 개만 사용하되 행을 모두 사용할 수도 있습니다. 소수의 특정 행과 열이 필요한 경우도 있을 수 있습니다.

데이터의 특정 하위 그룹을 선택하므로 인덱싱은 때때로 하위 그룹 선택이라고도 불립니다.

pandas DataFrame에서 인덱싱이 어떻게 이루어지는지 설명해 보겠습니다.

pandas에서 인덱싱을 수행하는 방법은 네 가지입니다. 첫째, 인덱싱 연산자 함수인 df[ ]가 있습니다. 라벨을 다루는 경우 df.loc[ ]를 사용할 수도 있습니다. df.iloc[ ]는 위치 및/또는 정수 기반 데이터에 주로 사용됩니다. 마지막으로, 라벨 및 정수 기반 데이터 모두를 위한 함수인 df.ix[ ]가 있습니다.

방금 설명한 이 네 가지 인덱싱 스타일을 인덱서라고 부르며, 이들은 가장 흔히 사용되는 데이터 인덱싱 방법에 속합니다.

pandas DataFrame을 통한 반복

pandas DataFrame에서 동일한 그룹의 명령문(statement)을 반복해서 실행해야 할 경우를 대비해 두는 것이 좋습니다.

이것 역시 pandas에서 상당히 쉽게 실행할 수 있는 함수입니다. 반복을 설정하려면 for loop와 iterrows ( ) 명령을 둘 다 사용해야 합니다. 그러면 (인덱스, 계열(Series)) 쌍의 형식으로 DataFrame 행을 반복하고

결과 값에 (인덱스, 행) 튜플(tuple)을 얻을 수 있습니다.

pandas에서 반복을 수행하면 DataFrame에게 사전과 같이 반복하라고 지시하는 것으로 개체의 키에 대해 반복이 수행되어 행과 열의 항목이 차례로 처리됩니다.

pandas Dataframe을 이용하면 얻을 수 있는 점

  • 다양한 데이터베이스 및 데이터 형식의 데이터를 손쉽게 로드
    • 다양한 데이터 유형과 함께 사용할 수 있음
  • 공용 키를 사용하는 데이터 세트를 직관적으로 병합, 조인하여 완전한 데이터 보기 가능
  • 데이터 프레임 하나 안에 세그먼트 레코드 여러 개
  • 스마트한 라벨 기반 슬라이싱, 창의적 인덱싱 및 대규모 데이터 세트의 하위 집합 설정 지원
  • Pandas DataFrame 내 기본 내장 기능에 액세스하여 얻은 데이터에서 설득력 있는 통계를 얻기 위해 신속한 집계 및 요약 수행
  • 특정 연산 작업을 포함한 나만의 Python 함수를 정의하여 DataFrame 레코드에 적용
  • 더 적은 쓰기 작업으로도 더 많은 작업을 수행하도록 돕는 구문 보유
    • C++ 또는 Java에서 최대 15줄을 사용해야 하는 작업을 두 줄 이하로 수행할 수 있음
    • 워크플로를 효율화하고, 매일의 작업량을 늘리고, 처리 및 분석할 수 있는 데이터의 양을 증가시킴
  • Python과 함께 사용하도록 설계된 pandas는 다양한 기능을 모두 Python과 완전히 호환하여 사용 가능
    • Python에 능숙한 많은 산업의 전문가들이 Python-pandas 조합을 이용할 경우 접근성이 향상됨
  • 제공되는 구문을 활용하여 대량의 데이터를 간편하고 효율적이며 빠르게 처리할 수 있음
  • 유연한 데이터 처리 방식 덕분에 데이터를 쉽게 편집하고 필요한 모든 함수를 적용할 수 있어 데이터 접근법을 맞춤화할 수 있음
  • 오픈 소스 기반으로 뛰어난 접근성으로 누구나 pandas를 사용할 수 있음
  • 설계 단계에서 고려한 프로그램밍 언어가 아니더라도 다양한 유형의 프로그래밍 언어와 호환됨 (예, Java 및 HTML과 호환)
  • _json과 같은 다른 형식으로 쉽게 변환 가능

5가지 주요 pandas DataFrame 시각화 툴

pandas DataFrame은 다양한 기능과 함수를 사용하고 pandas 라이브러리에 입력되는 모든 데이터를 유연하게 조작할 수 있는 기회를 제공하지만, 매우 시각적인 툴은 아닙니다. 이 툴은 기본적으로 무대 뒤의 모습과 같다고 생각할 수 있습니다.

여러 가지 이유로 이는 매우 유용합니다. 예를 들면, 입력한 데이터를 시각적으로 표현해야 하는 경우가 그렇습니다.

Excel과 같은 툴을 pandas와 비교해서 살펴보면 Excel에서는 버튼 몇 개를 누르면 자동으로 순전히 숫자로만 된 데이터가 시각적인 그래프, 차트 등으로 바뀝니다. pandas에는 이러한 기능이 없습니다.

그래서 데이터 시각화 툴을 원하면 pandas DataFrame이 아닌 다른 툴을 고려해야 합니다.

5가지 주요 DataFrame 시각화 툴을 아래에 모아두었습니다. 상위 두 개의 툴은 JavaScript 툴이고 나머지 세 개의 툴은 Java와 관련이 없는 데이터 분석 애플리케이션입니다. 각 툴을 자세히 분석하여 해당 툴이 유용한 이유와 툴의 순위가 어떻게 매겨졌는지 보여드리겠습니다.

그러면, 상위 두 개의 툴을 먼저 살펴보겠습니다. 그리고 왜 JavaScript 툴이 1, 2위를 차지했는지도 알려드리겠습니다.

JavaScript 툴

원래 LiveScript라고 불렸던 JavaScript는 유연하고 동적인 특성 덕분에 현재 가장 인기 있는 프로그래밍 언어 중 하나가 되었습니다. JavaScript가 사용하는 구문은 프로그래밍 언어인 C 언어의 구문과 비슷합니다.

JavaScript를 사용하면 대화식 웹 페이지를 만들거나 기존 웹 페이지를 조정할 수 있습니다. pandas DataFrame처럼 JavaScript는 데이터를 조작할 수 있기 때문에 JavaScript를 사용하여 계산을 수행하고 데이터 기반 결론을 검증할 수 있습니다. 또한 JavaScript는 HTML 또는 CSS 문서에 동적 텍스트를 삽입하려는 경우 유용합니다.

여기서는 pandas DataFrame 시각화에 사용할 수 있는 JavaScript 툴을 살펴보고 있습니다.

Databricks가 뽑은 최고의 시각화 툴 목록에서 1, 2위 자리를 JavaScript 툴이 차지한 이유는 JavaScript가 언어로서 항상 진화하고 있기 때문입니다. JavaScript는 광범위하게 유용하기 때문에 널리 사용될 뿐만 아니라, 끊임없이 확장되고 발전되고 있기 때문에 더 많은 사람들이 사용하고 있습니다. 따라서 JavaScript로 만들어진 툴은 더 유연할 수 있으며, 사용자의 최신 요구 사항을 잘 반영할 수 있습니다.

이제 pandas DataFrame 시각화를 위한 최고의 JavaScript 툴인 Qgrid를 살펴본 후, 이 목적을 위한 두 번째로 선정한 PivotTable.js를 살펴보겠습니다.

1. Qgrid

Quantopian이 개발한 Qgrid는 SlickGrid 구성 요소를 사용하여 DataFrame의 상호작용 가능성을 강화하므로 표시된 버전으로 pandas DataFrame에서 데이터를 분류하고 필터링할 수 있습니다. Qgrid는 Jupyter 노트북 위젯입니다.

Qgrid를 사용하면 데이터를 유형별로 필터링하게 됩니다. 이는 Qgrid로 사용이 간편한 필터링 시스템을 이용할 수 있음을 의미합니다.

데이터 시각화와 관련하여 특히 유용한 Qgrid의 기능은 렌더링 기능을 구성하는 것입니다. 구성을 완료한 후에 사용자는 DataFrame에서 선택한 데이터를 읽을 수 있기 때문에 Qgrid는 데이터를 조작하거나 면밀히 검사해야 하는 사용자에게 특히 더 적합합니다.

Qgrid의 작동 원리를 간략히 살펴보겠습니다.

Qgrid를 사용하려면 특정 공간을 상위 레이아웃을 사용하거나 parentWidget ( )과 함께 사용하여 QGridLayout에 할당해야 합니다. 그러면 이 툴은 공간을 행과 열로 나누어 할당된 각 위젯을 적합한 셀에 배치합니다.

2. PivotTable.js

pandas와 사용하면 좋은 툴 목록에서 2위를 차지한 PivotTable.js는 피봇 테이블 라이브러리를 사용하는 JavaScript 모듈입니다. 이 툴을 사용하면 데이터를 요약하고 피봇하여 데이터와 더 쉽게 상호작용하고 접근성을 향상할 수 있습니다.

PivotTable.js의 주된 장점은 사용이 매우 간편하다는 것이며 클릭과 드래그만으로 기능을 모두 사용할 수 있습니다.

이 툴의 기능에는 pandas DataFrame의 데이터에 대한 통계적 분석과 더불어 단순 시각화가 포함됩니다. 이 툴은 padas DataFrame의 데이터를 간략하게 제공하여 한 눈에 더 쉽게 이해할 수 있도록 데이터를 피봇하고 요약할 수 있는 훌륭한 툴입니다. 또한, 테이블을 구축한 후에는 테이블 안에 포함된 데이터를 필터링할 수 있어 동일한 위젯으로 추가적인 기능을 제공합니다.

PivotTable.js는 pandas DataFrame에 피봇 차트와 테이블을 드래그하여 드롭하는 데도 유용합니다. 이 방법을 사용하여 Jupyter 및 IPython Notebook의 테이블을 이동할 수 있어 pandas 라이브러리에 입력하는 데이터의 유연성이 향상됩니다.

데이터 분석 애플리케이션

우리가 확인한 대로 pandas DataFrame은 데이터를 분석하려는 사용자에게 매우 유용합니다.

데이터로 작업하는 일은 복잡할 수 있습니다. 데이터가 생성되어도 데이터를 적합한 툴에 입력하거나 올바른 공식을 적용하지 않으면 데이터가 자동으로 정리되지는 않습니다. 이 때문에 데이터 분석 애플리케이션이 매우 유용합니다. 잘 정리된 데이터로 데이터를 분석하는 함수를 프로그래밍할 수 있다면 이 작업을 훨씬 더 빨리 수행할 수 있습니다.

이 섹션에서는 pandas DataFrame에 저장된 정보의 시각화를 지원하는 가장 적합한 세 가지 데이터 분석 애플리케이션에 대해 알아보겠습니다.

3. pandasGUI

pandasGUI는 Python 기반 라이브러리로, 데이터 조작 및 요약 통계를 지원하도록 개발되었습니다. pandasGUI는 GUI(graphical user interface)를 사용하여 DataFrame 라이브러리에 적용되며 인터페이스를 통해 작업원하는 을 수행합니다. pandasGUI는 UI(user interface)에서 명령을 입력하도록 설계되었으며, 프로그램은 pandas에서 명령을 실행합니다.

참고로 pandasGUI를 설치할 때는 별도의 새로운 가상 환경을 설정하는 것이 가장 좋습니다. 그 다음, 이 환경에서 pandasGUI 라이브러리를 설치하면 더 깨끗하게 설치할 수 있고 이 툴을 더 간편하게 사용할 수 있습니다.

설치와 설정이 완료되면 즉시 작업을 시작할 수 있습니다. DataFrame을 함수에 전달하면 pandasGUI가 자동으로 데이터 세트에서 가져온 행과 열로 채워 집니다. 이러한 방식으로 한 번에 두 개 이상의 데이터 세트를 로드할 수도 있어 더욱 빠르게 많은 정보를 쉽게 확인할 수 있습니다.

데이터가 함수로 성공적으로 전달되면 GUI를 통해 데이터에 액세스할 수 있습니다. 여기서부터 다양한 방식으로 데이터와 상호작용하고 편집, 분석, 조작할 수 있습니다. 이 툴은 제공되는 함수와 레이아웃 면에서 Excel 스프레이드 시트와 비슷한 방식으로 사용할 수 있습니다.

GUI 형식의 데이터는 다른 형식으로 복사하거나 붙여넣기할 수 있기 때문에 사용자는 차트나 그래프와 같은 시각화 유형으로 데이터를 매우 쉽게 이동할 수 있습니다.

기본적으로, pandasGUI는 매우 사용이 간편합니다. 또한, 경험이 적은 코더에게도 매우 사용자 친화적입니다. 그래서 이 툴이 pandas DataFrame에 유용한 데이터 시각화 툴 중에서 3위를 차지했습니다.

4. Tabloo

Tabloo는 "테이블 형식 데이터 시각화를 위한 미니멀 대시보드 앱"이라고 설명할 수 있습니다. Tabloo는 Python에서 실행할 수 있으므로 pandas와도 완전히 호환됩니다.

이 데이터 시각화 툴은 다른 유형의 백엔드 언어들과도 호환되지만 Flask 백엔드를 사용합니다. 이 백엔드는 사용자가 pandas DataBase에 입력하는 데이터를 시각적으로 이해할 수 있도록 지원하는 단순한 인터페이스를 제공하는 데 사용됩니다.

또한, Tabloo를 사용하면 데이터의 플롯을 그릴 수 있습니다. 이는 필요한 그래프와 차트를 보기 위해 외부 소프트웨어에 의존하지 않아도 된다는 의미이며 다른 툴을 사용하지 않고도 신속한 시각화를 수행하고 싶은 경우 편리합니다.

사용 방식면에서 Tabloo는 pandasGUI와 공통점이 많습니다. Tabloo도 데이터를 셀로 정리하여 pandasGUI에서 실행할 수 있는 동일한 기능 대부분을 사용하여 데이터를 조작할 수 있습니다. 그러나 Tabloo에서는 한 번에 두 개 이상의 필터를 적용하기가 조금 더 어려운 반면 pandasGUI는 한 번에 두 개 이상의 필터를 적용할 수 있습니다.

Tabloo 작동의 기반이 되는 구문은 pandasGUI와 마찬가지로 쿼리 구문입니다.

pandasGUI와 Tabloo의 중요한 차이점 한 가지는 pandasGUI의 기능이 더 풍부하다는 점입니다. Tabloo도 사용자에게 유용한 기능을 제공하지만 pandasGUI를 사용하면 데이터 취급 시 더 많은 옵션을 이용할 수 있습니다. 이러한 이유로 이 툴은 목록에서 더 낮은 순위를 차지하게 되었습니다.

5. D-Tale

Tabloo에 상응하는 아키텍처를 사용하는 D-Table은 이 목록의 마지막 순위를 차지합니다. D-Table은 React 프런트엔드와 함께 Tabloo와 매우 유사한 Flask 백엔드를 사용합니다. React 프런트엔드는 D-Table의 광범위한 옵션들을 최대한 활용하도록 지원합니다.

D-Table의 사용자 인터페이스는 이 애플리케이션의 이름에서 알 수 있듯이 매우 상세합니다. pandas 데이터를 D-Table로 가져와서 액세스할 수 있습니다. 그러면 데이터가 자동으로 행과 열로 정리하여 사용자가 원하는 방식대로 데이터 세트를 정렬하는 다양한 정렬 기능을 제공합니다. 예를 들면, 선택된 행 또는 열에 Lock(잠금), Hide(숨기기), Delete(삭제) 및 Rename(이름 재지정)과 같은 기능을 사용할 수 있습니다.

또한 D-Table을 사용하면 차트부터 히스토그램 그리고 그 외의 형태로 데이터를 시각화할 수 있습니다.

D-Table의 유용한 기능 중 한 가지는 언제든지 애플리케이션에서 코드를 내보낼 수 있다는 것입니다. 그러면 이 코드를 다른 애플리케이션에 붙여넣어 코드의 유효성을 확인하거나 다른 방식으로 데이터를 처리할 수 있습니다.

D-Table을 통해 데이터 형식 지정을 수행할 수도 있습니다. 예를 들어, 데이터 세트에 날짜가 포함되어 있다고 가정해 보겠습니다. 날짜의 월과 일을 마침표가 아니라 백슬래시로 구분하고 싶다면 D-Table에서 조정할 수 있습니다.

pandas DataFrame 요약

pandas DataFrame으로 데이터를 쉽고 빠르게 처리, 조작, 분석하세요.

pandas DataFrame은 Python과 함께 사용하도록 설계된 라이브러리로, Python에 익숙하지 않은 사용자도 사용할 수 있습니다. 또한, 이 라이브러리는 다양한 형식의 데이터를 처리할 수 있으므로 어떤 형식의 데이터라도 쉽게 입력할 수 있습니다.

지금까지 pandas를 사용할 경우 얻을 수 있는 가장 큰 장점들에 대해 이미 설명했지만 다시 한 번 간단히 요약해서 말씀드리겠습니다. pandas DataFrame을 사용하면 데이터를 신속하고 간편하게 집계할 수 있습니다. pandas DataFrame은 다양한 시각화 툴과 호환되어 유연성을 극대화합니다. 다른 스크립팅 언어와 다르게, pandas Frame은 단 몇 줄의 코드 명령으로도 많은 작업을 수행할 수 있어 더욱 간편하게 일상적으로 사용할 수 있습니다.

한 마디로 표현하자면 pandas DataFrame의 유용성으로 데이터를 처리하고자 하는 누구나 쉽게 활용할 수 있습니다.

추가 자료

용어집으로 돌아가기