• csv和excel文件操作


    csv和excel文件操作

    csv文件读操作

    1.什么是csv文件

    csv文件叫逗号分隔值文件 - 每一行的内容是通过逗号来区分出不同的列。
    csv文件可以直接通过excel打开,以行列的形式保存和显示数据,但是相对excel文件,它只能存储数据,不能保存公式和函数。

    2.csv读操作

    导入csv模块

    import csv
    
    • 1

    1)创建打开csv文件
    方式一:(自己手动关闭文件)
    文件对象 = open()
    操作文件
    文件对象.close()

    # f = open('files/电影.csv', 'r', encoding='utf-8')
    # 文件操作
    # f.close()
    
    • 1
    • 2
    • 3

    方式二:(文件会自动关闭)
    with open() as 文件对象:
    (缩进)操作文件

    # with open('files/lagou.csv', encoding='utf-8') as f:
    	# 文件操作
    
    • 1
    • 2

    2)创建reader获取文件内容
    方式一:
    csv.reader(文件对象) - 获取文件内容返回一个迭代器,并且以列表为单位返回每一行内容。
    方式二:
    csv.DictReader(文件对象) - 获取文件内容返回一个迭代器,并且以字典为单位返回第二行开始的每一行内容(字典的键是第一行内容)。

    f = open('files/电影.csv', 'r', encoding='utf-8')
    reader1 = csv.reader(f)
    print(list(reader1))
    reader2 = csv.DictReader(f)
    print(list(reader2))
    
    f.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    练习:计算拉钩数据中,各个城市数据分析岗位的平均薪资(此处的文件都是自己有的csv文件)

    import csv
    from re import findall
    with open('files/lagou.csv', encoding='utf-8') as f:
        reader = csv.DictReader(f)
        # 处理数据
        cities = {}
        for job in reader:
            c = job['city']
            m = job['salary']           # '8k-16k'
            result = findall(r'(\d+)k-(\d+)k', m)            # [(8, 16)]  ->  (8, 16)
            # print(result)
            if not result:
                continue  # 判断有没有薪资,没有薪资就继续下一项
            start, end = result[0]   # 将列表result中的元组赋值给start和end
    
            moneys = cities.get(c, [])
            moneys.append((int(start) + int(end))/2)
            print(moneys)
            cities[c] = moneys
    
        # round(数字, 小数位数)       -   让数字保留指定位数的小数
        for key in cities:
            print(key, round(sum(cities[key]) / len(cities[key]), 2))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    csv文件写操作

    1.csv文件写操作

    1)打开文件

    import csv
    f = open('files/data.csv', 'w', encoding='utf-8', newline='')
    
    • 1
    • 2

    2)创建writer对象
    csv.writer(文件对象) - 创建writer对象,这个对象在写入数据的时候一行对应一个列表。
    csv.DictWriter(文件对象,键列表) - 创建writer对象,以字典为单位写入数据。
    a.=以列表为单位写入一行内容

    writer = csv.writer(f)
    # 一次写入一行内容
    writer.writerow(['姓名', '出生日期', '性别', '电话'])
    writer.writerow(['小明', '1999-9-9', '男', '110'])
    # 一次写入多行内容
    writer.writerows([
        ['小花', '2000-3-24', '女', '112'],
        ['张三', '1999-8-11', '男', '114']
    ])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    b.=以字典为单位写入一行内容

    writer = csv.DictWriter(f, ['姓名', '出生日期', '性别', '电话'])
    # 写入文件头(将字典的键写入到文件开头)
    writer.writeheader()
    # 一次写入一行内容
    writer.writerow({'姓名': 'xiaoming', '出生日期': '1999-9-9', '性别': '男', '电话': '113'})
    # 一次写入多行内容
    writer.writerows([
        {'姓名': 'xiaohong', '出生日期': '1999-9-9', '性别': '女', '电话': '113'},
        {'姓名': 'zhangsan', '出生日期': '1999-9-9', '性别': '男', '电话': '113'}
    ])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    虚拟环境

    1.系统环境 - 安装python就可以为计算机提供一个python的系统环境

    2.虚拟环境 - 程序员根据需要自己创建的python环境

    那个创建虚拟环境的前提:存在系统环境

    3.环境的作用:

    1)提供python解释器
    2)提供第三方库
    虚拟环境的存在可以让第三方库根据类别或者项目分开管理

    4.使用虚拟环境的建议:

    1)工作的时候:一个项目一个虚拟环境,并且将虚拟环境直接放在项目中
    2)学习的时候:一类项目一个虚拟环境,不同类别的虚拟环境全部放在一个地方

    5.怎么创建虚拟环境

    1)使用pycharm创建
    2)使用指令创建

    excel文件读操作

    导入openpyxl

    import openpyxl
    
    • 1

    1.认识excel文件

    工作簿:一个excel文件就是一个工作簿
    工作表:一个工作簿可以有多个工作表(至少一个)
    单元格:是excel我呢见保存数据的基本单位
    行号和列号:可以确定单元格位置

    2.获取excel文件内容

    1)打开excel文件创建工作簿对象
    方法:
    a.openpyxl.open(excel文件路径)
    b.openpyxl.load_workbook(excel文件路径)

    # workbook = openpyxl.open('files/三国人物数据.xlsx')
    workbook = openpyxl.load_workbook('files/三国人物数据.xlsx')
    
    • 1
    • 2

    获取工作簿中所有的工作表的表名

    result = workbook.sheetnames
    print(result)   # ['全部人物数据', '三个国家的武力', '三个国家武将的武力', '三国武将数据', '三国文官数据']
    
    • 1
    • 2

    2)获取工作表
    方法:
    a.工作簿对象.active - 获取活跃表(选中的表)
    b.工作簿对象[工作表名称] - 获取指定名字对应的工作表

    sheet1 = workbook.active
    print(sheet1)
    sheet2 = workbook['三国武将数据']
    print(sheet2)
    
    • 1
    • 2
    • 3
    • 4

    3)获取单元格
    方法:
    工作表对象.cell(行号,列号) - 获取指定的单元格

    cell1 = sheet2.cell(8, 1)
    cell2 = sheet2.cell(12, 1)
    print(cell1, cell2)
    
    • 1
    • 2
    • 3

    4)获取单元格内容
    方法:
    单元格对象.value

    print(cell1.value)
    print(cell2.value)
    
    • 1
    • 2

    5)获取最大行号和最大列号(保存了数据的有效行和有效列)
    方法:
    a.工作表对象.max_row
    b.工作表对象.max_column

    print(sheet2.max_row)
    print(sheet2.max_column)
    
    • 1
    • 2

    获取第一列所有数据

    column1 = []
    for row in range(1, sheet2.max_row + 1):
        cell = sheet2.cell(row, 1)   # 行号固定为1,列号从1到末尾
        column1.append(cell.value)
    print(column1)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    获取第一列到第三列所有的数据

    for col in range(1, 4):
        column = []
        for row in range(1, sheet2.max_row + 1):
            cell = sheet2.cell(row, col)
            column.append(cell.value)
        print(column)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    excel文件写操作

    注意:不管是以什么样的方式对excel文件进行写操作,操作完成后必须保存。
    导入openpyxl

    import openpyxl
    
    • 1

    1.新建工作簿

    1)新建工作簿对象

    workbook = openpyxl.Workbook()
    
    • 1

    2)保存
    方法:
    工作簿对象.save(文件路径)

    workbook.save('files/student.xlsx')
    
    • 1

    实际中新建工作簿的时候需要先判断工作簿对应的文件是否已经存在,存在就不需要新建,不存在才新建。
    方法一:

    try:
        workbook = openpyxl.open('files/student2.xlsx')
    except FileExistsError:
        workbook = openpyxl.Workbook()
        workbook.save('files/student2.xlsx')
    
    • 1
    • 2
    • 3
    • 4
    • 5

    方法二:
    os.path.exists(文件路径) - 判断指定文件是否存在,存在返回True,不存在返回False

    import os
    if os.path.exists('files/student2.xlsx'):
        workbook = openpyxl.open('files/student2.xlsx')
    else:
        workbook = openpyxl.Workbook()
        workbook.save('files/student2.xlsx')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.工作表的写操作

    1)新建工作表
    方法:
    工作簿对象.create_sheet(表名)

    workbook.create_sheet()
    workbook.create_sheet('Python')
    workbook.create_sheet('Java', 0)
    workbook.save('files/student2.xlsx')
    
    • 1
    • 2
    • 3
    • 4

    实际中的新建表:没有的时候才新建,有的时候直接打开

    if 'Python' in workbook.sheetnames:
        sheet = workbook['Python']
    else:
        sheet = workbook.create_sheet('Python')
        workbook.save('files/student2.xlsx')
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2)删除工作表
    方法:
    工作簿对象.remove(工作表对象)

    workbook.remove(workbook['Sheet1'])
    workbook.save('files/student2.xlsx')
    
    • 1
    • 2

    实际中删除表:存在的时候才能删

    if 'Sheet1' in workbook.sheetnames:
        workbook.remove(workbook['Sheet1'])
        workbook.save('files/student2.xlsx')
    
    • 1
    • 2
    • 3

    3.单元格的写操作(增删改都可以)

    方法:
    单元格对象.value = 数据

    java_sheet = workbook['Java']
    java_sheet.cell(1, 3).value = '电话'
    java_sheet.cell(2, 1).value = None
    java_sheet.cell(4, 2).value = 'stu003'
    workbook.save('files/student2.xlsx')
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    放徦期间在线客服系统的用处?总结来了
    洛谷P4454 破解D-H协议
    【Linux】Linux下静态库(.a)和动态库(.so)的制作和使用
    [附源码]Python计算机毕业设计Django财务管理系统
    [Qt开发]一口气搞懂串口通信
    二硫化钼量子点修饰纳米金棒/CdS纳米棒|二硫化钼量子点/g-C3N4复合光催化剂|马来酰亚胺修饰二硫化钼MoS2-MAL
    systemui状态栏添加新图标
    轻量级的VsCode为何越用越大?为什么吃了我C盘10G?如何无痛清理VsCode缓存?手把手教你为C盘瘦身
    解决在pycharm中使用matplotlib画图问题
    动物实验文献检索——Sci
  • 原文地址:https://blog.csdn.net/shasha_bucou_sha/article/details/126273058