码迷,mamicode.com
首页 > 编程语言 > 详细

python pandas 读excel类

时间:2021-01-13 11:03:26      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:get   excel   显示   顺序   turn   设置   EDA   sha   val   

import  pandas  as pd
‘‘‘特例说明
file1="a20201220.xlsx"
sheetname=‘Sheet1‘
df=pd.read_excel(file1,sheetname,usecols="A:D")#读取第A-D四列所有内容
df=pd.read_excel(file1,sheetname,usecols=[1,3])#读取第1,第3列所有内容
df=pd.read_excel(file1,sheetname,usecols="A:B,D")#读取第A 第B 第D三列所有内容
df=pd.read_excel(file1,sheetname,usecols="A:B,D",header=3,nrows=15)#读取第A 第B 第D的第4行开始的连续15行内容
df=pd.read_excel(file1,sheetname,usecols="A:B,D",nrows=15)#读取第A 第B 第D的第1行开始的连续15行内容
print(df.values)‘‘‘
class DoExcela:
    def do_alldata(self,filename,sheetname,head=None):#返回列表,列表元素是某行内容
        df=pd.read_excel(filename,sheetname,header=head)
        lb=[]
        for i in df.values:
            lb.append(i)
        return lb
    def do_hangdata(self,filename,sheetname,hang,head=None):#指定行号,返回列表,列表元素是指定行的某列内容
        df=pd.read_excel(filename,sheetname,header=head)
        lb=[]
        for i in df.values[hang]:
            lb.append(i)
        return lb
    def do_liexhdata(self,filename,sheetname,lie,head=None):#指定列序号,返回列表,列表元素是指定行的某列内容
        df=pd.read_excel(filename,sheetname,header=head)
        lb=[]
        for i in df[lie].values:
            lb.append(i)
        return lb
    def do_liemingdata(self,filename,sheetname,lie,head=None):#指定列名称,返回列表,列表元素是指定行的某列内容
        df=pd.read_excel(filename,sheetname)
        lb=[]
        for i in df[lie]:
            lb.append(i)
        return lb
    def do_danyuandata(self,file_name:str,sheet_name:str,hang_name:int,lie_name:int):#返回单元格的内容,类型随数据变化
        df=pd.read_excel(file_name,sheet_name,header=None)#从第0行读取
        data1=df.iloc[hang_name,lie_name]
        return data1
    def do_sheetname(self,filename):#以列表形式返回所有工作表名称
        df=pd.read_excel(filename,sheet_name=None)
        return list(df)
    def do_sheetshu(self,filename):#以列表形式返回所有工作表名称
        df=pd.read_excel(filename,sheet_name=None)
        return len(list(df))
    #下面的函数是读取指定单元格区域的值存入列表
    def do_quyudata(self,file_name:str,sheet_name:str,zsh_name:int,zsl_name:int,yxh_name:int,yxl_name:int):
        #变量依次为文件名(表名)、工作表名称、左上行、左上列、右下行、右下列
        df=pd.read_excel(file_name,sheet_name,header=None)#从第0行读取
        alldata=[]#定义一个装所有数据的空列表
        # 获取行索引,如果设置header=None,这里应该改为(1,df.shape[0])
        for i in range(zsh_name-1,yxh_name):
            #Erowdata={}#定义一个装每行数据的字典
            for j in range(zsl_name,yxl_name):#获取列索引
                # df.columns[j]获取第j列表头,df.iloc[i,j]获取第i行第j列数据
                alldata.append(df.iloc[i,j])
        return alldata

    
    def do_alldata1(self,file_name:str,sheet_name:str)->返回一个列表嵌套字典:
        ‘‘‘通过excel表格路径和表单名字获取表单完整数据,以列表内嵌套字典的方式返回‘‘‘
        # 文件有表头索引是从第二行开始为0,如果设置header=None,索引从
        df=pd.read_excel(file_name,sheet_name)#读取
        alldata=[]#定义一个装所有数据的空列表
        # 获取行索引,如果设置header=None,这里应该改为(1,df.shape[0])
        for i in range(df.shape[0]):
            rowdata={}#定义一个装每行数据的字典
            for j in range(df.shape[1]):#获取列索引
                # df.columns[j]获取第j列表头,df.iloc[i,j]获取第i行第j列数据
                rowdata[df.columns[j]]=df.iloc[i,j]
            alldata.append(rowdata)
        # print(alldata)
        return alldata
    def do_liedata(self,file_name:str,sheet_name:str,lie_name:int)->返回一个列表嵌套字典:
        ‘‘‘通过excel表格路径和表单名字获取表单完整数据,以列表内嵌套字典的方式返回‘‘‘
        # 文件有表头索引是从第二行开始为0,如果设置header=None,索引从
        df=pd.read_excel(file_name,sheet_name,header=None)#从第一行开始读取
        #df=pd.read_excel(file_name,sheet_name)#从第二行开始读取
        alldata=[]#定义一个装所有数据的空列表
        # 获取行索引,如果设置header=None,这里应该改为(1,df.shape[0]
        rowdata=[]#定义一个装每行数据的字典
        for i in range(df.shape[0]):
            rowdata.append(df.iloc[i,lie_name])
            
        # print(alldata)
        return rowdata
    def do_hangdata1(self,file_name:str,sheet_name:str,hang_name:int)->返回一个列表嵌套字典:
        ‘‘‘通过excel表格路径和表单名字获取表单完整数据,以列表内嵌套字典的方式返回‘‘‘
        # 文件有表头索引是从第二行开始为0,如果设置header=None,索引从
        df=pd.read_excel(file_name,sheet_name,header=None)#从第0行读取
        #df=pd.read_excel(file_name,sheet_name)#从第一行读取
        alldata=[]#定义一个装所有数据的空列表
        # 获取行索引,如果设置header=None,这里应该改为(1,df.shape[0]
        rowdata=[]#定义一个装每行数据的字典
        for i in range(df.shape[1]):
            rowdata.append(df.iloc[hang_name,i])
            
        # print(alldata)
        return rowdata
    
    
    #下面的函数是读取指定单元格区域的值存入字典:键是显示列的顺序,值是单元格的值
    def do_quyudatazj(self,file_name:str,sheet_name:str,zsh_name:int,zsl_name:int,yxh_name:int,yxl_name:int):
        #变量依次为文件名(表名)、工作表名称、左上行、左上列、右下行、右下列
        df=pd.read_excel(file_name,sheet_name,header=None)#从第0行读取
        alldata=[]#定义一个装所有数据的空列表
        # 获取行索引,如果设置header=None,这里应该改为(1,df.shape[0])
        for i in range(zsh_name-1,yxh_name):
            rowdata={}#定义一个装每行数据的字典
            for j in range(zsl_name,yxl_name):#获取列索引
                # df.columns[j]获取第j列表头,df.iloc[i,j]获取第i行第j列数据
                rowdata[df.columns[j]]=df.iloc[i,j]
            alldata.append(rowdata)
        return alldata
#openpyxl读取excel
from openpyxl import load_workbook
class DoExcel:
    def get_data(self, file_name, sheet_name):
        wb = load_workbook(file_name)  # linux路径
        sheet = wb[sheet_name]
        test_data = []
        for i in range(2, sheet.max_row + 1):
            row_data = {}
            for j in range(1, sheet.max_column + 1):
                row_data[sheet.cell(1, j).value] = sheet.cell(i, j).value
            test_data.append(row_data)
        return test_data
file1="a20201220.xlsx"
af=DoExcela()
all=af.do_alldata1(file_name=file1,sheet_name="Sheet1")
lie=af.do_liedata(file_name=file1,sheet_name="Sheet1",lie_name=0)
hang=af.do_hangdata1(file_name=file1,sheet_name="Sheet1",hang_name=0)
danyuan=af.do_danyuandata(file_name=file1,sheet_name="Sheet1",hang_name=0,lie_name=3)
quyu=af.do_quyudata(file_name=file1,sheet_name="Sheet1",zsh_name=1,zsl_name=1,yxh_name=4,yxl_name=4)
print(type(hang))
quyu1=af.do_quyudatazj(file_name=file1,sheet_name="Sheet1",zsh_name=1,zsl_name=1,yxh_name=4,yxl_name=4)
for i in hang:
    print(type(i))
    break
print(danyuan)
for i in quyu:
    print("quyu",i)
for i in quyu1:
    print("quyu1",i)
print("单行")
for i in hang:
    print(i)
    #break
hang1=af.do_hangdata(file1,"Sheet1",0)
print("第0行",hang1,type(hang1))
sheet1=af.do_sheetname(file1)
print(sheet1)
sheet2=af.do_sheetshu(file1)
print(sheet2)
all1=af.do_alldata(file1,"Sheet1")
print(all1,type(all1))
lie1=af.do_liexhdata(file1,"Sheet1",0)
print(lie1,type(lie1))
dany=af.do_danyuandata(file1,"Sheet1",2,3)
print(dany,type(dany))

 

python pandas 读excel类

标签:get   excel   显示   顺序   turn   设置   EDA   sha   val   

原文地址:https://www.cnblogs.com/xkdn/p/14263683.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!