读书笔记--python数据可视化--005_导出数据到JSON、CSV和EXcel

来源:互联网 发布:淘宝卖家高信誉等级 编辑:程序博客网 时间:2024/06/06 13:03

在做数据可视化时,我们通常只是使用其他人的数据,所以导入和读取数据是只要的工作。然而,不管是我们还是他人的需要,不管是现在还是将来的需要,我们缺失需要把产生或者处理过的数据导出或写到某个地方。

对于Excel写的部分,需要安装xlwt模块。

$ pip install xlwt

示例代码:

#-*- coding: UTF-8 -*-''' #################################################   # Author : 余欢 # Date : Dec 27, 2015    10:30:29 AM #company : 南京师范大学--大数据实验室 # description :  ################################################# '''import argparseimport csvimport jsonimport osimport structimport sysimport xlwttry:    import cStringIO as StringIOexcept:    import StringIOdef 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 datadef 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

1 0
原创粉丝点击