• 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.自动填充、排序、计算、数据过滤、筛选

    https://blog.csdn.net/u013089490/article/details/91422685
  • 相关阅读:
    Spring Boot 2.4 手工和 SDKMAN! 安装 Spring Boot 命令行
    Spring Boot 2.4 安装
    Java Web 开发中的中文乱码与解决方式
    项目文件与 SVN 资源库同步提示错误 Attempted to lock an already-locked dir
    JavaScript中的日期时间函数
    jmeter测试 常用数据库的性能
    jmeter 运行多个sql
    Linux 进程管理
    Linux vi 文件编辑
    Linux 常用文件管理命令
  • 原文地址:https://www.cnblogs.com/yfacesclub/p/11232736.html
Copyright © 2020-2023  润新知