归一化PANDA数据框中的列 [英] Normalize columns in pandas dataframe

查看:0
本文介绍了归一化PANDA数据框中的列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 pandas 数据框,它有语料库的词频,以词为行,以年为列,如下所示:

|       | term    |   2002 |   2003 |   2004 |   2005 |
|------:|:--------|-------:|-------:|-------:|-------:|
|  3708 | climate |      1 |     10 |      1 |     14 |
|  8518 | global  |     12 |     11 |      2 |     12 |
| 13276 | nuclear |     10 |      1 |      0 |      4 |

我希望能够通过将每个单词的值除以给定年份的总词数来标准化它们--有些年份包含的文本数量是给定年份的两倍,因此我尝试按年进行缩放(如Google Books)。我已经研究了如何缩放单个列的示例,就像Chris Albon和我在这里看到的缩放所有列的示例一样,但每次我尝试将此数据帧转换为要缩放的数组时,都会因为术语列不是数字而窒息。(我尝试将Terms列设置为索引,但并不顺利。)我可以想象一种使用for循环来实现这一点的方法,但我读到的几乎每个干净的 pandas 代码示例都告诉我不要使用for循环,因为有一种 pandas 方法来处理所有事情。

我想说的是:

for these columns [the years]:
    divide each row by the sum of all rows

就是这样。

推荐答案

尝试:

In [5]: %paste                                                                                                                                                                                                                                                                       
cols = ['2002', '2003', '2004', '2005']
df[cols] = df[cols] / df[cols].sum()

## -- End pasted text --

In [6]: df                                                                                                                                                                                                                                                                           
Out[6]: 
      term      2002      2003      2004      2005
0  climate  0.043478  0.454545  0.333333  0.466667
1   global  0.521739  0.500000  0.666667  0.400000
2  nuclear  0.434783  0.045455  0.000000  0.133333

这篇关于归一化PANDA数据框中的列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