赞
踩
1.利用pandas读写Excel文件
2.利用pandas读写XML文件
读取,利用Pandas库的ExcelFile()方法。
写入,利用Pandas库的利用to_excel方法。
import pandas as pd import os # 获取当前文件父目录路径 father_path = os.getcwd() # 原始数据文件路径 rpath_excel = father_path+r'\data01\realEstate_trans.xlsx' # 数据保存路径 wpath_excel = father_path+r'\data01\temp_excel.xlsx' # 打开excel文件 excel_file = pd.ExcelFile(rpath_excel) # 读取文件内容 """ ExcelFile对象的parse()方法读取指定工作表的内容 ExcelFile对象的sheet_names属性可以获取Excel文件中的所有工作表 这里还用到了字典表达式来给字典赋值(看起来更加优雅) """ excel_read = {sheetName : excel_file.parse(sheetName) for sheetName in excel_file.sheet_names} # 输出Sacramento表格的price列的头10行记录 print(excel_read['Sacramento'].head(10)['price']) print(type(excel_read['Sacramento'].head(10)['price'])) # 遇到错误:ModuleNotFoundError: No module named 'xlrd' # 写入表格的price列的前10行 excel_read['Sacramento'].head(10)['price'].to_excel(wpath_excel, "price", index=False) # 遇到错误:ModuleNotFoundError: No module named 'openpyxl'
读操作时:
ModuleNotFoundError: No module named 'xlrd'
写操作时:
ModuleNotFoundError: No module named 'openpyxl'
# 在环境里安装xlrd和openpyxl模块即可
pip install xlrd
pip install openpyxl
学过java的同学对XML应该不陌生,全称是eXtensible Markup Language(扩展标记语言),虽然平时不常见,但是Web API里支持XML编码。
import pandas as pd # 一个轻量的XML解析器 import xml.etree.ElementTree as ET import os """ 读入XML数据,返回pa.DataFrame """ def read_xml(xml_FileName): with open(xml_FileName, "r") as xml_file: # 读取数据,以树的结构存储 tree = ET.parse(xml_file) # 访问树的梗节点 root = tree.getroot() # 返回DataFrame格式数据 return pd.DataFrame(list(iter_records(root))) """ 遍历有记录的生成器 """ def iter_records(records): for record in records : # 保存值的临时字典 temp_dict = {} # 遍历所有字段 for var in record: temp_dict[ var.attrib["var_name"] ] = var.text # 生成值 yield temp_dict """ 以XML格式保存数据 """ def write_xml(xmlFileName, data): with open(xmlFileName, "w") as xmlFile: # 写头部 xmlFile.write( '<?xml version="1.0" encoding="UTF-8"?>' ) xmlFile.write('<records>\n') # 写数据 xmlFile.write( '\n'.join(data.apply(xml_encode, axis=1)) ) # 写尾部 xmlFile.write("\n</records>") """ 以特定的嵌套格式将每一行编码成XML """ def xml_encode(row): # 第一步--输出record节点 xmlItem = [' <record>'] # 第二步--给行中每个字段加上XML格式<field name=···>···</field> for field in row.index: xmlItem.append( '<var var_name="{0}">{1}</var>'.format(field, row[field]) ) # 最后一步--标记record节点的结束标签 xmlItem.append(" </record>") return '\n'.join(xmlItem) # 获取当前文件父目录路径 father_path = os.getcwd() # 原始数据文件路径 rpath_xml = father_path+r'\data01\realEstate_trans.xml' # 数据保存路径 wpath_xml = father_path+r'\data01\temp_xml.xml' # 读取数据 xml_read = read_xml(rpath_xml) # 输出头10行记录 print(xml_read.head(10)) # 以XML格式写回文件 write_xml(wpath_xml, xml_read.head(10))
(1)read_xml(xml_FileName)函数
功能:读入XML数据,返回pa.DataFrame
这里利用到了一个轻量级的XML解析器:xml.etree.ElementTree。传入文件名,先读取文件内容,然后利用parse()函数解析XML,创建一个树状结构并存放在tree变量中,在tree对象上调用getroot()方法得到根节点,最后调用iter_records()函数,传入根节点,进而将返回的信息转换成DataFrame。
(2)iter_records(records)函数
功能:遍历有记录的生成器
iter_records()方法是一个生成器,从关键字yield
可以看出来,与return不同,生成器每次只向主调方法返回一个值,直到结束。
(3)write_xml(xmlFile, data)函数
功能:以XML格式保存数据
这里需要注意的是得按XML文件格式进行保存,我们要做的就是三步:保存头部格式、按格式保存数据、保存尾部格式。保存数据时用到了DataFrame对象的apply()方法,遍历内部每一行,第一个参数xml_encode指定了要应用到每一行记录上的方法,axis=1表示按行处理,默认值为0,表示按列处理。
(4)xml_encode(row)函数
功能:以特定的嵌套格式将每一行编码成XML
在写数据的过程我们会调用这个方法,对每行数据进行处理,变成XML格式。
如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。