Python:如何检查数据框中的出现次数和top(n)值?

时间:2016-08-01 10:04:56

标签: python python-3.x pandas

我想计算一个数据框中国家/地区的出现次数,下面是样本,并按发生次数查找前2个国家/地区。

         Date            Location
0  09/17/1908            Virginia
1  07/12/1912          New Jersey
2  08/06/1913              Canada
3  09/09/1913             England
4  10/17/1913             Germany
5  03/05/1915             Belgium
6  09/03/1915             Germany
7  07/28/1916            Bulgeria
8  09/24/1916             England
9  10/01/1916             England

结果值应如下所示:

Location  Count
England     3
Germany     2

2 个答案:

答案 0 :(得分:1)

countCollection = df['collection'].value_counts()

.value_counts()会计算数据框中名为collection的集合中的项目。

另外,如你所说,你是Python的新手,要获得最终价值:

countCollection["a"]
对于具有键“a”的行,

将从返回的计数集合中获取计数值。

答案 1 :(得分:0)

您可以将groupbysize一起使用:

counts = df.groupby('Location').size()

counts的类型为pandas.Series。您可以通过

订购
counts.sort_values(inplace=True)

比较Nick的答案:

import pandas as pd
import numpy as np

# number of items in list
N = 1e4

# create a list uniformely samples characters
l = np.random.choice( list('abcd'), N )

# create a DataFrame
df = pd.DataFrame( l, columns=['char'] )

使用ipython magic命令timeit进行N=1e4

In [1]: %timeit df.char.value_counts()
1000 loops, best of 3: 1.34 ms per loop

In [2]: %timeit df.groupby('char').size()
1000 loops, best of 3: 1.01 ms per loop

N=1e6

In [1]: %timeit df.char.value_counts()
10 loops, best of 3: 64.2 ms per loop

In [2]: %timeit df.groupby('char').size()
10 loops, best of 3: 73.2 ms per loop

对于较小的DataFrame,groupby& sizevalue_counts快,但对于较大的DateFrame,value_countsgroupby& size