Python数据分析笔记(二)
关注一些每行数据的'a'字段:
发现这行含有URL短操作的浏览器,设备,应用程序的相关信息
我们现在想要按微软用户和非微软用户对时区信息进行分解,即想知道不同时区微软用户和非微软用户的比例
假定‘a’字段中含有‘windows’的就认为是微软用户
首先,去除掉没有'a'字段的用户数据,然后根据'a'字段中是否含有windows来统计每个用户是否为微软用户
numpy.where(condition[, x, y])
这里x,y是可选参数,condition是条件
当conditon的某个位置的为true时,输出x的对应位置的元素,否则选择y对应位置的元素;
如何只有参数condition,则函数返回为true的元素的坐标位置信息;
接下来根据得到得操作系统列表和时区值对cframe进行分组
In [27]: cframe 表格先根据不同的时区(‘tz’)进行分组,分组后再根据微软和非微软进行分组
这个时候 by_tz_os还是一个GroupBy 对象,实际上还没有进行任何的运算,只含有一些中间数据
通过直接键入 by_tz_os可以查看
所以接下来我们通过计算每个组的个数来统计不同操作系统用户的数量:
In [28]:size函数对统计结果进行计数,unstack函数对计数的结果进行重塑,
最后对NAN,即用户数量为0的值进行填充为0
接下来选择最常出现的时区:
官方文档如下:
DataFrame.sum(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)Return the sum of the values for the requested axis
Parameters : |
axis : {index (0), columns (1)} skipna : boolean, default True
level : int, default None
numeric_only : boolean, default None
|
---|---|
Returns : |
sum : Series or DataFrame (if level specified) |
构造了一个间接索引数组,对agg_counts 中的列数进行求和操作,argsort函数对数组进行从小到大的排列
想要获取人数最多的时区,所以去最后十项的值
到这里我们就可以画图了:
生成堆积条形图,结果如下:
这张图的缺点是容易看不清人数较少的时区的不同用户的分布
所以我们改进一下
将各行规范化,总计为1,然后从新绘图:
效果如下: