day18csv和excel文件操作

csv和excel文件操作

csv文件读操作

  1. 什么是csv文件

    csv文件叫逗号分隔值文件 - 每一行内容是通过逗号来区分出不同的列

    csv文件可以直接通过excel打开,以行列的形式保存和显示数据,但是相对excel文件,它只能存储数据,不能保存格式和函数

  2. csv读操作

    import csv
    

    (1)创建打开csv文件

    f = open('files/电影.csv','r',encoding='utf-8')
    

    (2)创建reader获取文件内容

    a. csv.reader(文件对象) - 获取文件内容,并且以列表为单位返回每一行内容

    reader1 = csv.reader(f)
    print(list(reader1))
    

    b. csv.DictReader(文件对象) - 获取文件内容,并且以字典为单位返回第2行开始的每一行内容(字典的键是第一行内容)

    reader2 = csv.DictReader(f)
    print(list(reader2))
    

    练习:计算拉钩数据中,各个城市数据分析岗位的平均薪资

    # 获取文件内容
    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)
            if not result:
                continue
            start, end = result[0]
    
            moneys = cities.get(c, [])
            moneys.append((int(start) + int(end))/2)
            cities[c] = moneys
    
        # round(数字, 小数位数)       -   让数字保留指定位数的小数
        for key in cities:
            print(key, round(sum(cities[key]) / len(cities[key]), 2))
    
  3. 处理数据:

    (1)文件对象 = open()
    操作文件
    文件对象.close()

    (2)with open() as 文件对象
    操作文件

csv文件写操作

  1. 打开文件

    f = open('files/date.csv', 'w', encoding='utf-8',newline='')
    
  2. 创建writer对象

    (1)csv.writer(文件对象) - 创建writer对象,这个对象在写入数据的时候一行对应一个列表

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

    (2)csv.DictReader(文件对象, 键列表) - 创建writer对象,以字典为单位写入数据

    writer = csv.DictWriter(f,['姓名','出生日期','性别','电话'])
    
    # 写入文件头(将字典的键写入到文件开头)
    writer.writeheader()
    
    # 一次写入一行内容
    writer.writerow({'姓名': 'xiaoming', '出生日期': '1999-9-9', '电话':'110', '性别': '男'})
    # 一次写入多行内容
    writer.writerows([
        {'姓名': 'xiaohua', '出生日期': '1999-9-9', '电话':'110', '性别': '男'},
        {'姓名': 'zhangsan', '出生日期': '1999-9-9', '电话':'110', '性别': '男'}
    ])
    

虚拟环境

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

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

    能够创建虚拟环境的前提:存在系统环境

  3. 环境的作用:

    (1)提供Python解释器
    (2)提供第三方库

    虚拟环境的存在可以让第三方库根据类别或者项目分开管理。

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

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

  5. 怎么创建虚拟环境

    (1)使用Pycharm创建
    (2)使用指令创建

excel文件读操作

认识excel文件

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

获取excel文件内容
  1. 打开excel文件创建工作簿对象

    打开方式:

    (1)openpyxl.open(excel文件路径)

    workbook = openpyxl.open('files/三国人物数据.xlsx')
    

    (2)openpyxl.load_workbook(excel文件路径)

    workbook = openpyxl.load_workbook('files/三国人物数据.xlsx')
    

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

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

    (1)工作簿对象.active - 获取活跃表(选中的表)

    sheet1 = workbook.active
    print(sheet1)
    

    (2)工作簿对象[工作表名称]

    sheet2 = workbook['三国武将数据']
    print(sheet2)
    
  3. 获取单元格

    工作表对象.cell(行号,列号)

    cell1 = sheet2.cell(8,1)
    cell2 = sheet2.cell(12,1)
    print(cell1,cell2)
    
  4. 获取单元格内容

    单元格对象.value

    print(cell1.value)
    print(cell2.value)
    
  5. 获取最大行号和最大列号(保存了数据的有效行和有效列)

    (1)工作表对象.max_row

    print(sheet2.max_row)
    

    (2)工作表对象.max_column

    print(sheet2.max_column)
    

    练习1:获取第一列所有数据

    column1 = []
    for row in range(1, sheet2.max_row+1):
        cell = sheet2.cell(row, 1)
        column1.append(cell.value)
    
    print(column1)
    

    练习2:获取第一列到第3列所有的数据:

    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)
    

excel文件写操作

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

新建工作簿
  1. 新建工作簿对象

    import openpyxl
    workbook = openpyxl.Workbook()
    
  2. 保存

    工作簿对象.save(文件路径)

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

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

  • 方法1

    try:
        workbook = openpyxl.open('files/student2.xlsx')
    except FileNotFoundError:
        workbook = openpyxl.Workbook()
        workbook.save('files/student2.xlsx')
    
  • 方法2

    import os
    os.path.exists(文件路径)  -  判断指定文件是否存在,存在返回True,不存在返回False
    if os.path.exists('files/student2.xlsx'):
        workbook = openpyxl.open('files/student2.xlsx')
    else:
        workbook = openpyxl.Workbook()
        workbook.save('files/student2.xlsx')
    
