数据分析2-1
- 打开文件:path=’E:/usagov_bitly_data2012-03-16-1331923249.txt’
- open(path).readline():查看文件的第一行
- Json模块:使Json字符串转换成Python字典对象:
import json
path = 'ch02/usagov_bitly_data2012-03-16-1331923249.txt'
records = [json.loads(line) for line in open(path)]
因为文件中的内容为{…}{…}{…}所以每一个line就是一个{…} - 选出含有’tz’字段的时区:time_zones=[rec[‘tz’] for rec in records if ‘tz’ in rec]
DataFrame是pandas中最重要的数据结构,它用于将数据表示为一个表格:
import pandas as pd; import numpy as np;import matplotlib.pyplot as plt
(此时,frame为一张表格,包含所有此段出现的统计次数)
from pandas import DataFrame, Series
frame=DataFrame(records)
(其中’tz’字段出现3440次,因为‘tz’字段的值不唯一,有可能为America/New_York,也有可能为America/Denver ,所以显示为non-null values(不明确的值))将前10名输出图表格式:先给记录中未知或缺失的时区填上一个替代值。fillna函数可以替换缺失值(NA),而未知值(空字符串)则可以通过布尔型数组索引加以替换
clean_tz=frame['tz'].fillna('Missing')
clean_tz[clean_tz=='']='Unknown'
tz_counts=clean_tz.value_counts()
**tz_counts[:10].plot(kind='barh', rot=0)**
此时plt.show()将tz_counts[:10].plot(kind=’barh’, rot=0)的输出转换为图表。DataFrame输出一张完整的表格
frame[‘tz’]输出完整表格中属于’tz’的那一部分
所以下面代码整行都会改成unknown,就会影响统计结果,而不是像我们希望的像frame[‘tz’]那样只有属于‘tz’才会变成unknown。