加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Pandas值的概率

发布时间:2020-12-16 21:33:21 所属栏目:Python 来源:网络整理
导读:我试图在数据帧中找到给定单词的概率,但我得到一个AttributeError:’Series’对象在我当前的设置中没有属性’columns’错误.希望你能帮我找到错误的位置. 我开始使用类似于下面的数据框,并使用以下函数对其进行转换以查找每个单词的总计数. query countfoo
我试图在数据帧中找到给定单词的概率,但我得到一个AttributeError:’Series’对象在我当前的设置中没有属性’columns’错误.希望你能帮我找到错误的位置.

我开始使用类似于下面的数据框,并使用以下函数对其进行转换以查找每个单词的总计数.

query          count
foo bar        10
super          8 
foo            4
super foo bar  2

功能如下:

def _words(df):
    return df['query'].str.get_dummies(sep=' ').T.dot(df['count'])

导致下面的df(注意’foo’是16,因为它在整个df中出现16次):

bar      12
foo      16
super    10

当尝试在df中找到给定关键字的概率时会出现问题,该关键字当前不附加列名.下面是我目前正在使用的内容,但是抛出“AttributeError:’Series’对象没有属性’columns’”错误.

def _probability(df,query):
  return df[query] / df.groupby['count'].sum()

我希望调用_probability(df,’foo’)将返回0.421052632(16 /(12 16 10)).提前致谢!

解决方法

你可以在它的末尾扔一个管道:
df['query'].str.get_dummies(sep=' ').T.dot(df['count']).pipe(lambda x: x / x.sum())

bar      0.315789
foo      0.421053
super    0.263158
dtype: float64

从头开始:
这更复杂但更快

from numpy.core.defchararray import count

q = df['query'].values
c = df['count'].values.repeat(count(q.astype(str),' ') + 1)
f,u = pd.factorize(' '.join(q.tolist()).split())
b = np.bincount(f,c)
pd.Series(b / b.sum(),u)

foo      0.421053
bar      0.315789
super    0.263158
dtype: float64

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读