python读取和保存为excel、csv、txt文件及对DataFrame文件的基本操作指南

目录
  • 一、对excel文件的处理
    • 1.读取excel文件并将其内容转化DataFrame和矩阵形式
    • 2.将数据写入xlsx文件
    • 3.将数据保存为xlsx文件
    • 4.使用excel对数据进行处理的缺点
  • 二、对csv文件的处理
    • 1.读取csv文件并将其内容转化为DataFrame形式
    • 2.将DataFrame保存为csv文件
    • 3.优缺点
  • 三、对txt文件的处理
    • 1.读取txt文件
    • 2.将数据写入txt文件
    • 3.将数据保存到txt文件
  • 四、对DataFrame文件的基本操作
    • 1.DataFrame的创建
      • 1.1根据字典创建
      • 1.2读取文件
    • 2.DataFrame轴的概念
    • 3.DataFrame一些性质
      • 3.1索引、切片
      • 3.2修改数据
      • 3.3算数运算
      • 3.4函数应用和映射
      • 3.5排序和排名
      • 3.6汇总和计算描述统计
      • 3.7处理缺失数据
  • Dataframe中的Series是什么?
  • 总结

一、对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

也可以使用一个列表来修改,不过要保证列表的长度与DataFrame长度相同:

frame2.debt = np.arange(5)

可以使用一个Series,此时会根据索引进行精确匹配:

val = pd.Series([-1.2,-1.5,-1.7],index=['two','four','five'])
frame2['debt'] = val

3.3算数运算

DataFrame在进行算术运算时会进行补齐,在不重叠的部分补足NA

df1 = pd.DataFrame(np.arange(9).reshape((3,3)),columns=list('bcd'),index=['Ohio','Texas','Colorado'])
df2 = pd.DataFrame(np.arange(12).reshape((4,3)),columns = list('bde'),index=['Utah','Ohio','Texas','Oregon'])
df1 + df2

3.4函数应用和映射

numpy的元素级数组方法,也可以用于操作Pandas对象:

frame = pd.DataFrame(np.random.randn(3,3),columns=list('bcd'),index=['Ohio','Texas','Colorado'])
np.abs(frame)

另一个常见的操作是,将函数应用到由各列或行所形成的一维数组上。DataFrame的apply方法即可实现此功能。

f = lambda x:x.max() - x.min()
frame.apply(f)

3.5排序和排名

对于DataFrame,sort_index可以根据任意轴的索引进行排序,并指定升序降序

frame = pd.DataFrame(np.arange(8).reshape((2,4)),index=['three','one'],columns=['d','a','b','c'])
frame.sort_index()

DataFrame也可以按照值进行排序:

#按照任意一列或多列进行排序
frame.sort_values(by=['a','b'])

3.6汇总和计算描述统计

DataFrame中的实现了sum、mean、max等方法,我们可以指定进行汇总统计的轴,同时,也可以使用describe函数查看基本所有的统计项:

df = pd.DataFrame([[1.4,np.nan],[7.1,-4.5],[np.nan,np.nan],[0.75,-1.3]],index=['a','b','c','d'],columns=['one','two'])
df.sum(axis=1)
#输出
one    9.25
two   -5.80
dtype: float64

#Na会被自动排除,可以使用skipna选项来禁用该功能
df.mean(axis=1,skipna=False)
#输出
a      NaN
b    1.300
c      NaN
d   -0.275
dtype: float64
#idxmax返回间接统计,是达到最大值的索引

df.idxmax()
#输出
one    b
two    d
dtype: object

#describe返回的是DataFrame的汇总统计
#非数值型的与数值型的统计返回结果不同
df.describe()

DataFrame也实现了corr和cov方法来计算一个DataFrame的相关系数矩阵和协方差矩阵,同时DataFrame也可以与Series求解相关系数。

frame1 = pd.DataFrame(np.random.randn(3,3),index=list('abc'),columns=list('abc'))
frame1.corr
frame1.cov()
#corrwith用于计算每一列与Series的相关系数
frame1.corrwith(frame1['a'])

3.7处理缺失数据

Pandas中缺失值相关的方法主要有以下三个:

  • isnull方法用于判断数据是否为空数据;
  • fillna方法用于填补缺失数据;
  • dropna方法用于舍弃缺失数据。

上面两个方法返回一个新的Series或者DataFrame,对原数据没有影响,如果想在原数据上进行直接修改,使用inplace参数:

data = pd.DataFrame([[1,6.5,3],[1,np.nan,np.nan],[np.nan,np.nan,np.nan],[np.nan,6.5,3]])
data.dropna()
#输出
    0   1   2
0   1.0 6.5 3.0

对DataFrame来说,dropna方法如果发现缺失值,就会进行整行删除,不过可以指定删除的方式,how=all,是当整行全是na的时候才进行删除,同时还可以指定删除的轴。

