数据分析案例--USA.gov数据

2018-07-27  本文已影响58人  owolf

本章节以及后续章节的源码,当然也可以从我的github下载,在源码中我自己加了一些中文注释。

        来自Bitly的USA.gov数据 ,文件中各行的格式为JSON(即JavaScript Object Notation,这是一种常用的Web数据格式)。例如,如果我们只读取某个文件中的第一行,那么所看到的结果应该是下面这样:

        Python有内置或第三方模块可以将JSON字符串转换成Python字典对象。这里,我将使用json模块及其loads函数逐行加载已经下载好的数据文件,records对象就成为一组Python字典了:

一、用纯Python代码对时区进行计数

假设我们想要知道该数据集中最常出现的是哪个时区(即tz字段)

计数的办法是在遍历时区的过程中将计数值保存在字典中:

这样写会使get_counts函数更简洁

得到前10位的时区及其计数值:

另一种更快捷的方法:

二、用pandas对时区进行计数

1、把数据建成表

下图是DataFrame格式的frame表:

2、计算时区数量

        frame['tz']所返回的Series对象有一个value_counts方法,计算每个时区出现的数量,从大到小排列:

3、填充缺失值

        fillna函数可以替换缺失值NA,而未知值(空字符串)可以通过布尔型数组索引加以替换

4、常出现的10个时区进行绘图

 usa.gov示例数据中最常出现的时区 usa.gov示例数据中最常出现的时区

5、分离出浏览器

        a字段含有执行URL短缩操作的浏览器、设备、应用程序的相关信息:

6、统计各个浏览器出现的数量

7、按照Windows和非Windows用户对时区统计信息进行分解

(1)由于有的agent缺失,所以首先将他们从数据中移除,其次根据a值计算出各行是否是Windows

(2)根据时区和新得到的操作系统列表对数据进行分组

(3)分组计数,通过size()对分组结果进行计数,并利用unstack对计数结果进行重塑

(4)我们来选取最常出现的时区。为了达到这个目的,我根据agg_counts中的行数构造了一个间接索引数组:

(5)通过take按照这个顺序截取了最后10行最大值:

(6)做柱状图

最常出现时区的Windows和非Windows用户  

(7)上图不太容易看清楚较小分组中Windows用户的相对比例,因此标准化分组百分比之和为1:

快速学习:

第一节 NumPy基础(一)

第二节 NumPy基础(二)

第三节 Pandas入门基础

第四节 数据加载、存储

第五节 数据清洗

第六节 数据合并、重塑

第七节 数据聚合与分组运算

第八节 数据可视化

第九节 pandas高级应用

第十节 时间序列

第十一节 Python建模库

数据分析案例--1880-2010年间全美婴儿姓名的处理

数据分析案例--MovieLens 1M数据集

数据分析案例--USA.gov数据

数据分析案例--2012联邦选举委员会数据库

数据分析案例--USDA食品数据库

上一篇下一篇

猜你喜欢

热点阅读