pandas 初体验

为什么使用pandas

当然这个问题也包含其他更高效的data processing工具,我个人是个ML engineer/ML applied scientist,平时对于pandas性能没有太多需求(只要能在15分钟之内把preprocess做好就行),所以感觉pandas的性能对工作影响不大。

先说为什么提这个问题:1)我在博士期间,数据集完全可以json, csv等简单的直接加载,加载后就直接开始调试模型了,所以没有使用pandas的习惯 2)我在上一家公司的时候做模型,是少量的人工标注的数据,只有关注的部分(e.g. sentence和语意pair),所以也很少用到pandas。

现在在Amazon工作,数据来源是非常多的,而且每一类数据由于由service产生,service都会附加很多的logged field。service能不能log住data, 哪些field有用,在哪些异常的情况下影响data收集,哪些不影响,等等使得preprocessing变得重要,这时候才感觉不得不去使用一个类似pandas的工具。

非常基础的使用/实例

1. not null

真实的场景中永远有数据丢失,如果没有合适的补全策略,先not null吧:

df = df[~df['my_col'].isnull()]

返回一个my_col没有null值的dataframe.

2. 选择一部分数据

df = df[df.annotation_state == 'good']

对,再扯一次,真实场景什么都可能出现。。。上一个语句只选择annotation_state column值为good的那些数据;其他的数据估计就暂且say goodbye了。。。

3. 做一些标签改变

嗯,做这个主要是因为每一个数据流的格式不统一,训练模型前肯定这部分是要小心处理好的。

df = pd.DataFrame({'A':[1,2], 'B': [5,10]})
df['A'].replace(1, 100, inplace=True)
>>> df
     A   B
0  100   5
1    2  10

之所以这里还要打印出来看一下,是因为我对pandas这个是否对原dataframe做更改的这个习惯还不是很熟悉。我来说一下我的不解,欢迎大家来帮我指点迷津。第二句由于 inplace=true, 所以df['A']这个series肯定被更改了,但是df['A']到底是一个copy还是一个指向原df的series view,我不是很确定(尽管我觉得它应该是一个writtable view。。。)所以打印出来看一下,看样子是一个writtable view。。。

结束语

pandas功能强大,在大型项目的时候感觉没有这样一个工具真的不行,真的是data engineer/ML engineer/ML scientists的必修项目。最后一个例子中,我感觉这个工具要精通也不是很容易(虽然作为ML engineer打印出来看看也没啥大不了的。。。)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值