시리즈에서 값에 대한 정보를 추출하는 메소드들에 대해서 살펴보자.
다음과 같은 시리즈를 만들자.
시 = pd.Series(['ㄱ', 'ㄴ', 'ㄹ', 'ㄱ', 'ㄴ', 'ㄹ', 'ㄴ', 'ㄷ'])
시리즈 값들 중 유일한 값들을 unique 메소드를 이용해서 찾아내자.
유일 = 시.unique()
유일
array(['ㄱ', 'ㄴ', 'ㄹ', 'ㄷ'], dtype=object)
value_counts 메소드를 이용해 값들에 대한 빈도수를 찾을 수 있다.
시.value_counts()
ㄴ 3
ㄹ 2
ㄱ 2
ㄷ 1
dtype: int64
판다스 함수를 이용해서도 빈도수를 구할 수 있다.
pd.value_counts(시, sort=False)
ㄱ 2
ㄹ 2
ㄷ 1
ㄴ 3
dtype: int64
isin 메소드를 이용해
값들이 시리즈 또는 데이터프레임의 열에 속했는지를 판단해 논리형 배열로 반환한다.
거름 = 시.isin(['ㄱ', 'ㄴ'])
거름
0 True
1 True
2 False
3 True
4 True
5 False
6 True
7 False
dtype: bool
시[거름]
0 ㄱ
1 ㄴ
3 ㄱ
4 ㄴ
6 ㄴ
dtype: object
isin : 전달된 값의 시퀀스에 각 시리즈 값이 포함되어 있는지 여부를 나타내는 bool 배열 계산
match : 고유한 값 배열의 각 값에 대한 정수 인덱스 를 계산하여 데이터 정렬 및 join 유형의 작업에 유용함
unique : 시리즈에서 관찰된 순서대로 고유한 값의 배열을 계산
value_counts: 고유한 값을 인덱스로, 빈도를 값으로 포함하는 시리즈를 반환하며, 빈도 순으로 내림차순으로 정렬됨
데이터프레임 열에 대한 빈도수를 다음과 같이 계산한다.
데 = pd.DataFrame({'가': ['a', 'c', 'd', 'c', 'd'],
'나': ['b', 'c', 'a', 'b', 'c'],
'다': ['a', 'e', 'b', 'd', 'e']})
데
가 나 다
0 a b a
1 c c e
2 d a b
3 c b d
4 d c e
빈도수를 측정할 때 결측치는 0 으로 채운다.
데.apply(pd.value_counts).fillna(0) 를 적용한다.
데.apply(pd.value_counts).fillna(0)
가 나 다
a 1.0 1.0 1.0
b 0.0 2.0 1.0
c 2.0 2.0 0.0
d 2.0 0.0 1.0
e 0.0 0.0 2.0
데이터프레임 가열에 a가 1개,b는 0개 c는 2개, …등을 의미한다.
빈도수 코드 설명
pd.value_counts: 각 열의 고유한 값에 대한 빈도를 계산한다.
apply(pd.value_counts): 데이터프레임 데의 각 열에 대해 value_counts 함수를 적용하여,
각 값이 해당 열에서 몇 번 나타나는지 계산한다.
fillna(0): 계산된 빈도 데이터프레임에서 값이 존재하지 않는(빈도수가 없는) 위치를 0으로 채운다.