天天看點

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]

備注:

再如果需要對顯示的圖像進行調整的話,可以點選'Configure subplots',彈出的視窗中可以對繪畫區域的上下左右等進行調整。

比如圖中縱坐标的文字可能顯示不完整,則可以調整'Borders->left'的值來達到合适的效果,若放棄已調整的内容,則可以選擇'Reset'按鈕即可。

Python 資料分析(一)[MAC]

說明:

本文内容主要來自《利用Python進行資料分析》一書,

筆者以學習的方式進行整理,相關資料連結:http://github.com/pydata/pydata-book 

轉載請注明。