【Python】pandas中的read

2024-07-13 1020阅读

【Python】pandas中的read

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。

🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。

🌼 同时洲洲已经建立了程序员技术交流群,如果您感兴趣,可以私信我加入社群,可以直接vx联系(文末有名片)v:bdizztt

🖥 随时欢迎您跟我沟通,一起交流,一起成长、进步!点此也可获得联系方式~

本文目录

  • 前言
  • 一、read_excel()函数简介
    • 1.1 基础语法
    • 二、to_excel()函数简介
    • 三、代码案例
      • 读取并处理Excel数据
      • 场景2:合并多个Excel工作表
      • 写入格式化的Excel文件
      • 四、read_excel()数据实战
        • 函数原型
        • sheetname
        • header
        • skiprows
        • skip_footer
        • index_col
        • names
        • 五、to_excel()数据实战
          • excel_writer
          • sheet_name
          • na_rep
          • colums
          • header
          • index
          • 总结

            前言

            Pandas是Python中用于数据分析和操作的强大库,它提供了许多方便的函数来处理各种格式的数据。

            Excel文件作为一种常见的数据存储格式,在数据处理中经常用到。

            Pandas提供了read_excel()函数来读取Excel文件,以及to_excel()函数将数据写入Excel。

            本文将详细解析这两个函数的用法,并通过代码示例展示它们在不同场景下的应用。

            一、read_excel()函数简介

            Pandas是一个开源的数据分析和操作库,它提供了快速、灵活和表达力强的数据结构,旨在使数据清洗和分析工作变得更加简单易行。Pandas是基于NumPy构建的,因此可以与NumPy无缝集成。

            read_excel()函数用于读取Excel文件并将其转换为Pandas的DataFrame对象。这是处理Excel数据的基础。

            1.1 基础语法

            pandas.read_excel(io, sheet_name=0, header=0, names=None, 
            index_col=None, usecols=None, 
            dtype=None, engine=None, converters=None, true_values=None, 
            false_values=None, skiprows=None, nrows=None, na_values=None, 
            keep_default_na=True, verbose=True, parse_dates=False, 
            date_parser=None, thousands=None, comment=None, 
            skipfooter=0, convert_float=True, mangle_dupe_cols=True, **kwds)
            

            常用的参数说明:

            io : string, path object ; excel 路径。
            sheetname : string, int, mixed list of strings/ints, or None, default 0 返回多表使用sheetname=[0,1],若sheetname=None是返回全表 注意:int/string 返回的是dataframe,而none和list返回的是dict of dataframe
            header : int, list of ints, default 0 指定列名行,默认0,即取第一行,数据为列名行以下的数据 若数据不含列名,则设定 header = None
            skiprows : list-like,Rows to skip at the beginning,省略指定行数的数据
            skip_footer : int,default 0, 省略从尾部数的int行数据
            index_col : int, list of ints, default None指定列为索引列,也可以使用u”strings”
            names : array-like, default None, 指定列的名字。
            

            示例代码

            import pandas as pd
            # 读取Excel文件
            df = pd.read_excel('path_to_your_excel_file.xlsx')
            # 只读取特定的列
            df = pd.read_excel('path_to_your_excel_file.xlsx', usecols=['Column1', 'Column2'])
            

            二、to_excel()函数简介

            to_excel()函数用于将DataFrame对象写入Excel文件。你可以控制输出的格式、工作表名称等。

            基础语法

            DataFrame.to_excel(io, excel_writer, sheet_name='Sheet1',
            na_rep='', float_format=None, columns=None, header=True, 
            index=True, index_label=None, startrow=0, startcol=0, 
            engine=None, merge_cells=True, encoding=None, 
            inf_rep='inf', verbose=True, freeze_panes=None, 
            storage_options=None)
            

            常用的参数说明:

            io: Excel文件的路径或文件对象。
            sheet_name: 写入的工作表名称。
            na_rep: 缺失值的表示方式,默认为空字符串。
            columns: 指定要写入的列。
            header: 是否写入列名。
            index: 是否写入索引。
            

            示例代码

            # 将DataFrame写入Excel文件
            df.to_excel('output_excel_file.xlsx', sheet_name='Sheet1')
            # 只写入特定的列
            df.to_excel('output_excel_file.xlsx', columns=['Column1', 'Column2'])
            

            三、代码案例

            读取并处理Excel数据

            # 读取Excel文件
            df = pd.read_excel('data.xlsx')
            # 数据清洗:去除重复记录
            df = df.drop_duplicates()
            # 将处理后的数据写回Excel
            df.to_excel('cleaned_data.xlsx')
            

            场景2:合并多个Excel工作表

            # 读取Excel文件中的所有工作表
            xls = pd.ExcelFile('multi_sheets.xlsx')
            # 遍历工作表并读取数据
            dfs = {sheet: xls.parse(sheet) for sheet in xls.sheet_names}
            # 合并所有工作表的数据
            combined_df = pd.concat(dfs.values(), ignore_index=True)
            # 将合并后的数据写入新的Excel文件
            combined_df.to_excel('combined_data.xlsx', index=False)
            

            写入格式化的Excel文件

            # 写入Excel文件,指定列名和不写入索引
            df.to_excel('formatted_data.xlsx', index=False, header=True, columns=['Column1', 'Column2'])
            # 使用ExcelWriter来设置工作表的格式
            with pd.ExcelWriter('styled_data.xlsx', engine='xlsxwriter') as writer:
                df.to_excel(writer, sheet_name='Sheet1', startrow=2, startcol=3, index=False)
                workbook  = writer.book
                worksheet = writer.sheets['Sheet1']
                worksheet.set_column('A:D', 15)  # 设置列宽
            

            四、read_excel()数据实战

            假设我们拥有数据源如下:

            sheet1:
            ID  NUM-1   NUM-2   NUM-3
            36901   142 168 661
            36902   78  521 602
            36903   144 600 521
            36904   95  457 468
            36905   69  596 695
            sheet2:
            ID  NUM-1   NUM-2   NUM-3
            36906   190 527 691
            36907   101 403 470
            

            函数原型

            basestation ="F://pythonBook_PyPDAM/data/test.xls"
            data = pd.read_excel(basestation)
            print data
            

            输出一个dataframe

                  ID  NUM-1  NUM-2  NUM-3
            0  36901    142    168    661
            1  36902     78    521    602
            2  36903    144    600    521
            3  36904     95    457    468
            4  36905     69    596    695
            

            sheetname

            sheetname参数:返回多表使用sheetname=[0,1],若sheetname=None是返回全表

            注意:int/string 返回的是dataframe,而none和list返回的是dict of dataframe

            data_1 = pd.read_excel(basestation,sheetname=[0,1])
            print data_1
            print type(data_1)
            

            输出:dict of dataframe

            OrderedDict([(0, ID  NUM-1  NUM-2  NUM-3
            0  36901    142    168    661
            1  36902     78    521    602
            2  36903    144    600    521
            3  36904     95    457    468
            4  36905     69    596    695), 
            (1,       ID  NUM-1  NUM-2  NUM-3
            0  36906    190    527    691
            1  36907    101    403    470)])
            

            header

            指定列名行,默认0,即取第一行,数据为列名行以下的数据 若数据不含列名,则设定 header = None ,注意这里还有列名的一行。

            data = pd.read_excel(basestation,header=None)
            print data
            输出:
                   0      1      2      3
            0     ID  NUM-1  NUM-2  NUM-3
            1  36901    142    168    661
            2  36902     78    521    602
            3  36903    144    600    521
            4  36904     95    457    468
            5  36905     69    596    695
            data = pd.read_excel(basestation,header=[3])
            print data
            输出:
               36903  144    600    521  
            0  36904     95    457    468
            1  36905     69    596    695
            

            skiprows

            省略指定行数的数据

            data = pd.read_excel(basestation,skiprows = [1])
            print data
            输出:
                  ID  NUM-1  NUM-2  NUM-3
            0  36902     78    521    602
            1  36903    144    600    521
            2  36904     95    457    468
            3  36905     69    596    695
            

            skip_footer

            省略从尾部数的int行的数据

            data = pd.read_excel(basestation, skip_footer=3)
            print data
            输出:
                  ID  NUM-1  NUM-2  NUM-3
            0  36901    142    168    661
            1  36902     78    521    602
            

            index_col

            指定列为索引列,也可以使用u”strings”

            data = pd.read_excel(basestation, index_col="NUM-3")
            print data
            输出:
                      ID  NUM-1  NUM-2
            NUM-3                     
            661    36901    142    168
            602    36902     78    521
            521    36903    144    600
            468    36904     95    457
            695    36905     69    596
            

            names

            指定列的名字。

            data = pd.read_excel(basestation,names=["a","b","c","e"])
            print data
                   a    b    c    e
            0  36901  142  168  661
            1  36902   78  521  602
            2  36903  144  600  521
            3  36904   95  457  468
            4  36905   69  596  695
            

            五、to_excel()数据实战

            数据源

                ID  NUM-1   NUM-2   NUM-3
            0   36901   142 168 661
            1   36902   78  521 602
            2   36903   144 600 521
            3   36904   95  457 468
            4   36905   69  596 695
            5   36906   165 453 
            加载数据:
            basestation ="F://python/data/test.xls"
            basestation_end ="F://python/data/test_end.xls"
            data = pd.read_excel(basestation)
            

            excel_writer

            参数excel_writer,输出路径。

            data.to_excel(basestation_end)
            输出:
                ID  NUM-1   NUM-2   NUM-3
            0   36901   142 168 661
            1   36902   78  521 602
            2   36903   144 600 521
            3   36904   95  457 468
            4   36905   69  596 695
            5   36906   165 453 
            

            sheet_name

            将数据存储在excel的那个sheet页面。

            data.to_excel(basestation_end,sheet_name="sheet2")
            

            na_rep

            缺失值填充

            data.to_excel(basestation_end,na_rep="NULL")
            输出:
                ID  NUM-1   NUM-2   NUM-3
            0   36901   142 168 661
            1   36902   78  521 602
            2   36903   144 600 521
            3   36904   95  457 468
            4   36905   69  596 695
            5   36906   165 453 NULL
            

            colums

            sequence, optional,Columns to write 选择输出的的列。

            data.to_excel(basestation_end,columns=["ID"])
            输出
                ID
            0   36901
            1   36902
            2   36903
            3   36904
            4   36905
            5   36906
            

            header

            boolean or list of string,默认为True,可以用list命名列的名字。header = False 则不输出题头。

            data.to_excel(basestation_end,header=["a","b","c","d"])
            输出:
                a   b   c   d
            0   36901   142 168 661
            1   36902   78  521 602
            2   36903   144 600 521
            3   36904   95  457 468
            4   36905   69  596 695
            5   36906   165 453 
            data.to_excel(basestation_end,header=False,columns=["ID"])
            header = False 则不输出题头
            输出:
            0   36901
            1   36902
            2   36903
            3   36904
            4   36905
            5   36906
            

            index

            index:boolean, default True Write row names (index)

            默认为True,显示index,当index=False 则不显示行索引(名字)。

            index_label : string or sequence, default None 设置索引列的列名。

            data.to_excel(basestation_end,index=False)
            输出:
            ID  NUM-1   NUM-2   NUM-3
            36901   142 168 661
            36902   78  521 602
            36903   144 600 521
            36904   95  457 468
            36905   69  596 695
            36906   165 453 
            data.to_excel(basestation_end,index_label=["f"])
            输出:
            f   ID  NUM-1   NUM-2   NUM-3
            0   36901   142 168 661
            1   36902   78  521 602
            2   36903   144 600 521
            3   36904   95  457 468
            4   36905   69  596 695
            5   36906   165 453 
            

            总结

            📝Hello,各位看官老爷们好,我已经建立了CSDN技术交流群,如果你很感兴趣,可以私信我加入我的社群。

            📝社群中不定时会有很多活动,例如每周都会包邮免费送一些技术书籍及精美礼品、学习资料分享、大厂面经分享、技术讨论谈等等。

            📝社群方向很多,相关领域有Web全栈(前后端)、人工智能、机器学习、自媒体副业交流、前沿科技文章分享、论文精读等等。

            📝不管你是多新手的小白,都欢迎你加入社群中讨论、聊天、分享,加速助力你成为下一个大佬!

            📝想都是问题,做都是答案!行动起来吧!欢迎评论区or后台与我沟通交流,也欢迎您点击下方的链接直接加入到我的交流社群!~ 跳转链接社区~

            【Python】pandas中的read

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]