Python数据持久化-csv、excel篇

简介: 2018年7月4日笔记学习目标:1.会使用Python第三方模块操作CSV文件2.会使用Python第三方模块操作EXCEL文件本章内容:Python操作CSV:什么是CSV、Python如何操作CSV文件、Python如何写入CSV文件Python操作EXCEL:利用xlrd模块操作Excel、利用xlwt模块写入EXCEL、xlutils结合xlrd操作EXCELPython操作CSV1.什么是CSVCSV是一种通用的,相对简单的文件格式,被用户、商业和科学广泛应用。

2018年7月4日笔记
学习目标:
1.会使用Python第三方模块操作CSV文件
2.会使用Python第三方模块操作EXCEL文件

本章内容:
Python操作CSV:什么是CSV、Python如何操作CSV文件、Python如何写入CSV文件
Python操作EXCEL:利用xlrd模块操作Excel、利用xlwt模块写入EXCEL、xlutils结合xlrd操作EXCEL

Python操作CSV

1.什么是CSV

CSV是一种通用的,相对简单的文件格式,被用户、商业和科学广泛应用。最广泛的应用是在程序之间转移表格数据,而这些程序本身是不兼容的格式上进行操作的。因为大量程序都支持CSV变体,至少是作为一个可选择的输入/输出格式。
例如,一个用户可以需要交换信息,从一个私有格式存储数据的数据库程序,得到一个数据格式完全不同的电子表格。最有可能的情况是,该数据库程序被导出数据为“CSV”,然后被导出的CSV文件可以被电子表格程序导入。
“CSV”并不是一种单一的、定义明确的格式。因此在实践中,术语“CSV”泛指具有以下特征的任何文件:

  1. 纯文本,使用某个字符,比如ASCII、Unicode、EBCDIC或GB2312,由记录组成;
  2. 每条记录被分隔符分隔为字段(典型分隔符有逗号、分号或制表符);
  3. 有时分隔符可以包括可选的空格;
  4. 每条记录都有同样的字段序列。

2.读取csv文件

运行代码的py文件所在的文件夹需要有销售相关企业信息.csv这个文件,
此文件下载链接: https://pan.baidu.com/s/1j8_kSiEFoB_lrLPNSJAiSw 密码: 8248
文件下载后要和被执行的py文件放到同一级目录

import csv

if __name__ == "__main__":
    with open("销售相关企业信息.csv") as csvFile:
        reader = csv.reader(csvFile)
        print(type(reader))
        for i in reader:
            print(i,type(i))

上面一段代码的运行结果如下:

<class '_csv.reader'>
['类别编号', '类别名称', '说明'] <class 'list'>
['1', '饮料', '软性饮料,咖啡,啤酒,及麦酒'] <class 'list'>
['2', '调味品', '甜酸酱,配料,涂料,及香料'] <class 'list'>
['3', '点心', '甜点心,糖果,甜面包'] <class 'list'>
['4', '日用品', '寿司'] <class 'list'>
['5', '谷类/麦片', '面包,饼干,面团,麦片'] <class 'list'>
['6', '肉/家禽', '肉品'] <class 'list'>
['7', '特制品', '水果干及豆腐'] <class 'list'>
['8', '海鲜', '海带及鱼类'] <class 'list'>

3.写入csv文件

import csv

if __name__ == "__main__":
    with open("./csvTest.csv","w") as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow(['id','url','keywords'])
        data = [
            ['1','http://www.baidu.com','百度'],
            ['2','http://www.tmall.com','天猫'],
            ['3','http://www.jd.com','京东']
        ]
        writer.writerows(data)

上面一段代码运行产生的csv文件如下图所示:


图片.png-7.6kB
图片.png-7.6kB

让产生的csv文件不空行,只需要在open函数内添加参数newline=''

import csv

if __name__ == "__main__":
    with open("./csvTest.csv",\
              "w",newline='') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow(['id','url','keywords'])
        data = [
            ['1','http://www.baidu.com','百度'],
            ['2','http://www.tmall.com','天猫'],
            ['3','http://www.jd.com','京东']
        ]
        writer.writerows(data)

上面一段代码运行产生的csv文件如下图所示:


图片.png-4.4kB
图片.png-4.4kB

4.小结

简述Python如何读写csv
open()函数产生的文件赋值给file变量.
用csv.reader(file)产生一个reader用来读文件,reader是一个可迭代对象,数据类型为csv.reader
用csv.writer(file)产生一个writer用来写文件,reader是一个可迭代对象,数据类型为csv.writer

Python操作Excel

1.利用xlrd模块读取Excel

运行代码的py文件所在的文件夹需要有某公司贸易数据.xlsx这个文件,
此文件下载链接: https://pan.baidu.com/s/1shU7evZJ8KFEmNAqoMwlBw 密码: wr7q
文件下载后要和被执行的py文件放到同一级目录

1.1 读取excel文件工作表中第1个工作薄的第1行。

import xlrd

if __name__ == "__main__":
    excel = xlrd.open_workbook('某公司贸易数据.xlsx')
    sheet = excel.sheets()[1]
    row = sheet.row_values(0)
    print(row)

上面一段代码的运行结果如下:

['产品编号', '产品', '供应商编号', '类别编号', '单位数量', '单价', '库存量', '已订购量', '安全存量', '不再销售']

1.2 读取excel文件工作表中第2个工作簿的第4行第3列的数据

import xlrd

if __name__ == "__main__":
    excel = xlrd.open_workbook('某公司贸易数据.xlsx')
    sheet = excel.sheets()[1]
    cell = sheet.cell(3,2)
    print(cell,type(cell))
    cellValue = sheet.cell(3,2).value
    print(cellValue,type(cellValue))

上面一段代码的运行结果如下:

text:'1' <class 'xlrd.sheet.Cell'>
1 <class 'str'>

1.3 对excel文件的每一行进行循环遍历

import xlrd

if __name__ == '__main__':
    excel = xlrd.open_workbook("某公司贸易数据.xlsx")
    sheet = excel.sheet_by_index(0)
    for i in range(sheet.nrows):
        print(sheet.row_values(i))

上面一段代码的运行结果如下:

['类别编号', '类别名称', '说明']
['1', '饮料', '软性饮料,咖啡,啤酒,及麦酒']
['2', '调味品', '甜酸酱,配料,涂料,及香料']
['3', '点心', '甜点心,糖果,甜面包']
['4', '日用品', '寿司']
['5', '谷类/麦片', '面包,饼干,面团,麦片']
['6', '肉/家禽', '肉品']
['7', '特制品', '水果干及豆腐']
['8', '海鲜', '海带及鱼类']

1.4 对excel文件的每一列进行循环遍历

import xlrd

if __name__ == '__main__':
    excel = xlrd.open_workbook("某公司贸易数据.xlsx")
    sheet = excel.sheet_by_index(0)
    for i in range(sheet.ncols):
        print(sheet.col_values(i))

上面一段代码的运行结果如下:

['类别编号', '1', '2', '3', '4', '5', '6', '7', '8']
['类别名称', '饮料', '调味品', '点心', '日用品', '谷类/麦片', '肉/家禽', '特制品', '海鲜']
['说明', '软性饮料,咖啡,啤酒,及麦酒', '甜酸酱,配料,涂料,及香料', '甜点心,糖果,甜面包', '寿司', '面包,饼干,面团,麦片', '肉品', '水果干及豆腐', '海带及鱼类']

2.利用xlwt模块写入Excel

新建一个excel,第1行第2列写入内容excel test,保存文件,命名为excelTest.xls

import xlwt

if __name__ == "__main__":
    excel = xlwt.Workbook()
    sheet = excel.add_sheet("表01")
    sheet.write(0,1,'excel test')
    excel.save("excelTest.xls")

上面一段代码运行截图如下:


image_1chqns1mi15pnr4l1564qrdovg9.png-26.7kB
image_1chqns1mi15pnr4l1564qrdovg9.png-26.7kB

3.利用xlutils结合xlrd操作Excel

修改excel文件中的第2行第3列的值为,之前该格子的内容为"软性饮料,咖啡,啤酒,及麦酒"

import xlrd
from xlutils.copy import copy

if __name__ == "__main__":
    excel = xlrd.open_workbook("某公司贸易数据.xlsx")
    excelNew = copy(excel)
    sheet = excelNew.get_sheet(0)
    sheet.write(1,2,"酒")
    excelNew.save("某公司贸易数据(修改1).xls")
image_1chqof3tk4v4frq1dla4501fntm.png-23kB
image_1chqof3tk4v4frq1dla4501fntm.png-23kB

4.利用openpyxl操作Excel

利用get_sheet_names获取所有工作簿的名字,openpyxl库访问第1行第3列是sheet.value(1,3)

from openpyxl import load_workbook

if __name__ == '__main__':
    excel = load_workbook("某公司贸易数据.xlsx")
    sheetNames = excel.get_sheet_names()
    print(sheetNames)
    sheet = excel.get_sheet_by_name("客户")
    for i in range(1,5):
        print(sheet.cell(row=i,column=3).value)
    sheet['C3'] = "张先生"
    print("修改excel文件后,再次打印:")
    for i in range(1,5):
        print(sheet.cell(row=i,column=3).value)

上面一段代码运行结果如下:

['产品类别', '产品资料', '订货明细', '订货主档', '员工', '商品供应', '客户', '货运公司']
联系人
陈小姐
黄小姐
胡先生
修改excel文件后,再次打印:
联系人
陈小姐
张先生
胡先生

作业

image_1chqq144d12icgobgtm107hj7t13.png-65.4kB
image_1chqq144d12icgobgtm107hj7t13.png-65.4kB
import xlwt

if __name__ == '__main__':
    excel = xlwt.Workbook()
    sheet = excel.add_sheet("sheet1")
    table = [['姓名','分数'],['小明','80'],['小王','90'],['小刚','100']]
    for i in range(len(table)):
        for j in range(len(table[i])):
            sheet.write(i,j,table[i][j])
    excel.save("excelTest.xls")
目录
相关文章
|
9天前
|
数据挖掘 PyTorch TensorFlow
|
4天前
|
机器学习/深度学习 数据采集 算法
数据稀缺条件下的时间序列微分:符号回归(Symbolic Regression)方法介绍与Python示例
有多种方法可以处理时间序列数据中的噪声。本文将介绍一种在我们的研究项目中表现良好的方法,特别适用于时间序列概况中数据点较少的情况。
16 1
数据稀缺条件下的时间序列微分:符号回归(Symbolic Regression)方法介绍与Python示例
|
7天前
|
算法 Python
揭秘!Python数据魔术师如何玩转线性回归,让你的预测精准到不可思议
【9月更文挑战第13天】在数据科学领域,线性回归以其优雅而强大的特性,将复杂的数据关系转化为精准的预测模型。本文将揭秘Python数据魔术师如何利用这一统计方法,实现令人惊叹的预测精度。线性回归假设自变量与因变量间存在线性关系,通过拟合直线或超平面进行预测。Python的scikit-learn库提供了简便的LinearRegression类,使模型构建、训练和预测变得简单直接。
20 5
|
9天前
|
存储 算法 测试技术
预见未来?Python线性回归算法:数据中的秘密预言家
【9月更文挑战第11天】在数据的海洋中,线性回归算法犹如智慧的预言家,助我们揭示未知。本案例通过收集房屋面积、距市中心距离等数据,利用Python的pandas和scikit-learn库构建房价预测模型。经过训练与测试,模型展现出较好的预测能力,均方根误差(RMSE)低,帮助房地产投资者做出更明智决策。尽管现实关系复杂多变,线性回归仍提供了有效工具,引领我们在数据世界中自信前行。
24 5
|
9天前
|
机器学习/深度学习 数据挖掘 TensorFlow
🔍揭秘Python数据分析奥秘,TensorFlow助力解锁数据背后的亿万商机
【9月更文挑战第11天】在信息爆炸的时代,数据如沉睡的宝藏,等待发掘。Python以简洁的语法和丰富的库生态成为数据分析的首选,而TensorFlow则为深度学习赋能,助你洞察数据核心,解锁商机。通过Pandas库,我们可以轻松处理结构化数据,进行统计分析和可视化;TensorFlow则能构建复杂的神经网络模型,捕捉非线性关系,提升预测准确性。两者的结合,让你在商业竞争中脱颖而出,把握市场脉搏,释放数据的无限价值。以下是使用Pandas进行简单数据分析的示例:
23 5
|
9天前
|
存储 安全 算法
RSA在手,安全我有!Python加密解密技术,让你的数据密码坚不可摧
【9月更文挑战第11天】在数字化时代,信息安全至关重要。传统的加密方法已难以应对日益复杂的网络攻击。RSA加密算法凭借其强大的安全性和广泛的应用场景,成为保护敏感数据的首选。本文介绍RSA的基本原理及在Python中的实现方法,并探讨其优势与挑战。通过使用PyCryptodome库,我们展示了RSA加密解密的完整流程,帮助读者理解如何利用RSA为数据提供安全保障。
23 5
|
2天前
|
存储 数据挖掘 测试技术
Python接口自动化中操作Excel文件的技术方法
通过上述方法和库,Python接口自动化中的Excel操作变得既简单又高效,有助于提升自动化测试的整体质量和效率。
8 0
|
27天前
|
关系型数据库 MySQL Shell
不通过navicat工具怎么把查询数据导出到excel表中
不通过navicat工具怎么把查询数据导出到excel表中
27 0
|
10天前
|
数据采集 存储 数据挖掘
使用Python读取Excel数据
本文介绍了如何使用Python的`pandas`库读取和操作Excel文件。首先,需要安装`pandas`和`openpyxl`库。接着,通过`read_excel`函数读取Excel数据,并展示了读取特定工作表、查看数据以及计算平均值等操作。此外,还介绍了选择特定列、筛选数据和数据清洗等常用操作。`pandas`是一个强大且易用的工具,适用于日常数据处理工作。
|
23天前
|
SQL JSON 关系型数据库
n种方式教你用python读写excel等数据文件
n种方式教你用python读写excel等数据文件