데이터 프레임 열에서 값이 발생하는 빈도 카운트
데이터셋이 있습니다.
category
cat a
cat b
cat a
(고유값과 빈도를 표시)와 같은 것을 반환할 수 있으면 좋겠습니다.
category freq
cat a 2
cat b 1
@DSM 코멘트로 사용합니다.
In [37]:
df = pd.DataFrame({'a':list('abssbab')})
df['a'].value_counts()
Out[37]:
b 3
a 2
s 2
dtype: int64
또한.groupby
그리고.count
여기서 고양이 가죽을 벗기는 방법은 여러 가지가 있습니다.
In [38]:
df.groupby('a').count()
Out[38]:
a
a
a 2
b 3
s 2
[3 rows x 1 columns]
원래 데이터 프레임 사용에 주파수를 다시 추가하고 싶은 경우transform
정렬된 인덱스를 반환하려면:
In [41]:
df['freq'] = df.groupby('a')['a'].transform('count')
df
Out[41]:
a freq
0 a 2
1 b 3
2 s 2
3 s 2
4 b 3
5 a 2
6 b 3
[7 rows x 2 columns]
모든 열에 적용하려는 경우 다음을 사용할 수 있습니다.
df.apply(pd.value_counts)
그러면 각 열에 열 기반 집계 함수(이 경우 value_counts)가 적용됩니다.
df.category.value_counts()
이 짧은 코드 행이 원하는 출력을 제공합니다.
열 이름에 공백이 있는 경우 사용할 수 있습니다.
df['category'].value_counts()
df.apply(pd.value_counts).fillna(0)
value_counts - 고유한 값의 카운트를 포함하는 개체를 반환합니다.
적용 - 모든 열의 빈도를 카운트합니다.설정했을 경우axis=1
모든 행에 빈도가 표시됩니다.
fillna(0) - 출력을 더욱 화려하게 만듭니다.NaN을 0으로 변경했습니다.
0.18.1의 경우groupby
와 함께count
는, 일의의 값의 빈도를 나타내지 않습니다.
>>> df
a
0 a
1 b
2 s
3 s
4 b
5 a
6 b
>>> df.groupby('a').count()
Empty DataFrame
Columns: []
Index: [a, b, s]
단, 고유값과 빈도는 다음과 같이 쉽게 결정됩니다.size
:
>>> df.groupby('a').size()
a
a 2
b 3
s 2
와 함께df.a.value_counts()
정렬된 값(내림차순, 즉 가장 큰 값 먼저)이 기본적으로 반환됩니다.
df의 여러 열에 대해 목록 이해 및 value_counts 사용
[my_series[c].value_counts() for c in list(my_series.select_dtypes(include=['O']).columns)]
https://stackoverflow.com/a/28192263/786326
DataFrame에 같은 유형의 값이 있는 경우 다음과 같이 설정할 수도 있습니다.return_counts=True
numpy.disclos로
index, counts = np.unique(df.values,return_counts=True)
값이 정수일 경우 np.bincount()가 더 빠를 수 있습니다.
모두가 말했듯이, 보다 빠른 해결책은 다음과 같습니다.
df.column_to_analyze.value_counts()
단, 이 스키마를 사용하여 데이터 프레임의 출력을 사용하는 경우:
df input:
category
cat a
cat b
cat a
df output:
category counts
cat a 2
cat b 1
cat a 2
다음과 같이 할 수 있습니다.
df['counts'] = df.category.map(df.category.value_counts())
df
먼저 카테고리로 칼럼을 방송하여 판다와 함께 이 작업을 수행할 수도 있습니다.dtype="category"
예.
cats = ['client', 'hotel', 'currency', 'ota', 'user_country']
df[cats] = df[cats].astype('category')
그리고 나서 전화한다.describe
:
df[cats].describe()
이렇게 하면 값 카운트와 더 많은 값을 알 수 있습니다. : )
client hotel currency ota user_country
count 852845 852845 852845 852845 852845
unique 2554 17477 132 14 219
top 2198 13202 USD Hades US
freq 102562 8847 516500 242734 340992
라이브러리가 없는 경우 대신 다음을 수행할 수 있습니다.
def to_frequency_table(data):
frequencytable = {}
for key in data:
if key in frequencytable:
frequencytable[key] += 1
else:
frequencytable[key] = 1
return frequencytable
예제:
to_frequency_table([1,1,1,1,2,3,4,4])
>>> {1: 4, 2: 1, 3: 1, 4: 2}
모든 Data Frame 컬럼리스트에서 정상적으로 동작할 수 있다고 생각합니다.
def column_list(x):
column_list_df = []
for col_name in x.columns:
y = col_name, len(x[col_name].unique())
column_list_df.append(y)
return pd.DataFrame(column_list_df)
column_list_df.rename(columns={0: "Feature", 1: "Value_count"})
"column_list" 함수는 열 이름을 확인한 후 각 열 값의 고유성을 확인합니다.
@metatoaster는 이미 이 점을 지적했습니다.에 도전하다Counter
불타오르고 있어요
import pandas as pd
from collections import Counter
import timeit
import numpy as np
df = pd.DataFrame(np.random.randint(1, 10000, (100, 2)), columns=["NumA", "NumB"])
타이머
%timeit -n 10000 df['NumA'].value_counts()
# 10000 loops, best of 3: 715 µs per loop
%timeit -n 10000 df['NumA'].value_counts().to_dict()
# 10000 loops, best of 3: 796 µs per loop
%timeit -n 10000 Counter(df['NumA'])
# 10000 loops, best of 3: 74 µs per loop
%timeit -n 10000 df.groupby(['NumA']).count()
# 10000 loops, best of 3: 1.29 ms per loop
건배!
다음 코드는 "smaller_dat1"이라는 데이터 프레임의 "Total_score"라는 열에 있는 다양한 값에 대한 빈도 테이블을 만든 다음 값 "300"이 열에 나타나는 횟수를 반환합니다.
valuec = smaller_dat1.Total_score.value_counts()
valuec.loc[300]
n_values = data.income.value_counts()
첫 번째 고유 값 수
n_at_most_50k = n_values[0]
두 번째 고유 값 수
n_greater_50k = n_values[1]
n_values
출력:
<=50K 34014
>50K 11208
Name: income, dtype: int64
출력:
n_greater_50k,n_at_most_50k:-
(11208, 34014)
your data:
|category|
cat a
cat b
cat a
솔루션:
df['freq'] = df.groupby('category')['category'].transform('count')
df = df.drop_duplicates()
언급URL : https://stackoverflow.com/questions/22391433/count-the-frequency-that-a-value-occurs-in-a-dataframe-column
'programing' 카테고리의 다른 글
JSLint 오류 '의 본문을 if 문으로 감싸야 한다'는 것은 무엇을 의미합니까? (0) | 2022.10.04 |
---|---|
재귀 쿼리에 CTE 적용 (0) | 2022.10.04 |
Vuex - 변환 핸들러를 무시하고 항상 저장 데이터를 직접 변환하는 것이 좋은 생각입니까? (0) | 2022.10.04 |
MySQL 데이터베이스를 제거하려면 어떻게 해야 합니까? (0) | 2022.10.04 |
"컬럼에 대한 데이터가 너무 깁니다." - 왜요? (0) | 2022.10.04 |