一 基本知识概要
1.利用pandas读写Excel文件
2.利用pandas读写XML文件
二 开始动手动脑
1.利用Python读写Excel
读取,利用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
2.利用Python读写XML文件
学过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全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!
😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓
1️⃣零基础入门
① 学习路线
对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
② 路线对应学习视频
还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
③练习题
每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
2️⃣国内外Python书籍、文档
① 文档和书籍资料
3️⃣Python工具包+项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
②Python实战案例
光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
③Python小游戏源码
如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
4️⃣Python面试题
我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