声明

工作后,很不幸的成为了团队中的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的集成编译环境,作为后备环境。

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

我的Pandas应用场景的更多相关文章

  1. 我的Pandas应用场景(2)

    上文交代了一些啰嗦事,本文开始,就要来点实际的了. 先来一个比较简单的场景: Given:一个包括N(极其复杂,这里取3个)个列的DataFrame:df,df包括index: And:对df所有列元 ...

  2. pandas中df.ix, df.loc, df.iloc 的使用场景以及区别

    pandas中df.ix, df.loc, df.iloc 的使用场景以及区别: https://stackoverflow.com/questions/31593201/pandas-iloc-vs ...

  3. 整理pandas操作

    本文原创,转载请标识出处: http://www.cnblogs.com/xiaoxuebiye/p/7223774.html 导入数据: pd.read_csv(filename):从CSV文件导入 ...

  4. 深入理解pandas读取excel,txt,csv文件等命令

    pandas读取文件官方提供的文档 在使用pandas读取文件之前,必备的内容,必然属于官方文档,官方文档查阅地址 http://pandas.pydata.org/pandas-docs/versi ...

  5. Pandas模块

    前言: 最近公司有数据分析的任务,如果使用Python做数据分析,那么对Pandas模块的学习是必不可少的: 本篇文章基于Pandas 0.20.0版本 话不多说社会你根哥!开干! pip insta ...

  6. numpy、pandas

    numpy: 仨属性:ndim-维度个数:shape-维度大小:dtype-数据类型. numpy和pandas各def的axis缺省为0,作用于列,除DataFrame的.sort_index()和 ...

  7. 借网站日记分析~普及一下Pandas基础

      对网站日记分析其实比较常见,今天模拟演示一下一些应用场景,也顺便说说Pandas,图示部分也简单分析了下 1.数据清洗¶ 一般数据都不可能直接拿来用的,或多或少都得清理一下,我这边就模拟一下清洗完 ...

  8. pandas中遍历dataframe的每一个元素

    假如有一个需求场景需要遍历一个csv或excel中的每一个元素,判断这个元素是否含有某个关键字 那么可以用python的pandas库来实现. 方法一: pandas的dataframe有一个很好用的 ...

  9. pandas处理时间序列(2):DatetimeIndex、索引和选择、含有重复索引的时间序列、日期范围与频率和移位、时间区间和区间算术

    一.时间序列基础 1. 时间戳索引DatetimeIndex 生成20个DatetimeIndex from datetime import datetime dates = pd.date_rang ...

随机推荐

  1. ShellExecuteEx的使用方法

    关于怎样在c++中启动外部的exe程序,之前看到在百度一搜就看到了: ShellExecute(this->m_hWnd,"open","calc.exe" ...

  2. Qt5官方demo分析集29——Extending QML - Property Value Source Example

    此系列的所有文章都可以在这里查看http://blog.csdn.net/cloud_castle/article/category/2123873 接上文Qt5官方demo解析集28--Extend ...

  3. [CLR via C#]6. 类型和成员基础

    原文:[CLR via C#]6. 类型和成员基础 6.1 类型的各种成员 在一个类型中,可以定义0个或多个以下种类的成员: 1)常量    常量就是指出数据值恒定不变的符号.这些符号通常用于使代码更 ...

  4. 在Eclipse下导入vlc-android并编译

    在Ubuntu14.04下载好了VLC的源代码后,VLC的Eclipseproject存放在"vlc-android"文件夹 root@dzt-VirtualBox:/home/d ...

  5. Bash shell 简单的并行任务,并等待

    首先启动两个command line对于实验 第一 command line 依次输入: bash$ sleep 10001 & [1] 38272 bash$ job1=$! bash$ s ...

  6. 安卓MonkeyRunner源码分析之启动

    在工作中因为要追求完成目标的效率,所以更多是强调实战,注重招式,关注怎么去用各种框架来实现目的.但是如果一味只是注重招式,缺少对原理这个内功的了解,相信自己很难对各种框架有更深入的理解. 从几个月前开 ...

  7. 硬盘安装Archlinux「2013-12-26」

    按照Archlinux的中文WIKI安装完成,最后安装引导失败.原因未知. 折腾的脑袋好大,本来都要放弃了,幸好在贴吧发帖求助,吧友@atmouse耐心热心的帮助 最后重启成功启动.帖子地址:http ...

  8. C++在struct与class差异

    在C++中,既能够用structkeyword进行类的定义,也能够用classkeyword进行类的定义,那么这两者究竟有什么差别呢? 唯一的一点差别是:struct和class的默认訪问权限不一样. ...

  9. 进击的Android注入术《二》

    继续 在<一>里,我把基本思路描写叙述了一遍,接下为我们先从注入開始入手. 注入 分类 我们平时所说的代码注入,主要静态和动态两种方式 静态注入,针对是可运行文件,比方平时我们改动ELF, ...

  10. leetcode 34 Search Insert Position

    Given a sorted array and a target value, return the index if the target is found. If not, return the ...