Python 数据分析(一)[MAC]

来源:互联网 发布:reveur 知乎 编辑:程序博客网 时间:2024/06/03 19:24

数据:

bit.ly 的 1.usa.gov数据

读取:

### read dataimport jsonpath = 'pydata-book-master/ch02/usagov_bitly_data2012-03-16-1331923249.txt'records = [json.loads(line) for line in open(path)]

任务:

主要使用python代码和pandas库等方式来计算各时区对应的数量,最后尝试用plot来绘制top10时区对应的数据。


方式一:自定义python函数

### own functions# func1: count each time_zone def get_counts(sequence):    counts = {}    for x in sequence:if x in counts:            counts[x] += 1else:            counts[x] = 1    return counts# func2: count each time_zonefrom collections import defaultdictdef get_counts2(sequence):    counts = defaultdict(int)    for x in sequence:counts[x] += 1    return counts    # func3: get top-n countsdef 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:]

备注:

可以看出使用标准库defaultdict来初始化字典对象时,可以不用判断该元素‘x’是否存在,默认不存在时,会自动初始化该元素,并将对应的缺省值赋值为0。


#### method 1: own python functionstime_zones = [rec['tz'] for rec in records if 'tz' in rec]counts = get_counts(time_zones)top_counts(counts)

方式二:利用 pandas 库中的 DataFrame

#### method 2: pandas library from pandas import DataFrame, Seriesimport pandas as pd; import numpy as npframe = DataFrame(records)tz_counts = frame['tz'].value_counts()

备注:
其实这里:
from pandas import DataFrame, Series
import pandas as pd; import numpy as np
可以简化为:
from pandas import DataFrame 

其他的功能暂时未使用到


处理缺省值:

### deal with missing value clean_tz = frame['tz'].fillna('Missing')clean_tz[clean_tz == ''] = 'Unknown'tz_counts = clean_tz.value_counts()

绘制:

### draw tz_counts[:10].plot(kind='barh', rot=0)
效果如下:


备注:

再如果需要对显示的图像进行调整的话,可以点击'Configure subplots',弹出的窗口中可以对绘画区域的上下左右等进行调整。
比如图中纵坐标的文字可能显示不完整,则可以调整'Borders->left'的值来达到合适的效果,若放弃已调整的内容,则可以选择'Reset'按钮即可。




说明:
本文内容主要来自《利用Python进行数据分析》一书,

笔者以学习的方式进行整理,相关数据链接:http://github.com/pydata/pydata-book 

转载请注明。



1 0