第2章-2 用pandas对时区进行计数 学习笔记

基本没看懂,照着书把代码copy了一遍,简直呵呵

#!-*-coding:utf-8-*-
import json
path = "C:\Python learn\pydata-book-master\ch02\usagov_bitly_data2012-03-16-1331923249.txt"

records = [json.loads(line) for line in open(path)]

import pandas as pd
import numpy as np

frame = pd.DataFrame(records)
# print frame
# print frame['tz'][:10]
tz_counts = frame['tz'].value_counts()
# print tz_counts[0:10]
print

clean_tz = frame['tz'].fillna('Missing')        #fillna函数可以替换缺失值NA
clean_tz[clean_tz == ''] = 'Unknow'     #对列表中的未知值替换为unkonw

tz_counts = clean_tz.value_counts()        #将整理过的tz数量赋值给tz_counts
# print tz_counts1[:10]

# tz_counts[:10].plot(kind = 'barh', rot = 0)        #该命令需在pylab下运行(cmd-ipython-pylab)

# 查看a字段包含的浏览器等信息
print frame['a'][:10]
print frame['a'][0]         #Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.78 Safari/535.11
print frame['a'][50]

results = pd.Series([x.split()[0] for x in frame.a.dropna()])       #注意split()的用法,
print results[:5]
print results.value_counts()[:10]

cframe = frame[frame.a.notnull()]
operating_system = np.where(cframe['a'].str.contains('Windows'), 'Windows', 'Not Windows')      #有点像excel的if函数
print operating_system[:5]

by_tz_os = cframe.groupby(['tz', operating_system])
agg_counts = by_tz_os.size().unstack().fillna(0)        #unstack()对计数结果进行重塑,便于阅读;fillna()将计数中的空白值替换为0
print agg_counts[:10]

indexer = agg_counts.sum(1).argsort()
count_subset = agg_counts.take(indexer)[-10:]

count_subset.plot(kind = 'barh', stacked = True)        #输出柱状堆积图

normed_subset = count_subset.div(count_subset.sum(1), axis = 0)
normed_subset.plot(kind = 'barh', stacked = True)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值