簡體   English   中英

Python Pandas:計算序列中的元素出現次數

[英]Python Pandas: Counting element occurrences in series

如何找到系列元素計數? 使用此代碼:

import pandas as pd

d = { 'x' : [1,2,2,2,3,4,5,5,7] }
df = pd.DataFrame(d)
cnt1 = len(df[df.x == 1])
cnt2 = len(df[df.x == 2])
cnt3 = len(df[df.x == 3])
...

並沒有太大幫助。 有什么方法可以計數元素出現的次數,因此結果將是帶有“元素,計數”對的字典,如下所示:

cnts = {'1':1, '2': 3, '3':1, ...}

還是以其他易於查找和迭代的結構?

您可以使用value_counts 它返回一個可以像字典一樣查找的Series,並且可以對其進行迭代:

df['x'].value_counts(sort=False)
Out: 
1    1
2    3
3    1
4    1
5    2
7    1
Name: x, dtype: int64

如果需要,也可以將其轉換為字典:

df['x'].value_counts().to_dict()
Out: {1: 1, 2: 3, 3: 1, 4: 1, 5: 2, 7: 1}

這是獲得頻率分布的兩種方法

In [8]: df.groupby('x').size().to_dict()
Out[8]: {1: 1, 2: 3, 3: 1, 4: 1, 5: 2, 7: 1}

In [9]: df['x'].value_counts().to_dict()
Out[9]: {1: 1, 2: 3, 3: 1, 4: 1, 5: 2, 7: 1}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM