1.pandas.read_excel()的作用:
将Excel文件读取到pandas DataFrame中,支持从本地文件系统或URL读取的xls,xlsx,xlsm,xlsb和odf文件扩展名。 支持读取单一sheet或几个sheet。
以下是该函数的全部参数,等于号后面是该参数的缺省值,参数看着很多,但其实我们日常用到的就几个:
pandas.read_excel(
io,
sheet_name=0,
header=0,
names=None,
index_col=None,
usecols=None,
squeeze=False,
dtype=None,
engine=None,
converters=None,
true_values=None,
false_values=None,
skiprows=None,
nrows=None,
na_values=None,
keep_default_na=True,
verbose=False,
parse_dates=False,
date_parser=None,
thousands=None,
comment=None,
skipfooter=0,
convert_float=True,
mangle_dupe_cols=True,
**kwds)
1.基本用法
import pandas as pd
df = pd.read_excel(r'C:\Users\16010\Desktop\1.xlsx')
默认读取第一个sheet的全部数据
2.sheet_name(str,int,list,None,default 0)
df = pd.read_excel(r'C:\Users\16010\Desktop\1.xlsx',sheet_name='学生表')
None表示引用所有的sheet
3.header(int,list of int ,defaut 0)
df = pd.read_excel(r'C:\Users\16010\Desktop\1.xlsx',header=0)
表示用第几行作为表头,默认header=0,表示第一行为表头
header=1表示第二行为表头,第一行数据就不要了
header=[1,2,3]表示选择第2,3,4行数据为表头
header=None表示不使用数据源中的表头
4.names(array-list,default None)
表示自定义表头的名称,需要传递数组参数
df = pd.read_excel(r'C:\Users\16010\Desktop\1.xlsx',names=['id','name'])
5.index_col(int,list of int,default None)
指定列为索引列,默认为None,也就是索引为0的列用作dataframe的行标签
df = pd.read_excel(r'C:\Users\16010\Desktop\1.xlsx',index_col=0)
6.dtype
列的类型名称或字典,默认为none,也就是不改变数据类型
其作用是指定列的数据类型
df = pd.read_excel(r'C:\Users\16010\Desktop\1.xlsx',dtype={0:'float64',2:str)
7.skiprows
跳过指定的行
skiprows=1跳过第一行
df = pd.read_excel(r'C:\Users\16010\Desktop\1.xlsx',skiprows=1)
skiprows=3跳过前3行
skiprows=[1,2,4]跳过1,2,4行
skiprows=lambda x:x % 2 == 0跳过偶数行
8.nrows
默认为none
指定需要读取前多少行,通常用于较大的数据文件中
df = pd.read_excel(r'C:\Users\16010\Desktop\1.xlsx',nrows=3)
nrows=3读取前3行
9.na_values
指定某些列的某些值为NaN
na_values=‘大专’,指定大专为NaN
df = pd.read_excel(r'C:\Users\16010\Desktop\1.xlsx',na_values='大专')
2.pandas切片操作
import pandas
file = r'C:\Users\16010\Desktop\1.xlsx'
data = pandas.read_excel(file,header=None)
res = data[0] #第一列
print(res[2])
res = data.iloc[0] # 第一行
res = data.iloc[0:3] # 第1到3行
print(res[2])
res = data.iloc[:,0] # 第一列
res = data.iloc[:,0:3] # 第1到第3列
res = data.iloc[1,0] # 第2行第一列
res = data.iloc[[0,2],[1,3]] # 1,3行和2,4列数据
res = data.iloc[0:3,2:4] # 第1到3行和第3到4列数据
res = data.iloc[1,0]
print(res)
3.使用pandas进行读写单元格操作
Pandas提供了多种读写单元格的方法,下面列举了几个常用的方法:
-
读取单元格的值:
import pandas as pd df = pd.read_excel('file.xlsx') cell_value = df.iloc[row_index, column_index] #根据行列索引读取单元格的值 cell_value = df.loc[row_label, column_label] #根据行列标签读取单元格的值
-
修改单元格的值:
df.iloc[row_index, column_index] = new_value #根据行列索引修改单元格的值 df.loc[row_label, column_label] = new_value #根据行列标签修改单元格的值
-
写入单元格的值:
writer = pd.ExcelWriter('file.xlsx') df.to_excel(writer, sheet_name='Sheet1', index=False, startrow=row_index, startcol=column_index) #将DataFrame写入指定的单元格 writer.save()
注意:需要先创建一个
ExcelWriter
对象并指定文件名,然后使用to_excel
方法将DataFrame写入Excel文件中的指定单元格。参数index
指定是否包含行索引,startrow
和startcol
指定起始行列索引或标签。
例如:
file = r'C:\Users\16010\Desktop\1.xlsx'
data = pandas.read_excel(file,header=None)
writer = pandas.ExcelWriter(r'C:\Users\16010\Desktop\2.xlsx')
def to_excel1(i):
new_list = []
# i为行,0为列
res = data.iloc[i, 0]
new_list.append(res)
# 把list元素转为dataframe类型
res1 = pandas.DataFrame(list(new_list))
# startrow 开始行,startcol:开始列,index:不写索引,
res1.to_excel(writer, startrow=i, startcol=0, index=False, header=None)
# writer.save()
for i in range(1,100):
to_excel1(i)
try:
writer._save()
except:
writer.save()
4.pandas进行行列操作
import pandas
import numpy as np
file = r'C:\Users\16010\Desktop\1.xlsx'
data = pandas.read_excel(file,header=None)
writer = pandas.ExcelWriter(r'C:\Users\16010\Desktop\2.xlsx')
def to_excel1():
# i为行,0为列
# 第2行到第100行和第2列的数据
res = data.iloc[1:100,1:2]
print(res)
print(type(res))
# startrow 开始行,startcol:开始列,index:不写索引,
res.to_excel(writer, startrow=1, startcol=0, index=False, header=None)
# res.to_excel(writer, startrow=1, startcol=1, index=False, header=None)
to_excel1()
try:
writer._save()
except:
writer.save()
5.pandas多文件读写行列
import pandas
file = r'C:\Users\16010\Desktop\1.xlsx'
# 读取的文件
read_list = [r'C:\Users\16010\Desktop\1.xlsx',r'C:\Users\16010\Desktop\2.xlsx',r'C:\Users\16010\Desktop\3.xlsx']
# 写入的文件
write_list = [r'C:\Users\16010\Desktop\4.xlsx',r'C:\Users\16010\Desktop\5.xlsx',r'C:\Users\16010\Desktop\6.xlsx']
# 读取数据
def read_excel1(read_file,write_file):
data = pandas.read_excel(read_file,header=None)
writer = pandas.ExcelWriter(write_file)
return data,writer
# 写入数据
def to_excel1(data,writer,m,n):
# i为行,0为列
# 第2行到第100行和第2列的数据
res = data.iloc[1:100,m:n]
print(res)
print(type(res))
# startrow 开始行,startcol:开始列,index:不写索引,
res.to_excel(writer, startrow=1, startcol=m, index=False, header=None)
# res.to_excel(writer, startrow=1, startcol=1, index=False, header=None)
for i in range(len(read_list)):
read_flie = read_list[i]
write_file = write_list[i]
res = read_excel1(read_flie,write_file)
to_excel1(res[0],res[1],i,i+1)
try:
res[1]._save()
except:
res[1].save()