工作表的写操作
  1. 新建工作表

    工作簿对象.create_sheet(表名,下载)

    workbook.create_sheet()
    workbook.create_sheet('Python')
    workbook.create_sheet('Java',0)
    workbook.save('files/student2.xlsx'
    

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

    if 'Python' in workbook.sheetnames:
        sheet = workbook['Python']
    else:
        sheet = workbook.create_sheet('Python')
        workbook.save('files/student2.xlsx')
    
  2. 删除工作表

    工作簿对象.remove(工作簿对象)

    workbook.remove(workbook['Sheet1'])
    

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

    if 'Sheet1' in workbook.sheetnames:
        workbook.remove(workbook['Sheet1'])
        workbook.save('files/student2.xlsx')
    
单元格的写操作

单元格对象.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'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 通达信是一款常用的股票分析软件,其保存的日线数据文件格式为day文件。而csv文件是一种常见的数据文件格式,可以在不同的软件和工具之间交换和共享数据。 将通达信的day文件转换为csv文件可以通过以下步骤完成: 1. 打开通达信软件,并选择要转换的股票或指数的日线数据。 2. 在通达信软件中找到“导出”或“另存为”等选项,选择将数据导出为文本文件。 3. 在弹出的保存对话框中,选择保存为txt格式,以便后续处理。 4. 使用文本编辑器(如记事本、Sublime Text等)打开保存的txt文件。 5. 检查txt文件的格式,通达信的day文件通常包含日期、开盘价、最高价、最低价、收盘价等信息,每个数据之间用制表符或空格分隔。 6. 检查并调整txt文件的编码,确保其与要求的csv文件编码一致(如UTF-8)。 7. 在文本编辑器中选择“另存为”选项,并将文件格式选择为csv格式。 8. 保存文件,并选择适当的文件名和存储位置。 转换完成后,您就可以使用支持csv文件格式的软件(如Microsoft ExcelPython pandas库等)进行进一步的数据分析、可视化或处理。 需要注意的是,转换过程中可能需要根据具体的数据格式和软件要求进行一些调整和处理,例如处理日期格式、缺失值等。此外,如需处理多只股票或指数的数据,需要对每一个day文件进行转换。 ### 回答2: 通达信day文件是一种历史股票数据文件格式,包含了股票的高、低、开、收、成交量等信息。而CSV文件是一种以逗号分隔值的文本文件,用于储存简单的表格数据。如果想将通达信day文件转换为CSV文件,可以按照以下步骤操作。 首先,需要打开通达信软件,并选择要导出的历史数据。通达信软件提供了数据导出的功能,可以通过菜单或快捷键找到导出选项。 接下来,选择导出文件的路径和名称。通常可以选择将导出的CSV文件保存在本地计算机的某个文件夹中。 然后,在导出选项中选择CSV文件作为导出的文件格式。通常可以在导出选项中看到支持的文件格式,选择CSV文件即可。 最后,点击导出按钮,等待一段时间,通达信软件将会自动将day文件转换为CSV文件,并保存在之前选择的路径中。 转换完成后,可以在保存的路径中找到生成的CSV文件。可以使用文本编辑器或者电子表格软件打开CSV文件,查看其中的股票历史数据,包括日期、开盘价、收盘价、最高价、最低价等。 需要注意的是,不同版本的通达信软件可能略有差异,具体的操作步骤可能会有所不同。如果对于软件操作不熟悉,可以参考软件的帮助文档或者寻求专业人士的帮助。 ### 回答3: 通达信day文件是一种常见的股票数据文件格式,而CSV文件是一种常用的数据存储格式。将通达信day文件转换为CSV文件可以方便地对股票数据进行处理和分析。 通达信day文件通常以“day”为后缀名,包含股票的每日交易数据,如开盘价、收盘价、最高价、最低价、成交量等。而CSV文件以逗号分隔不同的数值,并且可以直接在电子表格软件中打开和编辑。 要进行转换,首先需要打开通达信软件,选择相应的股票数据文件。然后在数据菜单中选择“导出数据”选项,并选择CSV格式。接下来,在弹出的导出设置窗口中,可以选择需要导出的数据类型、导出起止日期等,并点击“确认”按钮。 此时,通达信软件会自动生成相应的CSV文件,保存在指定的路径下。打开生成的CSV文件,可以使用电子表格软件(如Excel)打开和编辑,方便进行数据处理和分析。在CSV文件中,每一行代表一条股票交易数据,各个数据字段以逗号分隔。 总结而言,将通达信day文件转换为CSV文件,可以通过通达信软件进行操作,选择导出数据的格式为CSV,然后软件会自动生成对应的CSV文件,方便进行后续的数据处理和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值