【Python数据清洗】for循环+条件判断 VS 数据向量化

今天(也就是2020年3月26日)重新看了一下《利用Python进行数据分析》第二版然后下午的时候想工作一会就做了一个数据分析,至于我是怎么从1千多亿条数据里面选择出98w符合条件的数据就不赘述了,
最关键的一点就是我使用了一个for循环+条件判断的代码,然后等了大约10分钟左右吧,因为在运行代码的时候跟朋友聊天,感觉都没什么可聊的的时候代码才运行完,然后我想起来了python中的numpy这个包是基于向量来做线性运算。类似于R语言的向量书上说速度相差300多倍,网上有人说相差500多倍。我自己也找了一个可以替换的函数运行了一下,运行时间,我觉得没有1秒钟。按下运行就出来结果了。让我这个深受for循环折磨的发现了新的大陆。下面就是我写的代码,有兴趣的可以看一下:
利用向量化进行线性运算

df_2=grouped.copy()
df_2['serch']=np.where((df_2['laon_amt']>-0.01)&(df_2['laon_amt']<=5.5),1,\
                       np.where((df_2['laon_amt']>5.5)&(df_2['laon_amt']<=7.5),2,\
                               np.where((df_2['laon_amt']>7.5)&(df_2['laon_amt']<=8.5),3,\
                                        np.where((df_2['laon_amt']>8.5)&(df_2['laon_amt']<=11.5),4,\
                                                np.where((df_2['laon_amt']>11.5)&(df_2['laon_amt']<=13.5),5,\
                                                        np.where((df_2['laon_amt']>13.5)&(df_2['laon_amt']<16.5),6,\
                                                                              np.where((df_2['laon_amt']>16.5)&(df_2['laon_amt']<=23.5),7,\
                                                                                       np.where((df_2['laon_amt']>23.5)&(df_2['laon_amt']<=30.5),8,\
                                                                                                np.where((df_2['laon_amt']>30.5)&(df_2['laon_amt']<=44.5),9,\
                                                                                                        np.where((df_2['laon_amt']>44.5)&(df_2['laon_amt']<=359.01),10,0))))))))))

使用for循环+条件判断

for i in range(df_2.shape[0]):
    if (df_2['laon_amt'][i]>-0.01)&(df_2['laon_amt'][i]<=5.5):
        df_2['serch'][i]=1
    elif (df_2['laon_amt'][i]>5.5)&(df_2['laon_amt'][i]<=7.5):
        df_2['serch'][i]=2
    elif (df_2['laon_amt'][i]>7.5)&(df_2['laon_amt'][i]<=8.5):
        df_2['serch'][i]=3
    elif (df_2['laon_amt'][i]>8.5)&(df_2['laon_amt'][i]<=11.5):
        df_2['serch'][i]=4
    elif (df_2['laon_amt'][i]>11.5)&(df_2['laon_amt'][i]<=13.5):
        df_2['serch'][i]=5
    elif (df_2['laon_amt'][i]>13.5)&(df_2['laon_amt'][i]<165.5):
        df_2['serch'][i]=6
    elif (df_2['laon_amt'][i]>13.5)&(df_2['laon_amt'][i]<165.5):
        df_2['serch'][i]=6
    elif (df_2['laon_amt'][i]>13.5)&(df_2['laon_amt'][i]<165.5):
        df_2['serch'][i]=6
    elif(df_2['laon_amt'][i]>16.5)&(df_2['laon_amt'][i]<=23.5):
        df_2['serch'][i]=7
    elif (df_2['laon_amt'][i]>23.5)&(df_2['laon_amt'][i]<=30.5):
        df_2['serch'][i]=8
    elif (df_2['laon_amt'][i]>30.5)&(df_2['laon_amt'][i]<=44.5):
        df_2['serch'][i]=9
    elif (df_2['laon_amt'][i]>44.5)&(df_2['laon_amt'][i]<=359.01):
        df_2['serch'][i]=10

写教程不容易点个赞再走吧

-----------------------------分享结束线------------------------------

喜欢可以关注【小猪课堂】公众号了解更多编程小技巧

发布了90 篇原创文章 · 获赞 6 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览