精华内容
下载资源
问答
  • pandas 读取excel文件

    2021-02-23 17:12:40
    pandas 读取excel文件一 read_excel() 的基本用法二 read_excel() 的常用的参数:三 示例1. IO:路径2. sheet_name:指定工作表名3. header :指定标题行4. names: 指定列名5. index_col: 指定列索引6. skiprows:跳...

    pandas 读取excel文件使用的是 read_excel方法。本文将详细解析read_excel方法的常用参数,以及实际的使用示例

    一 read_excel() 的基本用法

    import pandas as pd
    
    file_name = 'xxx.xlsx'
    pd.read_excel(file_name)
    

    二 read_excel() 的常用的参数:

    1. io: excel路径 可以是文件路径, 类文件对象, 文件路径对象等。

    2. sheet_name=0: 访问指定excel某张工作表。sheet_name可以是str, int, list 或 None类型, 默认值是0。

      • str类型 是直接指定工作表的名称

      • int类型 是指定从0开始的工作表的索引, 所以sheelt_name默认值是0,即第一个工作表。

      • list类型 是多个索引或工作表名构成的list,指定多个工作表。

      • None类型, 访问所有的工作表

      • sheet_name=0: 得到的是第1个sheet的DataFrame类型的数据

      • sheet_name=2: 得到的是第2个sheet的DataFrame类型的数据

      • sheet_name=‘Test1’: 得到的是名为’Test1’的sheet的DataFrame类型的数据

      • sheet_name=[0, 3, ‘Test5’]: 得到的是第1个,第4个和名为Test5 的工作表作为DataFrame类型的数据的字典。

    3. header=0:header是标题行,通过指定具体的行索引,将该行作为数据的标题行,也就是整个数据的列名。默认首行数据(0-index)作为标题行,如果传入的是一个整数列表,那这些行将组合成一个多级列索引。没有标题行使用header=None。

    4. name=None: 传入一列类数组类型的数据,用来作为数据的列名。如果文件数据不包含标题行,要显式的指出header=None

    5. skiprows:int类型, 类列表类型或可调函数。 要跳过的行号(0索引)或文件开头要跳过的行数(int)。如果可调用,可调用函数将根据行索引进行计算,如果应该跳过行则返回True,否则返回False。一个有效的可调用参数的例子是lambda x: x in [0, 1, 2]。

    6. skipfooter=0: int类型, 默认0。自下而上,从尾部指定跳过行数的数据。

    7. usecols=None: 指定要使用的列,如果没有默认解析所有的列。

    8. index_col=None: int或元素都是int的列表, 将某列的数据作为DataFrame的行标签,如果传递了一个列表,这些列将被组合成一个多索引,如果使用usecols选择的子集,index_col将基于该子集。

    9. squeeze=False, 布尔值,默认False。 如果解析的数据只有一列,返回一个Series。

    10. dtype=None: 指定某列的数据类型,可以使类型名或一个对应列名与类型的字典,例 {‘A’: np.int64, ‘B’: str}

    11. nrows=None: int类型,默认None。 只解析指定行数的数据。


    三 示例

    如图是演示使用的excel文件,它包含5张工作表。
    在这里插入图片描述

    1. IO:路径

    举一个IO为文件对象的例子, 有些时候file文件路径的包含较复杂的中文字符串时,pandas 可能会解析文件路径失败,可以使用文件对象来解决。

    file = 'xxxx.xlsx'
    f = open(file, 'rb')
    df = pd.read_excel(f, sheet_name='Sheet1')
    
    f.close()  # 没有使用with的话,记得要手动释放。
    
    
    # ------------- with模式 -------------------
    with open(file, 'rb') as f:
        df = pd.read_excel(f, sheet_name='Sheet1')
    

    2. sheet_name:指定工作表名

    sheet_name=‘Sheet’, 指定解析名为"Sheet1"的工作表。返回一个DataFrame类型的数据。

    df = pd.read_excel(file, sheet_name='Sheet1')
    

    在这里插入图片描述

    sheet_name=[0, 1, ‘Sheet1’], 对应的是解析文件的第1, 2张工作表和名为"Sheet1"的工作表。它返回的是一个有序字典。结构为{name:DataFrame}这种类型。

    df_dict = pd.read_excel(file, sheet_name=[0,1,'Sheet1'])
    

    在这里插入图片描述

    sheet_name=None 会解析该文件中所有的工作表,返回一个同上的字典类型的数据。

    df_dict = pd.read_excel(file, sheet_name=None)
    

    在这里插入图片描述

    3. header :指定标题行

    header是用来指定数据的标题行,也就是数据的列名的。本文使用的示例文件具有中英文两行列名,默认header=0是使用第一行数据作为数据的列名。

    df_dict = pd.read_excel(file, sheet_name='Sheet1')
    

    在这里插入图片描述

    header=1, 使用指定使用第二行的英文列名。

    df_dict = pd.read_excel(file, sheet_name='Sheet1', header=1)
    

    在这里插入图片描述

    需要注意的是,如果不行指定任何行作为列名,或数据源是无标题行的数据,可以显示的指定header=None来表明不使用列名。

    df_dict = pd.read_excel(file, sheet_name='Sheet1', header=None)
    

    4. names: 指定列名

    指定数据的列名,如果数据已经有列名了,会替换掉原有的列名。

    df = pd.read_excel(file, sheet_name='Sheet1', names=list('123456789ABCDE'))
    

    在这里插入图片描述

    上图是header=0默认第一行中文名是标题行,最后被names给替换了列名,如果只想使用names,而又对源数据不做任何修改,我们可以指定header=None

    df = pd.read_excel(file, sheet_name='Sheet1', names=list('123456789ABCDE'), header=None)
    

    在这里插入图片描述

    5. index_col: 指定列索引

    df = pd.read_excel(file, sheet_name='Sheet1', header=1, index_col=0)
    

    在这里插入图片描述

    6. skiprows:跳过指定行数的数据

    df = pd.read_excel(file, sheet_name='Sheet1', skiprows=0)
    

    在这里插入图片描述

    df = pd.read_excel(file, sheet_name='Sheet1', skiprows=[1,3,5,7,9,])
    

    在这里插入图片描述

    header与skiprows在有些时候效果相同,例skiprows=5和header=5。因为跳过5行后就是以第六行,也就是索引为5的行默认为标题行了。需要注意的是skiprows=5的5是行数,header=5的5是索引为5的行。

    df = pd.read_excel(file, sheet_name='Sheet1', header=5)
    

    在这里插入图片描述

    df = pd.read_excel(file, sheet_name='Sheet1', skiprows=5)
    

    在这里插入图片描述

    7. skipfooter:省略从尾部的行数据

    原始的数据有47行,如下图所示:
    在这里插入图片描述

    从尾部跳过5行:

    df = pd.read_excel(file, sheet_name='Sheet1', skipfooter=5)
    

    在这里插入图片描述

    8.dtype 指定某些列的数据类型

    示例数据中,测试编码数据是文本,而pandas在解析的时候自动转换成了int64类型,这样codes列的首位0就会消失,造成数据错误,如下图所示

    在这里插入图片描述

    指定codes列的数据类型:

    df = pd.read_excel(file, sheet_name='Sheet1', header=1, dtype={'codes': str})
    

    在这里插入图片描述

    展开全文
  • pandas读取excel文件

    千次阅读 2018-12-13 08:52:50
    首先我们读取以下excel文件: 有六个字段和19973条数据 在pycharm中读取代码如下: import pandas as pd people = read_excel("C:/Users/Administrator/Desktop/People.xlsx")#读取 print(people....

    首先我们读取以下excel文件:

    有六个字段和19973条数据

    在pycharm中读取代码如下:

    import pandas as pd
    
    
    people = read_excel("C:/Users/Administrator/Desktop/People.xlsx")#读取
    print(people.shape)#查看数据维度
    
    print(people.columns)#查看数据字段
    
    print(people.head(5))#查看数据前5行
    print("=============================")
    print(people.tail(5))#查看数据后5行

    结果:

    当文件数据错位时例如:

     则可以:

    import pandas as pd
    
    people = pd.read_excel("C:/Users/Administrator/Desktop/People.xlsx",header=1,index_col="ID")
    
    people.to_excel("C:/Users/Administrator/Desktop/People1.xlsx")
    
    print(people.head(5))

     1.header参数  读取数据的首行位置,如果首行没有字段,则可以为NONE

    2.创建新的excel 头列会有索引,可以用index_col参数给索引值

    结果:

     

     

    展开全文
  • pandas读取Excel文件

    2019-05-16 15:13:00
    In[7]: import pandas as pd filname = 'ch02数据导入\\student.xlsx' ...data = pd.read_excel(filname) data Out[7]: 姓名年龄...

    In [7]:

    import pandas as pd
    filname = 'ch02数据导入\\student.xlsx'
    data = pd.read_excel(filname)
    data
    
    Out[7]:
     
     姓名年龄爱好学号学费
    0 张三 20 打球 12 5000
    1 李四 21 游泳 13 6000
    2 周五 23 唱歌 14 7000
    3 赵六 25 下棋 15 500
    4 王七 20 跑步 16 60
    5 朱八 28 旅游 17 300
    In [9]:
    # 打印前3行数据
    data.head(3)
    
    Out[9]:
     
     姓名年龄爱好学号学费
    0 张三 20 打球 12 5000
    1 李四 21 游泳 13 6000
    2 周五 23 唱歌 14 7000
    In [10]:
    # 打印[1-3)行数据
    data[1:3]
    
    Out[10]:
     
     姓名年龄爱好学号学费
    1 李四 21 游泳 13 6000
    2 周五 23 唱歌 14 7000
    In [11]:
    # 根据列名,打印某一列数据
    data['姓名']
    
    Out[11]:
    0    张三
    1    李四
    2    周五
    3    赵六
    4    王七
    5    朱八
    Name: 姓名, dtype: object
    In [12]:
    # 查看所有字段
    field = data.columns.tolist()
    field
    
    Out[12]:
    ['姓名', '年龄', '爱好', '学号', '学费']
    In [13]:
    # 只显示第四行
    data.loc[4]
    
    Out[13]:
    姓名    王七
    年龄    20
    爱好    跑步
    学号    16
    学费    60
    Name: 4, dtype: object
    In [15]:
    # 打印多个列数据,需要双层[[]]
    data[["姓名", "年龄"]]
    
    Out[15]:
     
     姓名年龄
    0 张三 20
    1 李四 21
    2 周五 23
    3 赵六 25
    4 王七 20
    5 朱八 28
    In [16]:
    # 查看基础数据
    # mean = 均值
    # std = 方差
    data.describe()  # 只针对数值型
    
    Out[16]:
     
     年龄学号学费
    count 6.000000 6.000000 6.000000
    mean 22.833333 14.500000 3143.333333
    std 3.188521 1.870829 3195.632436
    min 20.000000 12.000000 60.000000
    25% 20.250000 13.250000 350.000000
    50% 22.000000 14.500000 2750.000000
    75% 24.500000 15.750000 5750.000000
    max 28.000000 17.000000 7000.000000
    In [17]:
    data2 = pd.read_excel(filname,header=None)
    data2
    
    Out[17]:
     
     01234
    0 姓名 年龄 爱好 学号 学费
    1 张三 20 打球 12 5000
    2 李四 21 游泳 13 6000
    3 周五 23 唱歌 14 7000
    4 赵六 25 下棋 15 500
    5 王七 20 跑步 16 60
    6 朱八 28 旅游 17 300
    In [18]:
    data2.values
    
    Out[18]:
    array([['姓名', '年龄', '爱好', '学号', '学费'],
           ['张三', 20, '打球', 12, 5000],
           ['李四', 21, '游泳', 13, 6000],
           ['周五', 23, '唱歌', 14, 7000],
           ['赵六', 25, '下棋', 15, 500],
           ['王七', 20, '跑步', 16, 60],
           ['朱八', 28, '旅游', 17, 300]], dtype=object)
    In [21]:
    data.values
    
    Out[21]:
    array([['张三', 20, '打球', 12, 5000],
           ['李四', 21, '游泳', 13, 6000],
           ['周五', 23, '唱歌', 14, 7000],
           ['赵六', 25, '下棋', 15, 500],
           ['王七', 20, '跑步', 16, 60],
           ['朱八', 28, '旅游', 17, 300]], dtype=object)
    In [22]:
    data.index
    
    Out[22]:
    RangeIndex(start=0, stop=6, step=1)
     

    pandas参数说明

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

     

    1.io :excel 路径;

    In [24]:
    data3 = pd.read_excel(io=filname)
    data3
    
    Out[24]:
     
     姓名年龄爱好学号学费
    0 张三 20 打球 12 5000
    1 李四 21 游泳 13 6000
    2 周五 23 唱歌 14 7000
    3 赵六 25 下棋 15 500
    4 王七 20 跑步 16 60
    5 朱八 28 旅游 17 300
     

    2.sheetname:默认是sheetname为0,返回多表使用sheetname=[0,1],若sheetname=None是返回全表 。注意:int/string返回的是dataframe,而none和list返回的是dict of dataframe。

    In [32]:
    data3 = pd.read_excel(filname,sheet_name=[0,1])
    data3
    
    Out[32]:
    OrderedDict([(0,    姓名  年龄  爱好  学号    学费
                  0  张三  20  打球  12  5000
                  1  李四  21  游泳  13  6000
                  2  周五  23  唱歌  14  7000
                  3  赵六  25  下棋  15   500
                  4  王七  20  跑步  16    60
                  5  朱八  28  旅游  17   300), (1,   动物    植物
                  0    小猫  花
                  1    小狗  树)])
    In [37]:
    data3 = pd.read_excel(filname,sheet_name=0)
    data3
    
    Out[37]:
     
     姓名年龄爱好学号学费
    0 张三 20 打球 12 5000
    1 李四 21 游泳 13 6000
    2 周五 23 唱歌 14 7000
    3 赵六 25 下棋 15 500
    4 王七 20 跑步 16 60
    5 朱八 28 旅游 17 300
    In [38]:
    data3 = pd.read_excel(filname,sheet_name=1)
    data3
    
    Out[38]:
     
     动物植物
    0 小猫
    1 小狗
     

    3.header :指定作为列名的行,默认0,即取第一行,数据为列名行以下的数据;若数据不含列名,则设定 header = None;

    In [39]:
    data3 = pd.read_excel(filname,sheet_name=0,header=None)
    data3
    
    Out[39]:
     
     01234
    0 姓名 年龄 爱好 学号 学费
    1 张三 20 打球 12 5000
    2 李四 21 游泳 13 6000
    3 周五 23 唱歌 14 7000
    4 赵六 25 下棋 15 500
    5 王七 20 跑步 16 60
    6 朱八 28 旅游 17 300
    In [40]:
    data3 = pd.read_excel(filname,sheet_name=0,header=2)
    data3
    
    Out[40]:
     
     李四21游泳136000
    0 周五 23 唱歌 14 7000
    1 赵六 25 下棋 15 500
    2 王七 20 跑步 16 60
    3 朱八 28 旅游 17 300
     

    4.skiprows:省略指定行数的数据

    In [42]:
    data3 = pd.read_excel(filname, sheet_name=0, skiprows=1)
    data3
    
    Out[42]:
     
     张三20打球125000
    0 李四 21 游泳 13 6000
    1 周五 23 唱歌 14 7000
    2 赵六 25 下棋 15 500
    3 王七 20 跑步 16 60
    4 朱八 28 旅游 17 300
     

    5.skipfooter:省略从尾部数的行数据

    In [44]:
    data3 = pd.read_excel(filname, sheet_name=0, skipfooter=1)
    data3
    
    Out[44]:
     
     姓名年龄爱好学号学费
    0 张三 20 打球 12 5000
    1 李四 21 游泳 13 6000
    2 周五 23 唱歌 14 7000
    3 赵六 25 下棋 15 500
    4 王七 20 跑步 16 60
     

    6.index_col :指定列为索引列,也可以使用 u’string’

    In [46]:
    data3 = pd.read_excel(filname, sheet_name=0, index_col=1)
    data3
    
    Out[46]:
     
     姓名爱好学号学费
    年龄    
    20 张三 打球 12 5000
    21 李四 游泳 13 6000
    23 周五 唱歌 14 7000
    25 赵六 下棋 15 500
    20 王七 跑步 16 60
    28 朱八 旅游 17 300
     

    7.names:指定列的名字,传入一个list数据

    In [49]:
    data3 = pd.read_excel(filname, sheet_name=0,
                          names=['a', 'b', 'c', 'd', 'e'])
    data3
    
    Out[49]:
     
     abcde
    0 张三 20 打球 12 5000
    1 李四 21 游泳 13 6000
    2 周五 23 唱歌 14 7000
    3 赵六 25 下棋 15 500
    4 王七 20 跑步 16 60
    5 朱八 28 旅游 17 300
     
     

    转载于:https://www.cnblogs.com/xinmomoyan/p/10875792.html

    展开全文
  • 用python pandas 读取excel文件出错提示pd中没有read_excel函数具体是这样的'moduel' object has no attribute 'read_excel'![图片](https://img-ask.csdn.net/upload/201708/31/1504189580_245592.png)
  • python pandas读取excel文件

    千次阅读 2019-03-03 23:32:16
    python pandas读取excel文件 data=pd.read_excel(‘C:\Users\86188\python\dummy.xlsx’) 会报错:SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \...

    python pandas读取excel文件

    data=pd.read_excel(‘C:\Users\86188\python\dummy.xlsx’)

    会报错:SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape

    这个报错是文件的路径错了,改为
    data=pd.read_excel(‘C:/Users/86188/python/dummy.xlsx’)

    原因是在字符串中\被当作转移字符来使用,换成/就可以了。

    我一开始还以为是因为文件含有中文字符才会报错,原来和中文字符没有关系。

    参考https://blog.csdn.net/u011242657/article/details/64437612

    展开全文
  • Pandas读取excel文件[pandas.read_excel]说明一、pandas.read_excel函数及参数二、io三、sheet_name四、header、index_col五、usecols六、skiprows七、names八、dtype![在这里插入图片描述]...
  • Python3使用pandas读取excel文件并用列表输出 # !user/bin/env python3.9 # -*- utf-8 -*- # Author 郑浩 import numpy as np import pandas as pd ```python import numpy as np import pandas as pd data = pd....
  • python的pandas读取excel中的数据过长时,会发出现如下报错: assert 0 <= self.rowx < X12_MAX_ROWS 解决办法: 安装openpyxl: pip install openpyxl pandas的read_excel方法中,可以改变度取引擎,因此...
  • Python+pandas读取Excel文件并统计演员参演电影数量
  • pandas读取excel文件(为大家避雷踩坑啊!!!) 小白新人第一次写博客,有不对的地方希望大神们多多指正! 写这篇博客是因为我在网上查资料时发现没有人提到这个问题,于是记录一下,帮大家踩雷啦! 使用python中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,013
精华内容 805
关键字:

pandas读取excel文件