zoukankan      html  css  js  c++  java
  • pandas读取xlsx


    一、使用pandas读取xlsx

      引用pandas库

    import pandas as pd
    pd.read_excel(path, 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, parse_dates=False, 
                  date_parser=None, thousands=None, comment=None, skipfooter=0, 
                  convert_float=True, **kwds)
     

    pandas读取Excel后返回DataFrame;

    二、解析pd.read_excel()的常用参数

    1.path --> xlsx的存储路径(建议使用英文路径或者英文命名方式)

    import pandas as pd
    path = r'D:Testdatabasedatadata.xlsx'

    2.sheet_name --> 读取工作表(sheet)名称

    sheet_name:None代表读取所有的sheet,返回的就是一个ordereddict;指定就只读取指定sheet,只有一个返回的就是dataframe

    # 整型数字、列表名、SheetN、或者是以上三组组合列表
    
    # 整型数字:目标sheet所在位置,以0开始,比如sheet_name = 0代表第1个工作表
    data = pd.read_excel(path, sheet_name = 1)
    ss = data.head()
    print(ss) # 工作表名:目标sheet的名称,可用中英文 data = pd.read_excel(path, sheet_name = '账号密码') data.head() # SheetN:表示第N个sheet,S必须大写,注意与整型数字的区别使用 data = pd.read_excel(path, sheet_name = 'Sheet5') data.head() # 组合使用 # sheet_name = [0, '车辆信息', 'Sheet4'],代表读取三个工作表,分别为第1个工作表、名为“车辆信息”的工作表和第4个工作表。显然,Sheet4未经重命名。 # sheet_name 默认为0,取Excel第一个工作表。如果读取多个工作表,则显示表格的字典 data = pd.read_excel(path, sheet_name = ['账号密码', '车辆信息'], nrows = 5) # sheet_name = ['账号密码', '车辆信息'] ,返回两个工作表组成的字典 data.head()

    3.header --> 指定前几行作为列名(指定数据表的表头,默认值为0,即将第一行作为表头。)

    # 默认[0],即首行作为列名,设置为[0,1],即表示将前两行作为多重索引
    data = pd.read_excel(path, sheet_name = '车辆信息', header = [0,1]) 
    # 前两行作为列名。
    data.head()
    data = pd.read_excel(path, sheet_name = '车辆信息', header = [0,1,2]) 
    # 前三行作为列名
    data.head()

    4.names --> 自定义列名

    # 一般适用于Excel缺少列名,或者需要重新定义列名的情况
    # 注意:names的长度必须和Excel列长度一致,否则会报错
    data = pd.read_excel(path, sheet_name = '英超射手榜', 
                         names = ['car_plate','sim_num','club','goal','common_goal','penalty'])
    data.head()

    5.index_col --> 用作索引的列

    # 可以是工作表列名称,如index_col = '车牌号';
    data = pd.read_excel(path, sheet_name = '车辆信息', index_col = '车牌号')
    data.head()
    
    # 可以是整型或整型列表,如index_col = 0 或 [0, 1],如果选择多个列,则返回多重索引
    data = pd.read_excel(path, sheet_name = '车辆信息', index_col = [0, 1])
    data.head()

    6.usecols --> 读取指定的列

    # usecols 可避免读取全量数据,而是以分析需求为导向选择特定数据,可以大幅提高效率
    # 使用整型,从0开始,如[0,2,3]
    data = pd.read_excel(io, sheet_name = '车辆信息', usecols = [0, 1, 2])  # 想要读取第一列、第二列、和第三列的数据
    data.head()
    
    # 可以使用Excel传统的列名“A”、“B”等字母,如“A:C, E” ="A, B, C, E",注意两边都包括
    data = pd.read_excel(path, sheet_name = '车辆信息', usecols = 'A:C, E')
    data.head()

    7.squeeze --> 当工作表只有一列

    # squeeze为True时,返回Series,反之返回DataFrame
    data = pd.read_excel(path, sheet_name = '新增车组名', squeeze  = True)
    data.head()

    data = pd.read_excel(path, sheet_name = '新增车组名', squeeze  = False)
    data.head()

    8.skiprows --> 跳过特定行

    # skiprows= n, 跳过前n行; skiprows = [a, b, c],跳过第a+1,b+1,c+1行(索引从0开始)
    # 使用skiprows 后,有可能首行(即列名)也会被跳过。
    data = pd.read_excel(path, sheet_name = '新增车组名', skiprows = [1,2,3]) 
    # 跳过第2,3,4行数据(索引从0开始,包括列名)
    data.head()
    
    # 跳过前三行
    data = pd.read_excel(io, sheet_name = '新增车组名', skiprows = 3)
    data.head()

    9.nrows --> 读取指定行数

    # 读取指定行数, nrows = 10 ,即读取10行数据
    data = pd.read_excel(path, sheet_name = '新增车组名', nrows = 10)
    data.head()

    10.skipfooter --> 跳过末尾N行

    data = pd.read_excel(path , sheet_name = '新增车组名', skipfooter = 18)
    #  skipfooter = 18, 跳过末尾0-18行(索引从0开始)
    data.head()

    11.converters --> 强制规定列数据类型

    读数据的时候使用converters指定列数据的数值类型 pd.read_excel('a.xlsx',converters={0: str})

    pandas默认将文本类的数据读取为整型),主要用途:保留以文本形式存储的数字

     三、常用操作

    1.找到指定的一列,并在这一列中进行比较

    data['gender'][data['gender'] == 'male'] = 0
    data['gender'][data['gender'] == 'female'] = 1

    2.保存

    pd.DataFrame(data).to_excel(path, sheet_name='Sheet1', index=False, header=True)

    3.新增列数据

    data['列名称'] = None
    # 值为None(默认值)时,只有列名,没有数据
    data['profession'] = None

    4.新增行数据

    # 这里的N为excel自动给行加的序号
    data.loc[N] = [值1, 值2, ...]
    # 比如我在第5行新增
    data.loc[5] = ['James', 32, 'male']

    5.删除一列或者删除一行

    # 删除gender列,需要指定axis为1,当删除行时,axis为0
    data = data.drop('gender', axis=1)
    
    # 删除第3,4行,这里下表以0开始,并且标题行不算在类
    data = data.drop([2, 3], axis=0)

    6.遍历指定列的所有行

    data = pd.read_excel(path,sheet_name="sheet1")
    for i in data['列名']:
        print(i)
        print(i,type(i))  # type(i) 数据类型,这里的i为字符串
        print(i.split(' ')) # 字符串转列表
        values=pd.DataFrame(i.split(' '), columns=['新增车组名'])  # 列表转DataFrame
        print(values) 

    7.自动填充、排序、计算、数据过滤、筛选

  • 相关阅读:
    hdu 6702 ^&^ 位运算
    hdu 6709 Fishing Master 贪心
    hdu 6704 K-th occurrence 二分 ST表 后缀数组 主席树
    hdu 1423 Greatest Common Increasing Subsequence 最长公共上升子序列 LCIS
    hdu 5909 Tree Cutting FWT
    luogu P1588 丢失的牛 宽搜
    luogu P1003 铺地毯
    luogu P1104 生日
    luogu P1094 纪念品分组
    luogu P1093 奖学金
  • 原文地址:https://www.cnblogs.com/karkash/p/12396567.html
Copyright © 2011-2022 走看看