data.dropna(how='all',axis=1,inplace=True)
data
#输出
0   1   2
0   1.0 6.5 3.0
1   1.0 NaN NaN
2   NaN NaN NaN
3   NaN 6.5 3.0

DataFrame填充缺失值可以统一填充,也可以按列填充,或者指定一种填充方式:

data.fillna({1:2,2:3})
#输出
0   1   2
0   1.0 6.5 3.0
1   1.0 2.0 3.0
2   NaN 2.0 3.0
3   NaN 6.5 3.0

data.fillna(method='ffill')
#输出
0   1   2
0   1.0 6.5 3.0
1   1.0 6.5 3.0
2   1.0 6.5 3.0
3   1.0 6.5 3.0

Dataframe中的Series是什么?

1、series与array类型的不同之处为series有索引,而另一个没有;series中的数据必须是一维的,而array类型不一定

2、可以把series看成一个定长的有序字典,可以通过shape,index,values等得到series的属性

其他文件的操作 文件复制操作

import shutil
shutil.copyfile(dir1,dir2)

如果路径不存在创建路径

if not os.path.exists(datapath):
	os.mkdir(datapath)

查看当前目录下内容

import os
all_files = os.listdir(os.getcwd())
print(all_files)
filenames = os.listdir(os.curdir)  #获取当前目录中的内容
print(filenames)

总结

