2017.08.09回顾 seaborn两个坐标系 series中mixtype sorted key

来源:互联网 发布:chrome linux版 编辑:程序博客网 时间:2024/06/08 09:10

1、上午对现有决策引擎做了一些简单修改,没什么技术含量,注意的地方就是条件概率的计算

2、继续SQL抓取数据集,没什么技术含量,后来发现中间少抓了几个变量,已经补上,后面还需要check看是否遗漏变量

3、有了数据集,又开始耍自己的评分卡工具包,对工具包做了一些修改,美化barplot/修正排序BUG/regroup写成静态方法,过程中发现一些问题,也有一些收获

  • 我发现我给int64的series赋值了一些str,这个时候部分变成了str,部分还是long,dtype显示的是object
  • 我开始尝试用astype去改变整个series的类型,结果发现失败,后来才想起astype只是返回一个copy,又不会影响原始的series,查文档发现astype有一个copy参数,默认是True,如果改为False是不返回copy直接影响series呢?还是直接就不返回copy什么都不干?这一点需要尝试,我目前是直接把astype赋值回原来的series
  • 写了个函数解决形如'xxx-yyy'和’-1‘共同存在时的排序逻辑,前面主要就是负数的影响,这个时候仍然可以按'-'做split,'-1'.split('-')是含有两个元素的tuple,('','1'),如果第一个元素是'',那就用整个-1做排序,如果前面不是'',就拿xxx做排序,这个方法完美解决。
  • sorted以前惯用的写法是sorted(dict.items(),key=lambda item:item[0]),key就是跟一个函数,lambda只是一个匿名函数而已,复杂逻辑要单起一个函数,上面一条讲的就是单起的函数,这个函数作用于前面的dict.items(),提醒一下dict.items()是把dict转成一个tuple组成的list,每个tuple含key和value两个元素
  • 一定记住定义成员方法的时候不要忘记写self,不然在调用的时候会报一个参数个数不对的错误
  • 利用seaborn美化图表,开始的一个难点就是我的图中有两个坐标系,我起初是通过坐标系对象作图,但是seaborn是通过类直接调用的,后来我在官方文档中发现sns.barplot()有个ax参数可以指定坐标系,果断解决,seaborn本身是封装的matplotlib,所以使用中seaborn和matplotlib.pyplot是可以混用的,画图调用的时候也有个先后顺序,在一些冲突的作图区域,后面的会覆盖前面的,需要尝试一下
    x = range(len(counts))fig, ax1 = plt.subplots(figsize=(12,8))my_palette = sns.color_palette(n_colors=100)sns.barplot(x,counts,ax=ax1)plt.xticks(x,tick_label,rotation = 30,fontsize=12)plt.title(column,fontsize=18)ax1.set_ylabel('count',fontsize=15)ax1.tick_params('y',labelsize=12)ax2 = ax1.twinx()ax2.plot(x,br_data,color='black')ax2.set_ylabel('bad rate',fontsize=15)ax2.tick_params('y',labelsize=12)
    这种顺序的话ax2.plot并没有去覆盖plt.xticks设定的tick_label,但是如果plt.xticks和sns.barplot调换一下顺序,这个时候tick_label就不会生效了,所以这里我还不是很了解机制
  • 图是画好了,但是我发现了一个默认调色方案的问题,只有在类别数量很多的时候,才会使用一种炫酷的配色方案,但是如果类别数量很少,却默认使用了一种略微逊色的配色方案,其实我希望的效果是在类别数少的时候就随机用炫酷颜色中的一种,用前几种也不错啊,查了下文档,并没找到解决方案
  • 有了最前面的1/2点,把regroup写成了静态方法,我开始是直接写在类的命名空间,def regroup(xxx),这样是不行的,即便是类方法也要加修饰符@classmethod,第一个参数约定俗成是写cls,直接下一个函数在类下面是不能成功调用的,类方法一般操作对象是类,我没有对类的操作需求就直接写成静态方法,@staticmethod,静态方法类和实例都可以直接调用
4、在抓取数据集发现了一些问题,有些坑的地方,特别是快照这种建表方式,之前同事在某些变量上存在偏差,我觉得很大程度上是因为这个原因,比如出现了罕见的1以上的IV,一句话,实际业务中0.5以上就值得怀疑了,0.3以上都很少见,人工观察探索不同数据集,思考背后的机理这个部分就花了不少时间,和上一次并没进步,但逐步我会把这个过程提炼并且工程化,那些是好的变量,心里有一定数了

原创粉丝点击