특정 값의 발생 수를 세는 Python Panda
특정 값이 한 열에 나타나는 횟수를 찾으려고 합니다.
데이터 프레임을 만들었습니다.data = pd.DataFrame.from_csv('data/DataSet2.csv')
그리고 이제 열에 어떤 것이 나타나는 횟수를 찾고 싶습니다.어떻게 하는 거지?
저는 아래와 같이 교육란을 보고 시간을 세고 있는 줄 알았습니다.?
일어나다.
아래 코드는 제가 횟수를 찾으려고 한다는 것을 보여줍니다.9th
코드를 실행하면 오류가 나타납니다.
코드
missing2 = df.education.value_counts()['9th']
print(missing2)
오류
KeyError: '9th'
생성할 수 있습니다.subset
사용자의 상태와 함께 데이터를 사용합니다.len
:
print df
col1 education
0 a 9th
1 b 9th
2 c 8th
print df.education == '9th'
0 True
1 True
2 False
Name: education, dtype: bool
print df[df.education == '9th']
col1 education
0 a 9th
1 b 9th
print df[df.education == '9th'].shape[0]
2
print len(df[df['education'] == '9th'])
2
성능은 흥미롭지만 가장 빠른 솔루션은 numpy 어레이를 비교하는 것입니다.sum
:
코드:
import perfplot, string
np.random.seed(123)
def shape(df):
return df[df.education == 'a'].shape[0]
def len_df(df):
return len(df[df['education'] == 'a'])
def query_count(df):
return df.query('education == "a"').education.count()
def sum_mask(df):
return (df.education == 'a').sum()
def sum_mask_numpy(df):
return (df.education.values == 'a').sum()
def make_df(n):
L = list(string.ascii_letters)
df = pd.DataFrame(np.random.choice(L, size=n), columns=['education'])
return df
perfplot.show(
setup=make_df,
kernels=[shape, len_df, query_count, sum_mask, sum_mask_numpy],
n_range=[2**k for k in range(2, 25)],
logx=True,
logy=True,
equality_check=False,
xlabel='len(df)')
몇 가지 방법 사용count
또는sum
In [338]: df
Out[338]:
col1 education
0 a 9th
1 b 9th
2 c 8th
In [335]: df.loc[df.education == '9th', 'education'].count()
Out[335]: 2
In [336]: (df.education == '9th').sum()
Out[336]: 2
In [337]: df.query('education == "9th"').education.count()
Out[337]: 2
의 발생을 세는 우아한 방법'?'
또는 열에 있는 기호는 데이터 프레임 개체의 내장 함수를 사용하는 것입니다.
'Automobile' 데이터 세트를 로드했다고 가정합니다.df
물건.결측값이 포함된 열을 알 수 없습니다('?'
기호), 다음을 수행합니다.
df.isin(['?']).sum(axis=0)
DataFrame.isin(values)
공식 문서에는 다음과 같이 나와 있습니다.
DataFrame의 각 요소가 값에 포함되어 있는지 여부를 보여주는 부울 DataFrame을 반환합니다.
참고:isin
가 반복 가능한 항목을 입력으로 허용하므로 대상 기호가 포함된 목록을 이 함수에 전달해야 합니다.df.isin(['?'])
는 다음과 같이 부울 데이터 프레임을 반환합니다.
symboling normalized-losses make fuel-type aspiration-ratio ...
0 False True False False False
1 False True False False False
2 False True False False False
3 False False False False False
4 False False False False False
5 False True False False False
...
각 열의 대상 기호 발생 횟수를 계산하려면 다음과 같이 하십시오.sum
위 데이터 프레임의 모든 행에 대해 다음과 같이 표시합니다.axis=0
최종(잘린) 결과는 우리가 기대하는 것을 보여줍니다.
symboling 0
normalized-losses 41
...
bore 4
stroke 4
compression-ratio 0
horsepower 2
peak-rpm 2
city-mpg 0
highway-mpg 0
price 4
사용해 보십시오.
(df[education]=='9th').sum()
쉽지만 효율적이지 않음:
list(df.education).count('9th')
Pandas 데이터 프레임의 열에서 발생(고유 값)을 카운트하는 간단한 예제:
import pandas as pd
# URL to .csv file
data_url = 'https://yoursite.com/Arrests.csv'
# Reading the data
df = pd.read_csv(data_url, index_col=0)
# pandas count distinct values in column
df['education'].value_counts()
출력:
Education 47516
9th 41164
8th 25510
7th 25198
6th 25047
...
3rd 2
2nd 2
1st 2
Name: name, Length: 190, dtype: int64
열의 특정 값을 찾기 위해 아래 코드를 사용할 수 있습니다.
선호도에 상관없이 원하는 방법을 사용할 수 있습니다.
df.col_name.value_counts().Value_you_are_looking_for
타이타닉 데이터 세트의 예를 들어보겠습니다.
df.Sex.value_counts().male
이것은 배에 있는 모든 남성의 수를 제공합니다. 숫자 데이터를 계산하려면 위의 방법을 사용할 수 없습니다. value_counts()는 일련의 데이터 유형에만 사용되므로 실패하기 때문입니다. 따라서 두 번째 방법 예제를 사용할 수 있습니다.
두 번째 방법은 입니다.
#this is an example method of counting on a data frame
df[(df['Survived']==1)&(df['Sex']=='male')].counts()
이것은 value_()counts만큼 효율적이지는 않지만 데이터 프레임의 값을 세고 싶다면 확실히 도움이 될 것입니다.
편집 - 중간에 공백이 있는 항목을 찾으십시오.
사용할 수 있습니다.
df.country.count('united states')
.
저는 이것이 더 쉬운 해결책이 될 수 있다고 생각합니다.다음과 같은 데이터 프레임이 있다고 가정합니다.
DATE LANG POSTS
2008-07-01 c# 3
2008-08-01 assembly 8
2008-08-01 javascript 2
2008-08-01 c 85
2008-08-01 python 11
2008-07-01 c# 3
2008-08-01 assembly 8
2008-08-01 javascript 62
2008-08-01 c 85
2008-08-01 python 14
다음과 같이 LANG 항목의 합계가 발생하는 것을 확인할 수 있습니다.
df.groupby('LANG').sum()
그리고 당신은 각각의 개별 언어의 합을 가질 것입니다.
언급URL : https://stackoverflow.com/questions/35277075/python-pandas-counting-the-occurrences-of-a-specific-value
'source' 카테고리의 다른 글
객체의 속성을 찾는 방법은 무엇입니까? (0) | 2023.08.20 |
---|---|
다른 분기의 특정 커밋에서 분기를 생성하는 방법 (0) | 2023.08.20 |
CSS 미니머에 대한 추천 사항이 있습니까? (0) | 2023.08.20 |
문서.query선택기 하나의 요소에 여러 개의 데이터 속성이 있습니다. (0) | 2023.08.20 |
MySQL 데이터베이스를 선택 취소하는 방법은 무엇입니까? (0) | 2023.08.20 |