tags:
- 来自bit.ly的1.usa.gov数据
- 纯Python代码对时区进行计数
- 利用pandas对时区进行计数
来自bit.ly的1.usa.gov数据
open(path).readline()#读取某文件第一行
json.loads(line) 用来读取文件的,即,将文件打开然后就可以直接读取
纯Python代码对时区进行计数
time_zone=[rec['tz'] for rec in records if 'tz' in rec]
*1.判断if 'tz' in rec(有没有时区字段) 2.for rec in records(遍历) 3.赋值给rec['tz'] (将rec其中的‘tz’字段拿出来)赋值给list
defaultdict(int) [from collections import defaultdict]#所有值初始化为0 初始化赋值
The Python Standard Library
sort() 排序
sort函数
C0llections.Counter对象 计数
The Python Standard Library
利用pandas对时区进行计数
from pandas import DataFrame,Series
Dataframe是pandas中最重要的数据结构,它用于将数据表示为一个表格
Series是Pandas中最基本的对象,Series类似一种一维数组,可以自己建立索引;对象有字典功能。
具体
frame输出形式是摘要视图(summary view),主要用于较大的DataFrame对象
Series.value_counts pandas.DataFrame.fillna
"
Series.value_counts(_normalize = False_,_sort = True_,_ascending = False_,_bins = None_,_dropna = True _)[[来源]](http://github.com/pandas-dev/pandas/blob/v0.23.3/pandas/core/base.py#L1008-L1039)[](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.value_counts.html#pandas.Series.value_counts "这个定义的固定链接")
返回包含唯一值计数的对象。
生成的对象将按降序排列,以便第一个元素是最常出现的元素。默认情况下排除NA值。
参数:
normalize:boolean,默认为False
*如果为True,则返回的对象将包含唯一值的相对频率。
sort:boolean,默认为True
*按值排序
ascending:boolean,默认值为False
*按降序排序
bins:integer, optional
*而不是计算值,将它们分组为半开箱,为pd.cut提供便利,仅适用于数字数据
dropna:boolean,默认为True
*不包括NaN的数量。
返回:
counts: Series
“
DataFrame.fillna(_value = None_,_method = None_,_axis = None_,_inplace = False_,_limit = None_,_downcast = None_,_** kwargs _)[[source]](http://github.com/pandas-dev/pandas/blob/v0.23.3/pandas/core/frame.py#L3783-L3790)[](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html#pandas.DataFrame.fillna "这个定义的固定链接")
使用指定的方法填充NA / NaN值
参数:
value:scalar, dict, Series, or DataFrame
*用于填充孔的值(例如0),或者用于指定每个索引(对于Series)或列(对于DataFrame)使用哪个值的值的Dict / Series / DataFrame。(不会填写dict / Series / DataFrame中的值)。该值不能是列表。
method :{'backfill','bfill','pad','ffill',None},默认无
*用于填充重新索引的填充孔的方法系列填充/填充:将最后有效观察向前传播到下一个有效回填/填充:使用NEXT有效观察填补空白
axis : {0或'索引',1或'列'}
inplace:布尔值,默认为False
*如果为True,请填写。注意:这将修改此对象上的任何其他视图(例如,DataFrame中列的无副本切片)。
limit:int,默认无
*如果指定了method,则这是向前/向后填充的连续NaN值的最大数量。换句话说,如果存在超过此数量的连续NaN的间隙,则仅部分填充。如果未指定method,则这是沿整个轴填充NaN的最大条目数。如果不是None,则必须大于0。
downcast:dict,默认为None
*如果可能的话,可以使用item-> dtype表示向下转换的dict,或者尝试向下转换为适当的相等类型的字符串'infer'(例如,如果可能的话,将float64转换为int64)
返回:
填充: DataFrame
“
framedata全打印的时候可以看到许多NAN字符便是缺失值,空字符串即为未知值
*fillna可以替换缺失值,
*未知值由布尔类型索引加以替换(无需一一遍历)
为熟悉pandas,我们再来看看字段a
,该字段含有执行URL短缩操作的浏览器、设备、应用程序的相关信息:
rame['a'][1]
# u'GoogleMaps/RochesterNY'
frame['a'][59]
# u'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176'
ataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
[source]¶
Remove missing values.
*Windows和非Windows用户对时区统计信息进行分解,为简单起见,我们假定字段a
中含有"Windows"就认为
该用户为Windows用户,反之就认为为非Windows用户。
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, **kwargs)
[source]
DataFrame.size
[source]
返回一个int,表示此对象中的元素数。
如果是Series,则返回行数。否则返回行数乘以DataFrame的列数。
DataFrame.unstack(level=-1, fill_value=None)
[source]¶
Pivot a level of the (necessarily hierarchical) index labels, returning a DataFrame having a new level of column labels whose inner-most level consists of the pivoted index labels. If the index is not a MultiIndex, the output will be a Series (the analogue of stack when the columns are not a MultiIndex). The level involved will automatically get sorted.
Series.argsort(axis = 0,kind ='quicksort',_order = None _)
[来源]
覆盖ndarray。argsort。取消该值,省略NA / null值,并将结果放在与非NA值相同的位置
根据agg_counts中的行数构造了一个间接索引数组
为看清楚Windows用户的相对比例,因此可以将各行规范化为‘总计为1’并重新绘图