Python 数据分析(一)[MAC]

数据:

bit.ly 的 1.usa.gov数据

读取:

### read data
import json
path = '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] += 1
	else:
            counts[x] = 1
    return counts
	
# func2: count each time_zone
from collections import defaultdict
def get_counts2(sequence):
    counts = defaultdict(int)
    for x in sequence:
	counts[x] += 1
    return counts	
    
# func3: get top-n counts
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:]

备注:

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


#### method 1: own python functions

time_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, Series
import pandas as pd; import numpy as np
frame = 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)
效果如下:

Python 数据分析(一)[MAC]_第1张图片
备注:

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

Python 数据分析(一)[MAC]_第2张图片



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

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

转载请注明。



你可能感兴趣的:(Python,Mac,数据分析与数据挖掘)