day09(csv文件读写,excel文件读写题目详解)

将多个csv文件整合到一个csv文件中

image-20220701155253885

先导入csv模块:

import csv

打开所有csv文件:

先创建一个列表存放csv文件名:

list_1 = [
    '双流', '大邑', '崇州', '彭州', '成华', '天府新区', '天府新区南区', '新津',
    '新都', '武侯', '温江', '简阳', '蒲江', '邛崃', '郫都', '都江堰',
    '金堂', '金牛', '锦江', '青白江', '青羊', '高新', '高新西', '龙泉驿'
]

循环遍历打开这多个csv文件,当然要创建读方法:

for i in list_1:
    f = open(f'./成都{i}二手房信息.csv', 'r', encoding='utf-8')
    myreader = csv.reader(f)

创建一个csv文件保存多个csv文件数据,同时创建写方法:

f1 = open('成都二手房.csv', 'w', encoding='utf-8', newline='')
mywriter = csv.writer(f1)

再通过之前的读方法,获取这24个csv文件里面的数据,一行一行的遍历:

for j in myreader:

将获取到的数据单行写入到f1(成都二手房.csv)文件中,因为写方法就是对应的f1文件的写方法:

mywriter.writerow(j)

读完后先关闭文件f文件的读方法,写入完成后再关闭f1文件的写方法,输出提示词:

    f.close()
f1.close()
print('写入完成')

后面发现每个文件开头第一行都有 [‘行政区’, ‘标题’, ‘小区’, ‘街道’, ‘户型’, ‘面积’, ‘装修’, ‘单价’, ‘总价’] 导致重复输入了这一行,想办法删除这一行:

在导入数据之前,先单行写入一行这个数据:

list2 = ['行政区', '标题', '小区', '街道', '户型', '面积', '装修', '单价', '总价']
mywriter.writerow(list2)

再在循环里面判断只要不是 [‘行政区’, ‘标题’, ‘小区’, ‘街道’, ‘户型’, ‘面积’, ‘装修’, ‘单价’, ‘总价’] 这个数据就可以单行写入。

if j != ['行政区', '标题', '小区', '街道', '户型', '面积', '装修', '单价', '总价']:

总代码:

import csv

list_1 = [
    '双流', '大邑', '崇州', '彭州', '成华', '天府新区', '天府新区南区', '新津',
    '新都', '武侯', '温江', '简阳', '蒲江', '邛崃', '郫都', '都江堰',
    '金堂', '金牛', '锦江', '青白江', '青羊', '高新', '高新西', '龙泉驿'
]
f1 = open('成都二手房.csv', 'w', encoding='utf-8', newline='')
mywriter = csv.writer(f1)
list2 = ['行政区', '标题', '小区', '街道', '户型', '面积', '装修', '单价', '总价']
mywriter.writerow(list2)
for i in list_1:
    f = open(f'./成都{i}二手房信息.csv', 'r', encoding='utf-8')
    myreader = csv.reader(f)
    for j in myreader:
        if j != ['行政区', '标题', '小区', '街道', '户型', '面积', '装修', '单价', '总价']:
            mywriter.writerow(j)
    f.close()
f1.close()
print('写入完成')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zd4GyyAr-1656673315518)(C:\Users\Asus\AppData\Roaming\Typora\typora-user-images\image-20220701164818904.png)]

利用OS模块输出一个文件夹下的多个文件名

先导入os模块

import os

用os模块中的listdir方法将指定路径下的(相对路径和绝对路径都可以)的所有文件名,在一个列表里面名字以字符串的形式输出。输出类型是list(列表)

file_list = os.listdir('成都链家二手房数据')
# print(file_list, type(file_list))

然后遍历列表file_list中的元素,用切片限制只输出.csv文件。

for i in file_list:
    if i[-4:] == '.csv':
        print(i)

将所有的csv文件的数据导入到excel文件中

先导入openpyxl模块

import openpyxl

新建后缀名为.xlsx的excel文件(工作簿)

file = openpyxl.Workbook()

新建名为’成都链家二手房数据汇总’的工作表

file.create_sheet('成都链家二手房数据汇总')	# create_sheet创建一个表

获取成都链家二手房数据文件夹下所有的csv文件名:

file_list = os.listdir('./成都链家二手房数据')

循环打开所有csv文件,对打开的文件名有个限制,当然读文件就要写读方法:

for i in file_list:
    if i[-9:] == '二手房信息.csv' and i[:2] == '成都':
        f = open(f'./成都链家二手房数据/{i}', 'r', encoding='utf-8') # 以格式化输出的方式表示全部的csv文件
        reader = csv.reader(f)

遍历(一行一行地)获取读取到的所有数据:

count = 0	# 行数初始为0
for j in reader:
    	count +=1	# 每输入一行行数加一

循环遍历,输出内容的列数,在名为成都链家二手房数据汇总的表中添加,数据位置在count行,k+1列(遍历长度时是从0开始遍历的,而输入的列数只能从1开始,所以k+1),而需要添加的数据的值是j列表中的下标为k的元素。

for k in range(0, len(j)):
    file['成都链家二手房数据汇总'].cell(count, k + 1).value = j[k]	# 先定义位置,再定义需添加的数据的值

关闭读方法的读文件:

f.close()

将数据保存在成都链家二手房的excel工作簿(文件)中,提示数据写入完成:

file.save('./成都链家二手房.xlsx')
print('数据写入完成')

总代码:

import os
import csv
import openpyxl

# 新建xlsx后缀文件(工作簿)
file = openpyxl.Workbook()
# 新建工作表
file.create_sheet('成都链家二手房数据汇总')

# 从源数据文件读数据
# 将所在路径下的文件名以一个列表的形式输出
file_list = os.listdir('./成都链家二手房数据')
# 创建一个变量进行行号的递增
count = 0
for i in file_list:
    if i[-9:] == '二手房信息.csv' and i[:2] == '成都':
        f = open(f'./成都链家二手房数据/{i}', 'r', encoding='utf-8')
        reader = csv.reader(f)
        for j in reader:
            count += 1
            for k in range(0, len(j)):
                file['成都链家二手房数据汇总'].cell(count, k + 1).value = j[k]
        f.close()

file.save('./成都链家二手房.xlsx')
print('数据写入完成')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gQpOVBZS-1656673315519)(C:\Users\Asus\AppData\Roaming\Typora\typora-user-images\image-20220701174333784.png)]

获取一个excel文件的一个表的行数,列数。然后打印出所有单个单元格中的数据

导入openpyxl模块:

import openpyxl

先打开已经存在的成都链家二手房这个excel文件

file = openpyxl.load_workbook('./成都链家二手房.xlsx')

在这个文件中找到名为成都链家二手房数据汇总表:

ws = file['成都链家二手房数据汇总']

获取这个表的最大行数:

rows = ws.max_row

获取这个表的最大列数:

col = ws.max_column

从第一行第一列开始取值,输出该表的位置为i行j列的数据的值:

for i in range(1, rows + 1):  # 行(从第一行第一列开始取)
    for j in range(1, col + 1):  # 列
        print(ws.cell(i,j).value)

总代码:

import openpyxl

# max_row
# max_column
# 加载xlsx文件
file = openpyxl.load_workbook('./成都链家二手房.xlsx')
# 从工作簿中找工作表
ws = file['成都链家二手房数据汇总']
# max_row:获取xlsx文件中最大行数
rows = ws.max_row
# max_column:获取xlsx文件中最大列数
col = ws.max_column
for i in range(1, rows + 1):  # 行(从第一行第一列开始取)
    for j in range(1, col + 1):  # 列
        print(ws.cell(i,j).value)

(‘./成都链家二手房.xlsx’)

从工作簿中找工作表

ws = file[‘成都链家二手房数据汇总’]

max_row:获取xlsx文件中最大行数

rows = ws.max_row

max_column:获取xlsx文件中最大列数

col = ws.max_column
for i in range(1, rows + 1): # 行(从第一行第一列开始取)
for j in range(1, col + 1): # 列
print(ws.cell(i,j).value)


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TaBgj3OX-1656673315519)(C:\Users\Asus\AppData\Roaming\Typora\typora-user-images\image-20220701175546524.png)]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答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文件,方便进行后续的数据处理和分析。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值