Python Pandas-범주 형 데이터

종종 실시간으로 데이터에는 반복적 인 텍스트 열이 포함됩니다. 성별, 국가 및 코드와 같은 기능은 항상 반복적입니다. 다음은 범주 형 데이터의 예입니다.

범주 형 변수는 제한적이고 일반적으로 고정 된 수의 가능한 값만 가질 수 있습니다. 고정 길이 외에 범주 형 데이터에는 순서가있을 수 있지만 숫자 연산을 수행 할 수 없습니다. 범주 형은 Pandas 데이터 유형입니다.

범주 형 데이터 유형은 다음과 같은 경우에 유용합니다.

  • 몇 가지 다른 값으로 만 구성된 문자열 변수입니다. 이러한 문자열 변수를 범주 형 변수로 변환하면 메모리가 절약됩니다.

  • 변수의 어휘 순서는 논리 순서 ( "1", "2", "3")와 동일하지 않습니다. 범주 형으로 변환하고 범주에 순서를 지정하면 정렬 및 최소 / 최대는 어휘 순서 대신 논리적 순서를 사용합니다.

  • 다른 Python 라이브러리에 대한 신호로서이 열이 범주 형 변수로 처리되어야한다는 신호입니다 (예 : 적절한 통계 방법 또는 플롯 유형 사용).

개체 생성

범주 형 개체는 여러 방법으로 만들 수 있습니다. 다른 방법은 아래에 설명되어 있습니다.

범주

pandas 객체 생성에서 dtype을 "category"로 지정합니다.

import pandas as pd

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

이것의 output 다음과 같습니다-

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

시리즈 객체에 전달되는 요소의 수는 4 개이지만 범주는 3 개입니다. 출력 카테고리에서 동일하게 관찰하십시오.

pd. 범주

표준 Pandas Categorical 생성자를 사용하여 범주 객체를 만들 수 있습니다.

pandas.Categorical(values, categories, ordered)

예를 들어 보겠습니다.

import pandas as pd

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

이것의 output 다음과 같습니다-

[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

이것의 output 다음과 같습니다-

[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

이것의 output 다음과 같습니다-

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

논리적으로 순서는 다음을 의미합니다. a 보다 큼 bb 보다 큼 c.

기술

사용 .describe() 범주 형 데이터에 대한 명령을 실행하면 Series 또는 DataFrametype 끈.

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()

이것의 output 다음과 같습니다-

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 명령을 사용하여 categories of the object.

import pandas as pd
import numpy as np

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

이것의 output 다음과 같습니다-

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

이것의 output 다음과 같습니다-

False

반환 된 함수 false 주문을 지정하지 않았기 때문입니다.

카테고리 이름 바꾸기

범주 이름 변경은 새 값을 series.cat.categoriesseries.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

이것의 output 다음과 같습니다-

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

이것의 output 다음과 같습니다-

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 ("Original object:")
print s

print ("After removal:")
print s.cat.remove_categories("a")

이것의 output 다음과 같습니다-

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]

범주 형 데이터 비교

범주 형 데이터를 다른 객체와 비교하는 것은 세 가지 경우에 가능합니다.

  • 범주 형 데이터와 길이가 같은 목록 형 객체 (목록, 시리즈, 배열, ...)와 같음 (== 및! =)을 비교합니다.

  • ordered == True이고 범주가 동일한 경우 범주 형 데이터의 모든 비교 (==,! =,>,> =, <및 <=).

  • 스칼라에 대한 범주 형 데이터의 모든 비교.

다음 예를 살펴보십시오-

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

이것의 output 다음과 같습니다-

0  False
1  False
2  True
dtype: bool