您现在的位置是:网站首页> 编程资料编程资料
python读取和保存为excel、csv、txt文件及对DataFrame文件的基本操作指南_python_
2023-05-25
393人已围观
简介 python读取和保存为excel、csv、txt文件及对DataFrame文件的基本操作指南_python_
一、对excel文件的处理
1.读取excel文件并将其内容转化DataFrame和矩阵形式
①将excel转化为dataframe格式
data_file = 'Pre_results.xlsx' # Excel文件存储位置 D = pd.read_excel('Pre_results.xlsx') print(D) ②将excel转化为矩阵格式
首先要说明的一点是,同一个矩阵中所有元素必须是同一类型。
例如,生成矩阵时,我们可以为矩阵指定类型dtype=str、int、float等。
# 生成一个2×2的类型为str的矩阵 import numpy as np datamatrix = np.zeros((2, 2),dtype = str) print(datamatrix)

可见,在这个矩阵中的元素都是str类型。
代码实战:
首先看一下我们要处理的excel文件的内容。

下面直接上代码。
import numpy as np import xlrd def import_excel_matrix(path): table = xlrd.open_workbook(path).sheets()[0] # 获取第一个sheet表 row = table.nrows # 行数 #print(row) col = table.ncols # 列数 datamatrix = np.zeros((row, col),dtype = float) # 生成一个nrows行*ncols列的初始矩阵,在excel中,类型必须相同,否则需要自己指定dtype来强制转换。 for i in range(col): # 对列进行遍历 向矩阵中放入数据 #print(table.col_values(i)) #是矩阵 cols = np.matrix(table.col_values(i)) # 把list转换为矩阵进行矩阵操作 #print(cols) #cols = float(cols) datamatrix[:, i] = cols # 按列把数据存进矩阵中 return datamatrix data_file = 'to_matrix.xlsx' # Excel文件存储位置 data_matrix = import_excel_matrix(data_file) print(data_matrix)
运行结果:

2.将数据写入xlsx文件
# 1.导入openpyxl模块 import openpyxl # 2.调用Workbook()方法 wb = openpyxl.Workbook() # 3. 新建一个excel文件,并且在单元表为"sheet1"的表中写入数据 ws = wb.create_sheet("sheet1") # 4.在单元格中写入数据 # ws.cell(row=m, column=n).value = *** 在第m行n列写入***数据 ws.cell(row=1, column=1).value = "时间" ws.cell(row=1, column=2).value = "零食" ws.cell(row=1, column=3).value = "是否好吃" # 5.保存表格 wb.save('嘿嘿.xlsx') print('保存成功!') 3.将数据保存为xlsx文件
import xlwt workbook=xlwt.Workbook(encoding='utf-8') booksheet=workbook.add_sheet('Sheet 1', cell_overwrite_ok=True) DATA=(('学号','姓名','年龄','性别','成绩'), ('1001','A','11','男','12'), ('1002','B','12','女','22'), ('1003','C','13','女','32'), ('1004','D','14','男','52'),) for i,row in enumerate(DATA): for j,col in enumerate(row): booksheet.write(i,j,col) workbook.save('grade.xls') 4.使用excel对数据进行处理的缺点
只能一行一行的读出和写入,且矩阵形式只可以存放相同类型的数据,效率不高。
二、对csv文件的处理
1.读取csv文件并将其内容转化为DataFrame形式

import pandas as pd df = pd.read_csv('to_df.csv') #,nrows =6) nrows=6表示只读取前六行数据 print(df) 
2.将DataFrame保存为csv文件
df.to_csv('df_to_csv.csv') 3.优缺点
①CSV是纯文本文件,excel不是纯文本,excel包含很多格式信息在里面。
②CSV文件的体积会更小,创建分发读取更加方便,适合存放结构化信息,比如记录的导出,流量统计等等。
③CSV文件在windows平台默认的打开方式是excel,但是它的本质是一个文本文件。
④csv文件只有一个sheet,太多的表不易保存,注意命名规范。
三、对txt文件的处理
1.读取txt文件
f=open('data.txt') print(f.read()) 2.将数据写入txt文件
注意不能将DataFrame写入txt文件,只能写入字符串。
f = open('data.txt','w', encoding='utf-8') #打开文件,若文件不存在系统自动创建 #w只能写入操作 r只能读取 a向文件追加;w+可读可写 r+可读可写 a+可读可追加;wb+写入进制数据 #w模式打开文件,如果文件中有数据,再次写入内容,会把原来的覆盖掉 f.write('hello world! = %.3f' % data) #write写入 f.writelines(['hello!\n']) #writelines 将列表中的字符串写入文件 但不会换行 参数必须是一个只存放字符串的列表 f.close() #关闭文件 3.将数据保存到txt文件
save_path= 'save.txt' np.savetxt(save_path, data, fmt='%.6f')
四、对DataFrame文件的基本操作
1.DataFrame的创建
①DataFrame是一种表格型数据结构,(每一列的数据类型可以不同,而矩阵必须相同)它含有一组有序的列,每列可以是不同的值。
②DataFrame既有行索引,也有列索引,(调用其值时用)它可以看作是由Series组成的字典,不过这些Series公用一个索引。
③DataFrame的创建有多种方式,可以根据dict进行创建,也可以读取csv或者txt文件来创建。这里主要介绍这两种方式。
1.1根据字典创建
data = { 'state':['Ohio','Ohio','Ohio','Nevada','Nevada'], 'year':[2000,2001,2002,2001,2002], 'pop':[1.5,1.7,3.6,2.4,2.9] } frame = pd.DataFrame(data) frame #输出 pop state year 0 1.5 Ohio 2000 1 1.7 Ohio 2001 2 3.6 Ohio 2002 3 2.4 Nevada 2001 4 2.9 Nevada 2002 DataFrame的行索引是index,列索引是columns,我们可以在创建DataFrame时指定索引的值:
frame2 = pd.DataFrame(data,index=['one','two','three','four','five'],columns=['year','state','pop','debt']) frame2 #输出 year state pop debt one 2000 Ohio 1.5 NaN two 2001 Ohio 1.7 NaN three 2002 Ohio 3.6 NaN four 2001 Nevada 2.4 NaN five 2002 Nevada 2.9 NaN
使用嵌套字典也可以创建DataFrame,此时外层字典的键作为列,内层键则作为索引:
pop = {'Nevada':{2001:2.4,2002:2.9},'Ohio':{2000:1.5,2001:1.7,2002:3.6}} frame3 = pd.DataFrame(pop) frame3 #输出 Nevada Ohio 2000 NaN 1.5 2001 2.4 1.7 2002 2.9 3.6 我们可以用index,columns,values来访问DataFrame的行索引,列索引以及数据值,数据值返回的是一个二维的ndarray
frame2.values frame2.values[0,1]
1.2读取文件
读取文件生成DataFrame最常用的是read_csv,read_table方法。该方法中几个重要的参数如下所示:

其他创建DataFrame的方式有很多,比如我们可以通过读取mysql或者mongoDB来生成,也可以读取json文件等等,这里就不再介绍。
2.DataFrame轴的概念
在DataFrame的处理中经常会遇到轴的概念,这里先给大家一个直观的印象,我们所说的axis=0即表示沿着每一列或行标签\索引值向下执行方法,axis=1即表示沿着每一行或者列标签模向执行对应的方法。
3.DataFrame一些性质
3.1索引、切片
我们可以根据列名来选取一列,返回一个Series:
frame2['year'] #索引列名
索引多列
data = pd.DataFrame(np.arange(16).reshape((4,4)),index = ['Ohio','Colorado','Utah','New York'],columns=['one','two','three','four']) data[['two','three']]
索引多行
data[:2] #第一行和第二行 #输出 one two three four Ohio 0 1 2 3 Colorado 4 5 6 7
索引时,如果要是用标签,最好使用loc方法,如果使用下标,最好使用iloc方法。
data.loc['Colorado',['two','three']] #输出 two 5 three 6 Name: Colorado, dtype: int64 data.iloc[0:3,2] #输出 Ohio 2 Colorado 6 Utah 10 Name: three, dtype: int64
3.2修改数据
可以使用一个标量修改DataFrame中的某一列,此时这个标量会广播到DataFrame的每一行上。
data = { 'state':['Ohio','Ohio','Ohio','Nevada','Nevada'], 'year':[2000,2001,2002,2001,2002], 'pop':[1.5,1.7,3.6,2.4,2.9] } frame2 = pd.DataFrame(data,index=['one','two','three','four','five'],columns=['year','state','pop','debt']) frame2 frame2['debt']=16.5 也可以使用一个列表来修改,不过要保证列表
相关内容
- 详解django中视图函数的FBV和CBV_python_
- pycharm创建并使用虚拟环境的详细图文教程_python_
- conda创建环境、安装包、删除环境步骤详细记录_python_
- python使用pandas读写excel文件的方法实例_python_
- YOLOv5改进之添加SE注意力机制的详细过程_python_
- pyinstaller打包python3.6和PyQt5中各种错误的解决方案汇总_python_
- 使用Pyinstaller打包exe文件详细图文教程_python_
- scrapy框架ItemPipeline的使用_python_
- NumPy 数组属性的具体使用_python_
- python pygame英雄循环飞行及作业示例_python_
