Python數據可視化編程實戰——導入數據


 1.從csv文件導入數據

原理:with語句打開文件並綁定到對象f。不必擔心在操作完資源后去關閉數據文件,with的上下文管理器會幫助處理。然后,csv.reader()方法返回reader對象,通過該對象遍歷所讀取文件的所有行。

 

 1 #!/usr/bin/env python
 2 
 3 import csv
 4 
 5 filename = 'ch02-data.csv'
 6 
 7 data = []
 8 try:
 9     with open(filename) as f:
10         reader = csv.reader(f)
11         c = 0
12         for row in reader:
13             if c == 0:
14                 header = row
15             else:
16                 data.append(row)
17             c += 1
18 except csv.Error as e:
19     print "Error reading CSV file at line %s: %s" % (reader.line_num, e)
20     sys.exit(-1)
21 
22 if header:
23     print header
24     print '=================='
25 
26 for datarow in data:
27     print datarow

 

 

 

實驗結果截圖:

2.從Excel中導入文件數據

Excel文件可以轉換成csv文件,然后通過上述的方法導入,但是如果想自動化地對大量文件進行數據管道處理(作為數據連續處理流程的一部分),那么手動把每個Excel文件轉換成CSV文件的做法就行不通了。

原理:使用xlrd模塊打開文件的工作簿,然后根據行數(nrows)和列數(ncols)讀取單元格的內容,通過調用open_workbook()方法,返回一個xlrd.book實例。

 

 1 import xlrd
 2 from xlrd.xldate import XLDateAmbiguous
 3 
 4 file = 'ch02-xlsxdata.xlsx'
 5 
 6 wb = xlrd.open_workbook(filename=file)
 7 
 8 ws = wb.sheet_by_name('Sheet1')
 9 
10 dataset = []
11 
12 for r in range(ws.nrows):
13     col = []
14     for c in range(ws.ncols):
15         col.append(ws.cell(r, c).value)
16         if ws.cell_type(r, c) == xlrd.XL_CELL_DATE:
17             try:
18                 print ws.cell_type(r, c)
19                 from datetime import datetime
20                 date_value = xlrd.xldate_as_tuple(ws.cell(r, c).value, wb.datemode)
21                 print datetime(*date_value)
22             except XLDateAmbiguous as e:
23                 print e
24     dataset.append(col)
25 
26 from pprint import pprint
27 
28 pprint(dataset)

 

 

 

實驗結果:

3.從定寬數據文件導入數據

時間的日志文件和基於時間序列的文件是數據可視化中最常見的數據源。有時候,可以以制表符分隔數據這種CSV方言來讀取它們,但有時它們不是通過任何特殊字符分隔的。實際上,這些文件的字段是有固定寬度的,我們能通過格式來匹配並提取數據。

例如(本例子的數據是使用代碼生成的):

處理方法:

1.指定要讀取的數據文件。2.定義數據讀取的方式。3.逐行讀取文件並根據格式把每行解析成單獨的數據字段。4.安單獨數據字段的形式打印每一行。

 

 1 import struct
 2 import string
 3 
 4 mask='9s14s5s'
 5 parse = struct.Struct(mask).unpack_from
 6 print 'formatstring {!r}, record size: {}'.format(\
 7                         mask, struct.calcsize(mask))
 8 
 9 datafile = 'ch02-fixed-width-1M.data'
10 
11 with open(datafile, 'r') as f:
12     for line in f:
13         fields = parse(line)
14         print 'fields: ', [field.strip() for field in fields]

 

實驗結果:

4.從JSON數據源導入數據

操作步驟如下:1.指定GitHub URL來讀取JSON格式數據。2.使用requests模塊訪問指定的URL,並讀取內容。3.讀取內容並將之轉化為JSON格式的對象。4.迭代訪問JSON對象,對於其中的每一項,讀取每個代碼庫的URL值。

原理:首先,使用requests模塊獲取遠程資源。Requests模塊提供了簡單的API來定義HTTP謂詞,我們只需要發出get()方法調用。我們只對Response.json()方法感興趣,這個方法可以讀取Response.content的內容,把它解析成JSON並加載到JSON對象中。

代碼如下:

 

1 import requests
2 from pprint import pprint
3 url = 'https://api.github.com/users/justglowing'
4 r = requests.get(url)
5 json_obj = r.json()
6 pprint(json_obj)

 

結果:

 

 

結語:上個月在幫別人做畢業設計,用的FLASK,然后這個月還要用JAVA EE來寫個商城網站,忙的要死,一直沒更新博客,今天周日圖書館看了python數據可視化,走神一大半,唉,還是更博客吧,可惜的是,說好的要做的精品系列呢。。。。。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM