基于Python第三方模块Pandas以指定数量分割数据写入同一个Excel的不同Sheet表中

记录一下工作中的小技巧:在Python中,使用pandas库来从SQLServer或者Mysql读取数据(或其他数据来源),然后根据需要将数据分割并写入不同的Excel sheet。下面是一个详细的步骤说明,包括如何连接SQLServer或者Mysql数据库、读取数据、分割数据以及将分割后的数据写入不同的Excel sheet。

文章目录

  • 步骤 1: 安装必要的库
  • 步骤 2: 连接数据库并读取数据
  • 步骤 3: 分割数据
  • 步骤 4: 将分割后的数据写入不同Sheet表中
  • 完整代码
  • 步骤 1: 安装必要的库

    可以使用pip来安装这些库:

    pip install pandas sqlalchemy openpyxl pymssql pymysql
    

    步骤 2: 连接数据库并读取数据

    首先,你需要创建一个到SQLServer或者Mysql的连接,并读取数据。

    from sqlalchemy import create_engine
    import pandas as pd
     
    # 创建数据库连接字符串
    server = '你的服务器地址'
    database = '你的数据库名'
    username = '你的用户名'
    password = '你的密码'
     
    # 连接SQLServer(选一个)
    connection_string = f'mssql+pymssql://{username}:{password}@{server}/{database}'
    # 连接Mysql(选一个)
    connection_string = f'mssql+pymysql://{username}:{password}@{server}/{database}'
    engine = create_engine(connection_string)
    
    # 读取数据表
    query = "SELECT * FROM 你的数据表"
    df = pd.read_sql(query, engine)
    

    说明:其他数据来源,可以自行修改,比如:读取Excel用pd.read_excel()函数。

    步骤 3: 分割数据

    你可以将数据分割成多个部分,例如每100万条记录一个sheet (注意:这里可以修改数量)

    def split_dataframe(df, chunk_size):
        chunks = []
        for i in range(0, len(df), chunk_size):
            chunk = df.iloc[i:i+chunk_size]
            chunks.append(chunk)
        return chunks
     
    # 分割数据为每100万条记录一个部分(注意:这里可以修改数量)
    chunk_size = 1000000  # 每100万条记录一个sheet
    chunks = split_dataframe(df, chunk_size)
    

    步骤 4: 将分割后的数据写入不同Sheet表中

    使用pandas的ExcelWriter将每个分割后的DataFrame写入不同的sheet。

    with pd.ExcelWriter('output.xlsx', engine='openpyxl') as writer:  # 使用openpyxl引擎以支持写入多个sheet
        for i, chunk in enumerate(chunks):
            chunk.to_excel(writer, sheet_name=f'Sheet_{i+1}', index=False)  # index=False不写入行索引到Excel中
    

    完整代码

    from sqlalchemy import create_engine
    import pandas as pd
     
    # 创建数据库连接字符串
    server = '你的服务器地址'
    database = '你的数据库名'
    username = '你的用户名'
    password = '你的密码'
    
    # 连接SQLServer(选一个)
    connection_string = f'mssql+pymssql://{username}:{password}@{server}/{database}'
    # 连接Mysql(选一个)
    connection_string = f'mssql+pymysql://{username}:{password}@{server}/{database}'
    engine = create_engine(connection_string)
    
    # 读取数据表
    query = "SELECT * FROM 你的数据表"
    df = pd.read_sql(query, engine)
     
    # 读取数据表
    query = "SELECT * FROM 你的数据表"
    df = pd.read_sql(query, engine)
     
    # 分割数据为每100万条记录一个部分(注意:这里可以修改数量)
    chunk_size = 1000000  # 每100万条记录一个sheet
    chunks = split_dataframe(df, chunk_size)
     
    # 将分割后的数据写入同一个Excel的不同Sheet表中
    with pd.ExcelWriter('output.xlsx', engine='openpyxl') as writer:  # 使用openpyxl引擎以支持写入多个sheet
        for i, chunk in enumerate(chunks):
            chunk.to_excel(writer, sheet_name=f'Sheet_{i+1}', index=False)  # index=False不写入行索引到Excel中
    

    作者:袁袁袁袁满

    物联沃分享整理
    物联沃-IOTWORD物联网 » 基于Python第三方模块Pandas以指定数量分割数据写入同一个Excel的不同Sheet表中

    发表回复