《利用python进行数据分析》_札记3

import json
import pandas as pd
import matplotlib.pylab as plt
from pandas import DataFrame, Series
import numpy as np

path = "D:\Python\datalearning\利用Python进行数据分析\example.txt"
records = [json.loads(line) for line in open(path)]
frame = DataFrame(records)  # DataFrame用于将数据表示为一个表格形式

# 缺失值/未知值的处理:fillna()函数替换缺失值(NA),未知值(空字符串)通过布尔型数组索引加以替换:
clean_tz = frame['tz'].fillna("Missing")
clean_tz[clean_tz == ''] = 'Unknown'
tz_counts = clean_tz.value_counts()
print(type(tz_counts))
print(tz_counts[:10].plot(kind='barh', rot=0))     # 水平条形图
# print(tz_counts[:10].plot(kind='bar', rot=0))    # 垂直条形图
plt.savefig('./time_zones.png', bbox_inches='tight')
plt.show()

# 数据的a字段中包含有执行url缩短操作的浏览器、设备、应用程序等相关信息:
# print(frame['a'][53])  结果:Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-I8350)
results = Series([x.split()[0] for x in frame.a.dropna()])   # frame.a.dropna():表示取出a字段并去除其中的缺失值或者空字段;再通过split函数进行分隔最后取第一个元素
print(results.value_counts()[:8])

# 按照操作系统是否为Windows进行分类
cframe = frame[frame.a.notnull()]   # 去除缺少agent字段的数据
operating_system = np.where(cframe['a'].str.contains('Windows'), 'Windows', 'Not Windows')
# print(operating_system[:5])

by_tz_os = cframe.groupby(['tz', operating_system])   # 按照时区和操作系统进行分类
agg_counts = by_tz_os.size().unstack().fillna(0)   # size实现计数;unstack对计数结果进行重塑

indexer = agg_counts.sum(1).argsort()  # 对行数构造一个简洁索引数组,升序排列
count_sunset = agg_counts.take(indexer)[-10:]   # 通过take截取最后10行数据
print(count_sunset.plot(kind='barh', stacked=True))  # 生成堆积条形图
plt.savefig('./tz_system1.png', bbox_inches='tight')
plt.show()  #  结果图1

normed_subset = count_sunset.div(count_sunset.sum(1), axis=0)  # 为例看清数据中Windows用户比例,将各行规范化为"总数为1"
print(normed_subset.plot(kind='barh', stacked=True))  # 生成堆积条形图
plt.savefig('./tz_system2.png', bbox_inches='tight')
plt.show()   # 结果图2 
《利用python进行数据分析》_札记3_第1张图片
tz_system1.png
《利用python进行数据分析》_札记3_第2张图片
tz_system2.png

https://www.jianshu.com/p/04d180d90a3f

你可能感兴趣的:(《利用python进行数据分析》_札记3)