zoukankan      html  css  js  c++  java
  • pandas read_excel操作

    读取excel文件参数整理与实例

    除了使用xlrd库或者xlwt库进行对excel表格的操作读与写,pandas库同样支持excel的操作;且pandas操作更加简介方便。

    首先是pd.read_excel的参数:

    函数为:

    pd.read_excel(io, sheet_name=0,header=0,skiprows=None,index_col=None,names=None,
                    arse_cols=None,date_parser=None,na_values=None,thousands=None, 
                    convert_float=True,has_index_names=None,converters=None,dtype=None,
                    true_values=None,false_values=None,engine=None,squeeze=False,**kwds)

    表格数据: 
    这里写图片描述这里写图片描述

    常用参数解析:

    • io :excel 路径;

      import pandas as pd
      
      #定义路径IO
      IO = "C:\Users\lifeng0520\Documents\example.xls"
      #读取excel文件
      sheet = pd.read_excel(io=IO).ffill()
      #此处由于sheetname默认是0,所以返回第一个表
      #f 是 forward 的意思。ffill 意思是:"拿前面的值填充后面的空值"
      
      print(sheet)
      
      out:
         姓名  年龄        出生日  爱好  关系
      0  小王  23 1991-10-02  足球  朋友
      1  小丽  23 1992-11-02  篮球  朋友
      2  小黑  25 1991-10-18  游泳  同学
      3  小白  21 1989-09-09  游戏  同学
      4  小红  25 1990-08-07  看剧  同学
      5  小米  24 1991-12-12  足球  同学
      6  大锤  26 1988-09-09  看剧  个人
    • sheet_name:默认是sheet_name为0,返回多表使用sheet_name=[0,1],若sheet_name=None是返回全表 。注意:int/string返回的是dataframe,而none和list返回的是dict of dataframe。
      In [7]: sheet = pd.read_excel('example.xls',sheet_name= [0,1])
      #参数为None时,返回全部的表格,是一个表格的字典;
      #当参数为list = [0,1,2,3]此类时,返回的多表格同样是字典
      In [8]: sheet
      Out[8]:
      {0:    姓名  年龄        出生日  爱好   关系
       0  小王  23 1991-10-02  足球   朋友
       1  小丽  23 1992-11-02  篮球  NaN
       2  小黑  25 1991-10-18  游泳   同学
       3  小白  21 1989-09-09  游戏  NaN
       4  小红  25 1990-08-07  看剧  NaN
       5  小米  24 1991-12-12  足球  NaN
       6  大锤  26 1988-09-09  看剧   个人, 1:    1  3  5  学生
       0  2  3  4  老师
       1  4  1  9  教授}
      #value是一个多位数组
      In [15]: sheet[0].values
      Out[15]:
      array([['小王', 23, Timestamp('1991-10-02 00:00:00'), '足球', '朋友'],
             ['小丽', 23, Timestamp('1992-11-02 00:00:00'), '篮球', nan],
             ['小黑', 25, Timestamp('1991-10-18 00:00:00'), '游泳', '同学'],
             ['小白', 21, Timestamp('1989-09-09 00:00:00'), '游戏', nan],
             ['小红', 25, Timestamp('1990-08-07 00:00:00'), '看剧', nan],
             ['小米', 24, Timestamp('1991-12-12 00:00:00'), '足球', nan],
             ['大锤', 26, Timestamp('1988-09-09 00:00:00'), '看剧', '个人']], dtype=object)
      
      #同样可以根据表头名称或者表的位置读取该表的数据
      #通过表名
      In [17]: sheet = pd.read_excel('example.xls',sheet_name= 'Sheet2')
      In [18]: sheet
      Out[18]:
         1  3  5  学生
      0  2  3  4  老师
      1  4  1  9  教授
      
      #通过表的位置
      In [19]: sheet = pd.read_excel('example.xls',sheet_name= 1)
      
      In [20]: sheet
      Out[20]:
         1  3  5  学生
      0  2  3  4  老师
      1  4  1  9  教授
    • header :指定作为列名的行,默认0,即取第一行,数据为列名行以下的数据;若数据不含列名,则设定 header = None;
      #数据不含作为列名的行
      In [21]: sheet = pd.read_excel('example.xls',sheet_name= 1,header = None)
      In [22]: sheet
      Out[22]:
         0  1  2   3
      0  1  3  5  学生
      1  2  3  4  老师
      2  4  1  9  教授
      #默认第一行数据作为列名
      In [23]: sheet = pd.read_excel('example.xls',sheet_name= 1,header =0)
      In [24]: sheet
      Out[24]:
         1  3  5  学生
      0  2  3  4  老师
      1  4  1  9  教授
    • skiprows:省略指定行数的数据
      In [25]: sheet = pd.read_excel('example.xls',sheet_name= 1,header = None,skiprows= 1)
      #略去1行的数据,自上而下的开始略去数据的行
      In [26]: sheet
      Out[26]:
         0  1  2   3
      0  2  3  4  老师
      1  4  1  9  教授
    • skip_footer:省略从尾部数的行数据
      In [27]: sheet = pd.read_excel('example.xls',sheet_name= 1,header = None,skip_footer= 1)
      #从尾部开始略去行的数据
      In [28]: sheet
      Out[28]:
         0  1  2   3
      0  1  3  5  学生
      1  2  3  4  老师
    • index_col :指定列为索引列,也可以使用 u’string’
      #指定第二列的数据作为行索引
      In [30]: sheet = pd.read_excel('example.xls',sheet_name= 1,header = None,skip_footer= 1,index_col=1)
      
      In [31]: sheet
      Out[31]:
         0  2   3
      1
      3  1  5  学生
      3  2  4  老师 
    • names:指定列的名字,传入一个list数据
      In [32]: sheet = pd.read_excel('example.xls',sheet_name= 1,header = None,skip_footer= 1,index_col=1,names=['a','b','c'])
          ...:
      
      In [33]: sheet
      Out[33]:
         a  b   c
      1
      3  1  5  学生
      3  2  4  老师

           总体而言,pandas库的pd.read_excel和pd.read_csv的参数比较类似,且相较之前的xlrd库的读表操作更加简单,针对一般批量的数据处理最好选择pandas库操作。但是功能有待完善或者本次研究的不够深入,欢迎一起讨论交流。

  • 相关阅读:
    快排 [模板]
    翻硬币
    Euphoria与量子波动速读
    高精度例题
    Div3 595 E
    Div 595 C1 C2
    常用 STL 整理
    CF 595 Div3 B2
    【思维】复杂度均摊+并查集——icpc cerc 2019 Saba1000kg
    离散化+圆直线交点+转化——icpc cerc 2019 D
  • 原文地址:https://www.cnblogs.com/xiaoli0520/p/13921063.html
Copyright © 2011-2022 走看看