到此这篇关于python读取和保存为excel、csv、txt文件及对DataFrame文件的基本操作指南的文章就介绍到这了,更多相关python读取保存为excel、csv、txt文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python Pandas批量读取csv文件到dataframe的方法

    PYTHON Pandas批量读取csv文件到DATAFRAME 首先使用glob.glob获得文件路径.然后定义一个列表,读取文件后再使用concat合并读取到的数据. #读取数据 import pandas as pd import numpy as np import glob,os path=r'e:\tj\month\fx1806' file=glob.glob(os.path.join(path, "zq*.xls")) print(file) dl= [] for f i

  • python批量读取txt文件为DataFrame的方法

    我们有时候会批量处理同一个文件夹下的文件,并且希望读取到一个文件里面便于我们计算操作.比方我有下图一系列的txt文件,我该如何把它们写入一个txt文件中并且读取为DataFrame格式呢? 首先我们要用到glob模块,这个python内置的模块可以说是非常的好用. glob.glob('*.txt') 得到如下结果: all.txt是我最后得到的结果文件.可以见返回的是一个包含txt文件名称的列表,当然如果你的文件夹下面只有txt文件,那么你用os.listdir()可以得到一个一样的列表 然后

  • python将excel转换为csv的代码方法总结

    python:如何将excel文件转化成CSV格式 import pandas as pd data = pd.read_excel('123.xls','Sheet1',index_col=0) data.to_csv('data.csv',encoding='utf-8') 将Excel文件转为csv文件的python脚本 #!/usr/bin/env python __author__ = "lrtao2010" ''' Excel文件转csv文件脚本 需要将该脚本直接放到要转换

  • 基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)

    1.CSV (1)写csv文件 import csv def writecsv(path,data): with open(path, "w") as f: writer = csv.writer(f) for rowData in data: print("rowData=", rowData) writer.writerow(rowData) path = r"E:\\Python\\py17\\automatictext\\000001.csv&qu

  • Python对CSV、Excel、txt、dat文件的处理

    python读取txt文件:(思路:先打开文件,读取文件,最后用for循环输出内容) 1.读取 1.1基于python csv库 #3.读取csv至字典x,y import csv # 读取csv至字典 csvFile = open(r'G:\训练小样本.csv', "r") reader = csv.reader(csvFile) #print(reader) # 建立空字典 result = {} i=0 for item in reader: if reader.line_num

  • python pandas库读取excel/csv中指定行或列数据

    目录 引言 1.根据index查询 2.已知数据在第几行找到想要的数据 3.根据条件查询找到指定行数据 4.找出指定列 5.找出指定的行和指定的列 6.在规定范围内找出符合条件的数据 总结 引言 关键!!!!使用loc函数来查找. 话不多说,直接演示: 有以下名为try.xlsx表: 1.根据index查询 条件:首先导入的数据必须的有index 或者自己添加吧,方法简单,读取excel文件时直接加index_col 代码示例: import pandas as pd #导入pandas库 ex

  • Python将列表数据写入文件(txt, csv,excel)

    写入txt文件 def text_save(filename, data):#filename为写入CSV文件的路径,data为要写入数据列表. file = open(filename,'a') for i in range(len(data)): s = str(data[i]).replace('[','').replace(']','')#去除[],这两行按数据不同,可以选择 s = s.replace("'",'').replace(',','') +'\n' #去除单引号,

  • Python导出数据到Excel可读取的CSV文件的方法

    本文实例讲述了Python导出数据到Excel可读取的CSV文件的方法.分享给大家供大家参考.具体实现方法如下: import csv with open('eggs.csv', 'wb') as csvfile: #spamwriter = csv.writer(csvfile, delimiter=' ',quotechar='|', #quoting=csv.QUOTE_MINIMAL) spamwriter = csv.writer(csvfile, dialect='excel') s

  • python读取和保存为excel、csv、txt文件及对DataFrame文件的基本操作指南

    目录 一.对excel文件的处理 1.读取excel文件并将其内容转化DataFrame和矩阵形式 2.将数据写入xlsx文件 3.将数据保存为xlsx文件 4.使用excel对数据进行处理的缺点 二.对csv文件的处理 1.读取csv文件并将其内容转化为DataFrame形式 2.将DataFrame保存为csv文件 3.优缺点 三.对txt文件的处理 1.读取txt文件 2.将数据写入txt文件 3.将数据保存到txt文件 四.对DataFrame文件的基本操作 1.DataFrame的创建

  • Python读取pdf表格写入excel的方法

    背景 今天突然想到之前被要求做同性质银行的数据分析.妈耶!十几个银行,每个银行近5年的财务数据,而且财务报表一般都是 pdf 的,我们将 pdf 中表的数据一个个的拷贝到 excel 中,再借助 excel 去进行求和求平均等聚合函数操作,完事了还得把求出来的结果再统一 CV 到另一张表中,进行可视化分析- 当然,那时风流倜傥的 老Amy 还熟练的玩转着 excel ,也是个秀儿~ 今天就思索着,如果当年我会 Python 是不是可以让我成为班级最靓的崽!用技术占领高地,HHH,所以今天我来了,

  • python将字符串list写入excel和txt的实例

    docs = ['icassp improved human face identification using frequency domain representation facial asymmetry', 'pattern recognition unsupervised methods classification hyperspectral images low spatial resolution', 'iscas post layout watermarking method

  • python 借助numpy保存数据为csv格式的实现方法

    借助numpy可以把数组或者矩阵保存为csv文件,也可以吧csv文件整体读取为一个数组或矩阵. 1.csv ==> matrix import numpy my_matrix = numpy.loadtxt(open("D:\\test.csv","rb"), delimiter=",", skiprows=0) 2.matrix ==> csv import numpy numpy.savetxt("new.csv&quo

  • python 将数据保存为excel的xls格式(实例讲解)

    python提供一个库 xlwt ,可以将一些数据 写入excel表格中,十分的方便.贴使用事例如下. #引入xlwt模块(提前pip下载好) import xlwt #使用workbook方法,创建一个新的工作簿 book = xlwt.Workbook(encoding='utf-8',style_compression=0) #添加一个sheet,名字为mysheet,参数overwrite就是说可不可以重复写入值,就是当单元格已经非空,你还要写入 sheet = book.add_she

  • python读取几个G的csv文件方法

    如下所示: import pandas as pd file = pd.read_csv('file.csv',iterator=True) while True: chunk = file.get_chunk(1000) print(chunk.head(10)) print(chunk.tail(10)) 以上这篇python读取几个G的csv文件方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • python读取和保存mat文件的方法

    目录 一.mat文件 二.python中读取mat文件 1.读取文件 2.保存文件 首先我们谈谈MarkDown编辑器,我感觉些倒是挺方便的,因为用惯了LaTeX,对于MarkDown还是比较容易上手的,但是我发现,MarkDown中有这样几个问题一直没能找到具体的解决方法: 图片大小的问题.在LaTeX中我们可以调整图片的大小,以适应整个文本:字体,字号大小的设置.在MarkDown里面标题倒是挺大的,但是正文却显得太小,不是很喜欢里面的字体. 主要发现上面两个问题导致编辑出来的文本挺难看.

  • python读取和保存视频文件

    为了获取视频,应该创建一个 VideoCapture 对象.他的参数可以是设备的索引号,或者是一个视频文件.设备索引号就是在指定要使用的摄像头. 一般的笔记本电脑都有内置摄像头.所以参数就是 0.你可以通过设置成 1 或者其他的来选择别的摄像头.之后,你就可以一帧一帧的捕获视频了.但是最后,别忘了停止捕获视频. import numpy as np import cv2 cap=cv2.VideoCapture(0) while (True): ret,frame=cap.read() gray

  • Python读取Json字典写入Excel表格的方法

    需求: 因需要将一json文件中大量的信息填入一固定格式的Excel表格,单纯的复制粘贴肯定也能完成,但是想偷懒一下,于是借助Python解决问题. 环境: Windows7 +Python2.7 +Xlwt 具体分析: 原始文件为json列表,列表中有多个字典,生成Excel文件需要将列表中的字典的键值按键对应排列,也就是说,所有为"XX"的键对应的值写在一列,且每个字典中的不同键的键值保证在同一行. 解决思路是,读取json文件,然后遍历字典的键和值,读完第一个字典并写入Excel

  • python读取图片颜色值并生成excel像素画的方法实例

    像素画: 需要用到的包: 进度条:progressbar pip install progressbar -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com excel:操作包openpyxl pip install openpyxl -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com 食用指南:

随机推荐