2017.05.09回顾 pandas使用记录

70 篇文章 0 订阅

1、给决策引擎P2做了一个伪接口方便测试,做完伪接口还剩1个多小时,我他妈干什么了呢?我怎么想不起了

2、下午主要就是思考Simon留下的那个问题,几乎思考了一下午,把结论写在了上次挖坑的地方

3、下午同时也解决了加解密的问题,那个软件可以授权进程就ok了

4、晚上主要是写程序解决最佳同盾多头阈值寻找的问题,在这个过程中,我再一次熟悉了pandas的很多用法

  • 读取csv成dataframe是read_csv
  • 按行号列号选择是df.iloc[行,列],如果是df[:,-1]这样一般是把标签列选择出来,这样选择一列,类型就是series
  • 然后就是筛选,pandas的筛选方法非常简单,是生成bool矩阵,比如我的程序中用到的df[(df['d7'] > 8) | (df['d7'] > 12) | (df['d7'] > 25)],里面是一个行列数同df的bool矩阵,所以或不能用or,必须用二进制位的或运算也就是|,同理and不能用and,需要用&,取反不能用not需要用~
  • 筛选出来的作为一个集合,剩下的作为一个集合,这个补集,我搜索了一下,没找到方法,我最后是把筛选条件取反获得一个集合,与前面的集合恰好就是互补的
  • 列的选择,df.列名或者df[列名],查看df的所有列名可以使用df.columns
  • df仍然有shape方法返回df的行列数
  • series去重可以用set(df['d7'])
  • 写一个空的dataframe,然后不断添加行,我昨天使用的一种可行的办法是这样的,其实每一个dataframe又可以看成是一个list,含很多相同键的dict,所以就把dict不断append到一个list,最后把这个list用pd.DataFrame()直接转化成df,最后可以把df.to_csv输出成csv方便查看和分析
  • series是可以迭代的结构,也可以直接SUM
  • df也可以用len(df)来计算行数
  • 还有一种方法写个空dataframe,然后不断添加行,示例代码如下:
    result_df = pd.DataFrame(columns=('gini_split','i','j','k','n1','n2','br_bad','br_good'))
    row = pd.DataFrame([{'gini_split':1,'i':2,'j':3,'k':4,'n1':5,'n2':6,'br_bad':7,'br_good':8},])
    result_df = result_df.append(row,ignore_index = True)
    建空dataframe的时候只建列名,然后用DataFrame去转换含一个dict的list,然后append到空的df上,这里要小心一点儿,我昨天在这里浅尝辄止,因为我append后并没像现在这样重新赋值,这个dataframe不像list的append会自动更新改变,这个还要重新赋值一次,这个方法也是可行的
最后,关于这个程序还可以挖个坑,就是全部存储效率很低?如果用比较的方式找到最佳的top1或者top5这样会好一些吗?应该也好不好哪里去吧?毕竟还有比较一次再做存储,top5的存储方式还要想一想,感觉效率不比我这个高啊,还有一点就是最后我是导出到csv,用excel做排序处理,可以想象怎么使用pandas的函数直接进行排序


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值