声明

工作后,很不幸的成为了团队中的QA。QA这个角色吧,说起来高大上,实际很苦逼,一句话概括一下:吃力不讨好!作为新人,公司每月一分钱没少我,至少现在跟开发的待遇是一样的,所以我还是得兢兢业业的对待自己的工作。

项目越做越复杂,写验收测试的时候,往往验收场景容易构造,但是该场景下的预期数据、甚至是原始数据太难构造了,尤其我是处于通信行业,数据库的表数据字段极其多、数据表也极其的多。不怕大家笑话,我开始的时候是通过Scala的函数式编程,一点一点的自己写程序维护表的字段名称、数据的split(还好都是csv格式的数据)、表join、格式的转换等。后来就疯了!我的视力都是模糊的最后。

有一次参加团队内部外请教练的一个培训,上面的教练滔滔不绝的讲着她关于自己的一套推荐系统多么多么的nubility,大家在下面无聊的听着。引起我注意的是她们使用Python作为开发语言。Python我是知道的,上学的时候做个一个基于图像的测量项目,先是使用python版本的OpenCV开发的,后来才改为C++。她重点推荐的是Python的numpy、Pandas和Ipython。当时我就在笔记本上记了一下。

后来内部要做数据分析,我买了一本书《利用Python进行数据分析》大概,里面详细的介绍了Pandas、numpy等。不怕大家笑话,我的数据分析能力没什么长进,但是被Pandas的数据处理方式震撼了(请大家原谅我不是一个IT人士,刚入行)。Pandas就是我要找的构造预期数据的神器啊!

可能有人就会笑了,构造数据用得着使用Pandas么,直接使用SQL就好!可问题是,我们使用Spark集群环境,环境不稳定,而且运行较慢,动不动会出现问题,而且开发的代码很多也是使用SQL实现,总有点“抄袭”的嫌疑,为了表示我的工作是独立的,当然不能使用SQL,而且也不好用。所以,我下定决心要将Pandas、numpy引入我的工作中!

目前来看,效果还是不错的,后来到Pandas的贴吧,发现好冷清,而且网上的资料大多都是翻译官网的10分钟入门。其实Pandas很简单,复杂在处理问题的方法太多了,让新手没法选择!我就挣扎了很多天,天天抱着手机看官网的doc,才有点明白,而且结合我的工作,有些方法就活起来了。

没别的用处,就是想分享几个我的Pandas应用场景。由于我才疏学浅,可能有不恰当的地方,由于工作的限制,可能Pandas全貌我也不用太清楚,但是还是尝试一下吧。

本文先讲一下我安装的一些软件,和一些注意事项。

为了运行Pandas,必须安装如下软件:

Python,2.7或者3.4都可以,我最先使用的是3.4,后来由于Spark集群只支持python2,所以改为了2.7,官网下载安装即可。

numpy,官网下载windows源代码,或者能够下载到exe可执行包也行,如果使用源代码,在安装的使用可能会有点问题,后面会讲到。

pandas,官网下载源代码,我使用的是0.16的。

ipython,这个可以下载源代码,不过推荐pip的方式安装。

另外,可能还需要TDM-GCC,这个是windows的gcc平台,主要是编译numpy的源代码要用到。

如果下载的是最新的python,其默认包含pip程序,在cmd中,输入pip install 软件名称即可安装程序。

但是安装顺序推荐如下:

1. python,exe包,安装即可。

2. numpy,源代码包,cmd进入解压目录,找到setup.py,输入python setup.py install,如果出现

“Unable to find vcvarsall.bat”错误,就是因为numpy需要编译C和一些代码,而你的电脑中没有合适的C编译器,可以参考

http://my.oschina.net/zhangdapeng89/blog/54407

的解决方法。这里我将Migwin改为了TDM-GCC,因为TDM-GCC确实简单一些,将TDM-GCC的bin加入path,然后将其中的一个mingw32-make.exe改为make.exe即可,然后在安装numpy的cmd中输入:python setup.py install build --compiler=mingw32 即可。

3. 安装Pandas,如果出现类似问题,同2;

4. 安装ipython,这里推荐在cmd中使用:pip install ipython命令,提示缺什么包,就使用pip install 包名,安装即可。安装完之后,可以在开始的菜单中的运行窗口输入:

ipython notebook 命令,就能启动ipython的基于浏览器的集成编译环境。

最后,我使用PyCharm的集成编译环境,作为后备环境。

不早了,今天先到这里,下次再聊!

最新文章

  1. angular的$scope
  2. box-sizing 属性、min-width属性、max-width属性
  3. mysql 的max_connections和max_user_connections 的区别
  4. docker存储结构解析
  5. tomcat触发ServletContext初始化监听事件的源码(原创)
  6. PHP 常用获取路径代码
  7. Best Practices for Web Apps
  8. Windows Tftpd32 DHCP服务器 使用
  9. mysql中常用的公式及个人演示
  10. colspan是跨列,rowspan是跨行
  11. Extjs 3.4 生成button,并調用相同的window
  12. 机器学习学习-Types of learning
  13. 高效使用 Python 可视化工具 Matplotlib
  14. centos 6.5 安装mongodb2.6
  15. mysql 集群 监控
  16. Erlang Rebar 使用指南之三:Rebar和OTP程序约定和命令
  17. eclipse解决js提示
  18. last individual reading task 12061183叶露婷
  19. [LeetCode] 225. Implement Stack using Queues_Easy tag: Design
  20. 11th 单元测试工具JUnit的学习

热门文章

  1. linux在构建SVNserver
  2. java阅读器hdfs单纯demo
  3. IOS中 类扩展 xib
  4. C++内存泄露的有效预防方法:谁使用,谁删除 (1.2)
  5. MVC验证08-jQuery异步验证
  6. MVC验证02-自定义验证规则、邮件验证
  7. SQL 无限级分类语句
  8. Linq to Sql:N层应用中的查询(下) : 根据条件进行动态查询
  9. 如何查找Linux的函数定义的位置?
  10. 开发者需要了解的WebKit