English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Pandas 분류 데이터

Pandas 분류 데이터의 작업 예제

데이터는 일반적으로 실시간으로 중복된 텍스트 열을 포함합니다. 성별, 국가/지역 및 코드와 같은 기능은 항상 반복됩니다. 이는 분류 데이터의 예입니다.
분류 변수는 제한된 수의 가능한 값만을 취할 수 있으며, 일반적으로 고정된 수의 값만을 가집니다. 고정 길이 외에도 분류 데이터는 순서를 가질 수 있지만 수학적 연산을 수행할 수 없습니다. 분류는 pandas 데이터 유형입니다.

분류 데이터 유형은 다음과 같은 경우에 유용합니다

빈번하게 나타나는 단어 값만을 포함한 문자열 변수. 이와 같은 문자열 변수를 분류 변수로 변환하여 메모리를 절약할 수 있습니다.

변수의 단어 순서와 논리적 순서( "첫 번째", "두 번째", "세 번째")가 다릅니다. 순서를 지정하여 변환한 카테고리에 대해 정렬하고 최소 값을 지정할 수 있습니다./최대는 논리적 순서 대신 단어 순서를 사용합니다.

다른 파이썬 라이브러리의 신호로, 이 열은 분류 변수로 간주되어야 합니다(예: 적절한 통계 방법이나 그래프 유형을 사용하여).

객체 생성

카테고리 객체는 여러 가지 방법으로 생성할 수 있습니다. 다음은 다른 방법을 설명합니다:

카테고리

pandas 객체를 생성할 때 dtype를 "category"으로 지정하여

 import pandas as pd
 s = pd.Series(["a","b","c","a"], dtype="category")
 print(s)

실행 결과는 다음과 같습니다:

 0 a
 1 b
 2 c
 3 a
 dtype: category
 Categories (3, object): [a, b, c]

series 객체에 전달된 요소 수가4하지만 카테고리는 단지3에서 동일한 카테고리를 观察 합니다.

pd.Categorical

표준 파이썬 패키지의 카테고리 생성자를 사용하여 카테고리 객체를 생성할 수 있습니다.

pandas.Categorical(values, categories, ordered)

다음 예제를 보겠습니다-

 import pandas as pd
 cat = pd.Categorical(['a', 'b', 'c', 'a', 'b', 'c'])
 print(cat)

실행 결과는 다음과 같습니다:

 [a, b, c, a, b, c]
 Categories (3, object): [a, b, c]

다른 예제를 다시 보겠습니다

 import pandas as pd
 cat = cat = pd.Categorical(['a','b','c','a','b','c','d'], ['c', 'b', 'a'])
 print(cat)

실행 결과는 다음과 같습니다:

 [a, b, c, a, b, c, NaN]
 Categories (3, object): [c, b, a]

여기서 두 번째 매개변수는 범주를 의미합니다. 따라서, 범주에 없는 어떤 값도 NaN으로 간주됩니다.
다음 예제를 보세요:

 import pandas as pd
 cat = cat = pd.Categorical(['a','b','c','a','b','c','d'], ['c', 'b', 'a'], ordered=True)
 print(cat)

실행 결과는 다음과 같습니다:

 [a, b, c, a, b, c, NaN]
 Categories (3, object): [c < b < a]

논리적으로 이順序는 a가 b보다 크고 b가 c보다 큰 것을 의미합니다.

설명

use.describe()의 범주 데이터 명령어를 사용하면, 시리즈나 데이터 프레임의 타입 문자열로 유사한 출력을 얻습니다.

 import pandas as pd
 import numpy as np
 cat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
 df = pd.DataFrame({"cat":cat, "s":["a", "c", "c", np.nan]})
 print(df.describe())
 print(df["cat"].describe())

실행 결과는 다음과 같습니다:

    cat s
count    3 3
unique   2 2
top      c c
freq     2 2
count     3
unique    2
top       c
freq      2
Name: cat, dtype: object

カテゴリの属性の取得

obj.cat.categoriesコマンドは、オブジェクトのカテゴリを取得するために使用されます。

 import pandas as pd
 import numpy as np
 s = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
 print(s.categories)

실행 결과는 다음과 같습니다:

  Index([u'b', u'a', u'c'], dtype='object')

obj.orderedコマンドは、オブジェクトの順序を取得するために使用されます。

 import pandas as pd
 import numpy as np
 cat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
 print(cat.ordered)

실행 결과는 다음과 같습니다:

   False

この関数はfalseを返します、なぜなら、私たちは任何の順序を指定していないからです。

カテゴリのリネーム

カテゴリのリネームは、series.cat.categories属性に新しい値を割り当てることで完了されます。

 import pandas as pd
 s = pd.Series(["a","b","c","a"], dtype="category")
 s.cat.categories = ["Group %s" % g for g in s.cat.categories]
 print(s.cat.categories)

실행 결과는 다음과 같습니다:

Index([u'Group a', u'Group b', u'Group c'], dtype='object')

初期カテゴリ[a,b,c]は、オブジェクトのs.cat.categories属性で更新されます。

新しいカテゴリの追加

Categorical.add.categories()メソッドを使用して、新しいカテゴリを追加できます。

 import pandas as pd
 s = pd.Series(["a","b","c","a"], dtype="category")
 s = s.cat.add_categories([4])
 print(s.cat.categories)

실행 결과는 다음과 같습니다:

Index([u'a', u'b', u'c', 4], dtype='object')

カテゴリの削除

Categorical.remove_categories()メソッドを使用して、必要でないカテゴリを削除できます。

 import pandas as pd
 s = pd.Series(["a","b","c","a"], dtype="category")
 print(("オリ지널 オブジェクト:"))
 print(s)
 print(("After removal:"))
 print(s.cat.remove_categories("a"))

실행 결과는 다음과 같습니다:

 Original object:
 0 a
 1 b
 2 c
 3 a
 dtype: category
 Categories (3, object): [a, b, c]
 After removal:
 0 NaN
 1 b
 2 c
 3 NaN
 dtype: category
 Categories (2, object): [b, c]

범주 데이터 비교

범주 데이터를 다른 객체와 비교할 수 있는 세 가지 경우가 있습니다:

동일한 길이의 범주 데이터와 같은 객체(리스트, 시리즈, 배열, ...)와의 등호(==과!=) 비교.

정렬== True이고 범주가 같을 때, 범주 데이터를 다른 범주 시리즈와의 모든 비교(==,!=,>,> =,  <와<=)。< div>    

분류 데이터와 수치의 모든 비교.

아래의 예제를 보세요:

 import pandas as pd
 cat = pd.Series([1,2,3]).astype("category", categories=[1,2,3], ordered=True)
 cat1 = pd.Series([2,2,2]).astype("category", categories=[1,2,3], ordered=True)
 print(cat>cat1)

실행 결과는 다음과 같습니다:

 0  False
 1  False
 2  True
 dtype: bool