English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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에서 동일한 카테고리를 观察 합니다.
표준 파이썬 패키지의 카테고리 생성자를 사용하여 카테고리 객체를 생성할 수 있습니다.
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