读书笔记--python数据可视化--005_导出数据到JSON、CSV和EXcel
2015-12-27 11:40
886 查看
在做数据可视化时,我们通常只是使用其他人的数据,所以导入和读取数据是只要的工作。然而,不管是我们还是他人的需要,不管是现在还是将来的需要,我们缺失需要把产生或者处理过的数据导出或写到某个地方。
对于Excel写的部分,需要安装xlwt模块。
示例代码:
命令行的命令:
注意:
[1]这里面的用fields = struct.unpack_from(mask, line)这种方式导入数据时发现不能导入数据量大的数据,我于是只是用100行的数据进行实验。所以,建议使用NumPy的数据导入方式。要不然会报错:
struct.error: unpack_from requires a buffer of at least 28 bytes
对于Excel写的部分,需要安装xlwt模块。
$ pip install xlwt
示例代码:
#-*- coding: UTF-8 -*- ''' ################################################# # Author : 余欢 # Date : Dec 27, 2015 10:30:29 AM #company : 南京师范大学--大数据实验室 # description : ################################################# ''' import argparse import csv import json import os import struct import sys import xlwt try: import cStringIO as StringIO except: import StringIO def import_data(import_file): ''' 从数据文件中导入数据,这里使用定宽数据,格式为: 161322597 0386544351896 0042 ''' mask="9s14s5s" data = [] with open(import_file, "r") as f: for line in f: #将一行解析成一个元组 fields = struct.unpack_from(mask, line) #清楚每个字段两侧的空白字符,并打包到一个列表中 data.append(list([f.strip() for f in fields])) return data def write_data(data, export_format): if export_format == "csv": return write_csv(data) elif export_format == "json": return write_json(data) elif export_format == "xlsx": return write_xlsx(data) else: raise Exception("Illegal format defined") def write_csv(data): ''' 将数据导入导CSV文件中.将csv文件当作一个字符串返回 ''' f = StringIO.StringIO() writer = csv.writer(f) for row in data: writer.writerow(row) return f.getvalue() def write_json(data): ''' 将数据导入导json文件中 ''' return json.dump(data) def write_xlsx(data): ''' 将数据导入导Excel文件中 ''' book = xlwt.Workbook() sheet1 = book.add_sheet("Sheet 1") row = 0 for line in data: col = 0 for datum in line: print datum sheet1.write(row, col, datum) col += 1 row += 1 if row > 65535: print >> sys.stderr, "一张工作薄无法存储大于65535行数据" break #保存文件并返回 f = StringIO.StringIO() book.save(f) return f.getvalue() if __name__ == "__main__": ''' 解析命令行参数中传入的文件路径,导入数据并导出成要求的格式 ''' #1 解析命令行参数 parser = argparse.ArgumentParser() parser.add_argument("import_file", help="Path to a fixed-width data file.") parser.add_argument("export_format", help="Export format:json, cav, xlsx") args = parser.parse_args() if args.import_file is None: print >> sys.stderr, "您没有输入源数据文件!" sys.exit(1) if args.export_format is None: print >> sys.stderr, "您必须指定要导出的数据格式!" sys.exit(1) if not os.path.isfile(args.import_file): print >> sys.stderr, "您输入的源数据文件的路径有误:%s" % args.import_file sys.exit(1) #读取数据 data = import_data(args.import_file) #打印导出的数据 print write_data(data, args.export_format)
命令行的命令:
/root/Desktop/data-visualization/data_visualization_Code/3367OS_02_Code/ch02-fixed-width-1M-2.data xlsx
注意:
[1]这里面的用fields = struct.unpack_from(mask, line)这种方式导入数据时发现不能导入数据量大的数据,我于是只是用100行的数据进行实验。所以,建议使用NumPy的数据导入方式。要不然会报错:
struct.error: unpack_from requires a buffer of at least 28 bytes
相关文章推荐
- python 自定义信号处理器
- [Python]sqlite3二进制文件存储问题(BLOB)(You must not use 8-bit bytestrings unless you use a text_factory...)
- python模块学习之OS模块
- python基础篇
- 读书笔记--python数据可视化--004_读取JSON数据
- Python标准库02 时间与日期 (time, datetime包)
- python成长之路——第一天
- 初学python1
- python中的subprocess.Popen()使用
- Python基础第一篇
- 简明Python教程
- python build-in functions
- python初级学习之基于收发邮件的远程控制程序
- 一个用Python编写的股票数据(沪深)爬虫和选股策略测试框架
- python之路之猜数游戏
- 使用web ssh 登陆设备---gateone开发之旅
- Python
- Python数据库ORM SQLAlchemy 0.7学习笔记(7) 关系
- python中%r和%s的区别
- 【Python笔记】Python多线程进程如何正确响应Ctrl-C以实现优雅退出