Py学习  »  Python

在python或r中,是否有更有效的方法来聚合数据集并计算频率?

czlsws • 5 年前 • 1398 次点击  

我有一个数据集[0,1,1,2],我想聚合它。 为此,我必须计算并将“频率”:1/4手动放入数据帧。这是密码。

>>> df = pd.DataFrame({'value':[0, 1, 1, 2],
...             'frequency':1/4})
>>> df.groupby('value').sum()
       frequency
value           
0           0.25
1           0.50
2           0.25

有没有一种更有效的方法可以在python或r中聚合数据集并自动计算频率?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39143
 
1398 次点击  
文章 [ 5 ]  |  最新文章 5 年前
nicktids
Reply   •   1 楼
nicktids    6 年前

如果不使用熊猫,你可以使用柜台

from collections import Counter
z = [0,1,1,2]
Counter(z)
Counter({1: 2, 0: 1, 2: 1})

然后到一个数据帧

x = Counter(z)
df = pd.DataFrame.from_dict(x, orient='index').reset_index()

然后取值除以4(你想要的频率)

DJJ
Reply   •   2 楼
DJJ    6 年前

R 你可以做点什么

library(data.table)
dt <- data.table(sample(0:2,100,replace=TRUE))
dt[,.N/nrow(dt),V1]

## > dt[,.N/nrow(dt),V1]

##    V1   V1
## 1:  1 0.33
## 2:  2 0.32
## 3:  0 0.35
WeNYoBen
Reply   •   3 楼
WeNYoBen    6 年前

在R

prop.table(table(dat$value))

   0    1    2 
0.25 0.50 0.25 

在巨蟒中,麻木

import numpy as np 
u,c=np.unique(df.value,return_counts=True)
pd.Series(c/c.sum(),index=u)
0    0.25
1    0.50
2    0.25
dtype: float64
Justice_Lords
Reply   •   4 楼
Justice_Lords    6 年前
df['value'].value_counts(normalize=True,sort=False)

也许你可以试试这个…

参考:

  1. pandas.Series.value_counts()
Jay
Reply   •   5 楼
Jay    6 年前
import pandas as pd
pd.Series([0, 1, 1, 2]).value_counts(normalize=True, sort=False)