1. ホーム
  2. python

[解決済み] Python Pandas 特定の値の出現回数を数える

2023-02-17 10:39:53

質問

ある列の中にある値が何回現れるかを調べたい。

でデータフレームを作りました。 data = pd.DataFrame.from_csv('data/DataSet2.csv')

でデータフレームを作成したのですが、ある列に何かが現れた回数を調べたいのです。これはどのように行われますか?

私は下のように、教育欄を見て回数を数えているのだと思いました。 ? が発生する。

以下のコードでは、何回目の 9th が表示される回数を調べようとしており、コードを実行するとこのようなエラーが発生します。

コード

missing2 = df.education.value_counts()['9th']
print(missing2)

エラー

KeyError: '9th'

どのように解決するのですか?

あなたは subset を作成し shape または 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)')