利用python进入数据分析之usagov_bitly_data数据分析
来源:互联网 发布:知乎客户端 pc 编辑:程序博客网 时间:2024/06/08 06:09
In [1]:
path = 'ch02/usagov_bitly_data2012-03-16-1331923249.txt'
In [2]:
open(path).readline()
Out[2]:
In [7]:
import jsonpath = 'ch02/usagov_bitly_data2012-03-16-1331923249.txt'records = [json.loads(line) for line in open(path)] ## 列表推导式
In [4]:
records[0]
Out[4]:
In [5]:
records[0]['tz']
Out[5]:
In [6]:
print(records[0]['tz'])
In [11]:
time_zones = [rec['tz'] for rec in records if 'tz' in rec] # 注意有些记录没有时区
In [10]:
time_zones[:10]
Out[10]:
In [13]:
def get_counts(sequence): counts = {} for x in sequence: if x in counts: counts[x] += 1 else: counts[x] = 1 return counts
In [15]:
from collections import defaultdict #用标准库函数实现计数def get_counts2(sequence): counts = defaultdict(int) # values will initialize to 0 for x in sequence: counts[x] += 1 return counts
In [16]:
counts = get_counts(time_zones)
In [17]:
counts['America/New_York']
Out[17]:
In [18]:
len(time_zones)
Out[18]:
In [20]:
# 获取前10个字典的值def top_counts(count_dict, n=10): value_key_pairs = [(count, tz) for tz, count in count_dict.items()] value_key_pairs.sort() return value_key_pairs[-n:]
In [21]:
top_counts(counts)
Out[21]:
In [22]:
# 用标准库实现前N个字典的值from collections import Countercounts = Counter(time_zones)counts.most_common(10)
Out[22]:
In [24]:
%matplotlib inline
In [25]:
from __future__ import divisionfrom numpy.random import randnimport numpy as npimport osimport matplotlib.pyplot as pltimport pandas as pdplt.rc('figure', figsize=(10, 6))np.set_printoptions(precision=4)
In [26]:
import jsonpath = 'ch02/usagov_bitly_data2012-03-16-1331923249.txt'lines = open(path).readlines()records = [json.loads(line) for line in lines]
In [28]:
from pandas import DataFrame, Seriesimport pandas as pdframe = DataFrame(records) # DataFrame是pandas中基础的数据结构frame
Out[28]:
In [29]:
frame['tz'][:10]
Out[29]:
In [30]:
tz_counts = frame['tz'].value_counts()tz_counts[:10]
Out[30]:
In [31]:
clean_tz = frame['tz'].fillna('Missing')# 替换缺失值clean_tz[clean_tz == ''] = 'Unknown'# 替换空字符串tz_counts = clean_tz.value_counts()tz_counts[:10]
Out[31]:
In [32]:
plt.figure(figsize=(10, 4))
Out[32]:
In [33]:
tz_counts[:10].plot(kind='barh', rot=0)
Out[33]:
In [37]:
frame['a'][1] # 看下浏览器相关信息
Out[37]:
In [36]:
frame['a'][50]
Out[36]:
In [39]:
results = Series([x.split()[0] for x in frame.a.dropna()])results[:5]
Out[39]:
In [40]:
results.value_counts()[:8]
Out[40]:
In [41]:
cframe = frame[frame.a.notnull()]# 移除空值
In [42]:
operating_system = np.where(cframe['a'].str.contains('Windows'), 'Windows', 'Not Windows') #跟进是否包含“Windows”来判断operating_system[:5]
Out[42]:
In [43]:
by_tz_os = cframe.groupby(['tz', operating_system])
In [44]:
agg_counts = by_tz_os.size().unstack().fillna(0)agg_counts[:10]
Out[44]:
In [45]:
# Use to sort in ascending orderindexer = agg_counts.sum(1).argsort()indexer[:10]
Out[45]:
In [46]:
count_subset = agg_counts.take(indexer)[-10:]count_subset
Out[46]:
In [47]:
plt.figure()
Out[47]:
In [48]:
count_subset.plot(kind='barh', stacked=True)
Out[48]:
In [49]:
plt.figure()
Out[49]:
In [50]:
normed_subset = count_subset.div(count_subset.sum(1), axis=0)normed_subset.plot(kind='barh', stacked=True)
Out[50]:
阅读全文
0 0
- 利用python进入数据分析之usagov_bitly_data数据分析
- 利用python进入数据分析之MovieLens_1M数据分析
- 利用python进入数据分析之全美婴儿姓名分析
- 利用python进入数据分析之数据加载、存储、文件格式
- 利用python进入数据分析之准备篇
- 利用python进入数据分析之Numpy基础知识
- 利用python进入数据分析之pandas的使用
- 利用python进入数据分析之数据聚合与数据分组运算
- 利用python进入数据分析之数据规整化:清理、转换、合并、重塑(一)
- 利用python进入数据分析之数据规整化:清理、转换、合并、重塑(二)
- 利用Python进行数据分析之Numpy
- Python数据分析之利用pandas查询数据
- 利用python分析邮件数据
- 利用python进行数据分析之试水
- 利用 Python 进行数据分析之IPython (一)
- 利用Python进行数据分析(五)之pandas入门
- 利用python进行数据分析之dataframe的常见操作
- 利用Python进行数据分析(六)之pandas基本功能
- 责任链模式
- 2017.10.11 noip模拟赛 总结
- 小知识笔记
- [luogu 2419]牛大赛Cow Contest
- Excel图表—二项分布和正态分布的对应关系
- 利用python进入数据分析之usagov_bitly_data数据分析
- jquery清空多个input框
- 集合源码学习(四):Vector
- Hadoop介绍(四)Hbase
- 机器学习——特征工程之线性判别分析LDA
- 实验二:线性表实验-单链表的实现
- 未知文本自适应居中
- Java nio 详解
- 第5周项目2 建立链栈算法库