分享

Python数据可视化编程实战——导入数据

 _王文波 2017-04-04

限时干货下载:添加微信公众号“数据玩家「fbigdata

回复【2】免费获取「完整数据分析资料,包括SPSS\SAS\SQL\EXCEL\Project!

DataScientists

优质新三板投资机会,请联系微.信.号:6048856)

1.从csv文件导入数据

原理:with语句打开文件并绑定到对象f。不必担心在操作完资源后去关闭数据文件,with的上下文管理器会帮助处理。然后,csv.reader方法返回reader对象,通过该对象遍历所读取文件的所有行。

1#!/usr/bin/env python23import csv 45 filename = 'ch02-data.csv'67 data = 8try: 9 with open(filename) as f:10 reader = csv.reader(f)11 c = 012 for row in reader:13 if c == 0:14 header = row15 else:16 data.append(row)17 c += 118except csv.Error as e:19 print'Error reading CSV file at line %s: %s' % (reader.line_num, e)20 sys.exit(-1)2122if header:23 print header24 print2526for datarow in data:27 print datarow

实验结果截图:

2.从Excel中导入文件数据

Excel文件可以转换成csv文件,然后通过上述的方法导入,但是如果想自动化地对大量文件进行数据管道处理(作为数据连续处理流程的一部分),那么手动把每个Excel文件转换成CSV文件的做法就行不通了。

原理:使用xlrd模块打开文件的工作簿,然后根据行数(nrows)和列数(ncols)读取单元格的内容,通过调用open_workbook方法,返回一个xlrd.book实例。

1import xlrd 2from xlrd.xldate import XLDateAmbiguous 34 file = 'ch02-xlsxdata.xlsx'56 wb = xlrd.open_workbook(filename=file) 78 ws = wb.sheet_by_name('Sheet1') 910 dataset = 1112for 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 datetime20 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 e24 dataset.append(col)2526from pprint import pprint2728 pprint(dataset)

实验结果:

3.从定宽数据文件导入数据

时间的日志文件和基于时间序列的文件是数据可视化中最常见的数据源。有时候,可以以制表符分隔数据这种CSV方言来读取它们,但有时它们不是通过任何特殊字符分隔的。实际上,这些文件的字段是有固定宽度的,我们能通过格式来匹配并提取数据。

例如(本例子的数据是使用代码生成的):

处理方法:

1.指定要读取的数据文件。2.定义数据读取的方式。3.逐行读取文件并根据格式把每行解析成单独的数据字段。4.安单独数据字段的形式打印每一行。

1import struct 2import string 34 mask='9s14s5s'5 parse = struct.Struct(mask).unpack_from 6print'formatstring {!r}, record size: {}'.format(\ 7 mask, struct.calcsize(mask)) 89 datafile = 'ch02-fixed-width-1M.data'1011with 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对象中。

代码如下:

1import requests2from pprint import pprint3 url = 'https://api.github.com/users/justglowing'4 r = requests.get(url)5 json_obj = r.json6 pprint(json_obj)

结果:

结语:上个月在帮别人做毕业设计,用的FLASK,然后这个月还要用JAVA EE来写个商城网站,忙的要死,一直没更新博客,今天周日图书馆看了python数据可视化,走神一大半,唉,还是更博客吧,可惜的是,说好的要做的精品系列呢。。。。。。。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多