《利用python進行資料分析》讀書筆記之案例一:來自bit.ly的1.usa.gov資料
阿新 • • 發佈:2019-02-08
從網上下來的資料檔案,先讀取檔案中的第一行檢視是什麼資料型別
path="usagov_data.txt"
open(path).readline()
結果是:
從上面的資料格式可看出是json格式,在python中有許多內建或第三方模組可以將json轉化成python的字典對 象,將使用json模組及loads函式逐行載入該資料檔案:
結果是:這只是records[0]import json path="usagov_data.txt" records=[json.loads(line) for line in open(path)]
(1) 想知道該資料集中最常出現的是哪個時區:先要得到表示時區的資料,然後再計數:
time_zones=[rec['tz'] for rec in records if 'tz' in rec] #加if是因為並不是所有記錄都有時區欄位
結果是:
from collections import Counter counts=Counter(time_zones) counts.most_common(10)
結果是:
(2) 將資料轉換成DataFrame資料結構
import pandas as pd
import numpy as np
frame=pd.DataFrame(records)
結果是:
(3) 在dataframe中用來計數的可以使用value_counts函式,返回得到的是Series物件
tz_counts=frame['tz'].value_counts()
結果是:
可以看到上述的資料展示中有缺失值,fillna函式可以用來替換缺失值(NA),而未知值可以通過布林陣列索引 加以替換:
clean_tz=frame['tz'].fillna('Missing')
clean_tz[clean_tz=='']='Unknown'
tz_counts=clean_tz.value_counts()
結果是:
(4) 可以得到一張水平條形圖:
import matplotlib.pyplot as plt
tz_counts[:10].plot(kind='barh',rot=0)
plt.show()
結果是: