在日常工作中,数据处理类的任务主要包括以下几类:
与外界进行交互:读写各种数据文件及数据库。
准备工作:对数据进行清理、修整、整合、规范化、重塑、切片切块、变形等处理以便于进行分析。
转换:对数据集进行数学统计运算产生新的数据集。(比如根据分组变量对一个大表进行聚合)
建模和计算:将数据与统计模型、机器学习算法或其他计算工具联系起来。
展示:创建交互式或静态的图片或文字摘要。
利用pandas对http://1.usa.gov数据时区进行计数:
DataFrame是pandas中最重要的数据结构,用于将数据表示为一个表格:
frame['tz']返回的Series对象有一个value_counts()方法,该方法统计Series中词条出现的频率,并按频率降序排列:
记录中缺失值可以用fillna函数替换,未知值可以用布尔型数组索引替换:
然后可以利用绘图库(matplotlib)的plot方法为这十条数据生成一张水平条形图。(注意ipython一定要以pylab模式打开,否则以下代码无效)
条形图如下,统计.http://usa.gov数据中最常出现的时区:
还可以对这种类型的数据进行许多处理,以a字段为例,我们可以将a字段的第一节分离出来,得到一份用户行为摘要:
现在可以按照Windows和非Windows用户对时区统计信息进行分解:
接下来就可以按照时区和操作系统对数据进行分组,计数,重塑:
下面选取最常出现的时区:
然后我们使用stacked=True生成一张堆积条形图:
为了看清较小分组中Windows用户的比例,可以将各行规范化为“总计为1”,重新绘图:
MovieLens 1M数据集
该数据集是一组电影评分数据,分为三个表:评分、用户信息和电影信息,可以通过pandas.read_table将每个表读到一个DataFrame对象中:
利用merge函数将所有数据合并到一个表中,并根据性别计算电影的平均得分:
过滤掉评分数据不足250条的电影,并了解女性观众最喜欢的电影(对F列降序):
找出男性和女性观众分歧最大的电影:
找出分歧最大的电影(不考虑性别),可以计算得分的方差或标准差:
1880-2010全美婴儿姓名
该数据集按年度分割成了多个文件,利用pandas.concat将所有数据组装到一个DataFrame里,并加上一个year字段:
将names数据在sex和year级别上进行聚合:
插入一个prop列,用于存放指定名字的婴儿数相对于总出生数的比例:
验证所有分组的prop总和是否为1:
为了便于进一步分析,取出该数据的一个子集:每对sex/year组合的前1000个名字:
接下来的数据分析工作就针对这个top1000数据集了。
几个男孩和女孩名字随时间变化的使用数量:
接下来还可以分析命名趋势,命名多样性的变化等,这里由于对pandas方法还不是很熟悉,就不一一试验了。