根据字典在DataFrame / Series中映射值的最快方法是什么?

时间:2016-03-17 11:54:20

标签: python python-2.7 pandas dataframe series

我得到了一个包含5,000,000行x 3列的数据集。

基本上,它看起来像:

    location       os  clicked
0      China      ios      1
1        USA  android      0
2      Japan      ios      0
3      China  android      1

所以,我去了 Pandas.DataFrame 以获得一些非常棒的快速支持。

现在我要根据字典替换位于数据帧系列中的值。

注意:我用作参考的字典如下:

{   China : 1,
      USA : 2,
    Japan : 3,
     .... : ..
 }

因为我使用Pandas.DataFrame.Column_Label.drop_duplicates()

最后,我得到了:

    location     os  clicked
0         1      ios      1
1         2  android      0
2         3      ios      0
3         1  android      1

我在 446 s 中完成了完全映射。

有更快的方法吗?

我认为replace()函数浪费了很多时间来进行无意义的搜索。我正走向正确的方向吗?

1 个答案:

答案 0 :(得分:0)

我现在可以回答我自己的问题了。

这样做的目的是处理分类数据,这些数据在分类任务等上反复出现。我们首先想要使用单热编码方法转换分类数据,这是普遍存在的。到数字向量,sklearn包或statsmodel可接受。

为此,只需使用以下命令将cvs文件作为pandas.DataFrame读取: data = pd.read_csv(dir, encoding='utf-8')

然后:

data_binary = pd.get_dummies(data, prefix=['os','locate'],columns=['os','location'])

一切都很好。