Python数据分析笔记(二)

来源:互联网 发布:js 调用软键盘 编辑:程序博客网 时间:2024/05/01 12:40

接上文Python数据分析笔记(一)


关注一些每行数据的'a'字段:


发现这行含有URL短操作的浏览器,设备,应用程序的相关信息

我们现在想要按微软用户和非微软用户对时区信息进行分解,即想知道不同时区微软用户和非微软用户的比例


假定‘a’字段中含有‘windows’的就认为是微软用户 


首先,去除掉没有'a'字段的用户数据,然后根据'a'字段中是否含有windows来统计每个用户是否为微软用户





numpy.where(condition[xy])

这里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=Noneskipna=Nonelevel=Nonenumeric_only=None**kwargs)

Return the sum of the values for the requested axis

Parameters :

axis : {index (0), columns (1)}

skipna : boolean, default True

Exclude NA/null values. If an entire row/column is NA, the result will be NA

level : int, default None

If the axis is a MultiIndex (hierarchical), count along a particular level, collapsing into a Series

numeric_only : boolean, default None

Include only float, int, boolean data. If None, will attempt to use everything, then use only numeric data

Returns :

sum : Series or DataFrame (if level specified)


构造了一个间接索引数组,对agg_counts 中的列数进行求和操作,argsort函数对数组进行从小到大的排列


想要获取人数最多的时区,所以去最后十项的值



到这里我们就可以画图了:


生成堆积条形图,结果如下:


这张图的缺点是容易看不清人数较少的时区的不同用户的分布

所以我们改进一下

将各行规范化,总计为1,然后从新绘图:


效果如下:




原创粉丝点击