基于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中

你可能感兴趣的:(Python实用技巧大全,python,pandas,excel,不同Sheet表)