Python如何循环创建多个表格

在日常编程中,有时我们需要根据特定的需求,批量创建多个表格。本文将介绍如何使用Python循环来实现这一功能,并提供一个具体的问题场景。

问题场景

假设我们是一家电商公司,每天都会生成大量的销售数据。为了更好地分析和管理这些数据,我们希望根据每个销售员的姓名创建一个表格,并将其保存为文件。然后,我们将每天的销售数据逐一录入到对应的表格中。因此,我们需要一个自动化的方法来批量创建这些表格。

解决方案

我们可以使用Python的循环结构和文件操作来实现批量创建多个表格的功能。下面是具体的解决方案。

第一步:导入所需的模块

我们首先需要导入os模块和pandas模块。os模块用于创建文件夹和文件,pandas模块用于创建表格和写入数据。

import os
import pandas as pd

第二步:定义销售员姓名列表

我们需要定义一个包含所有销售员姓名的列表。

salesmen = ['Alice', 'Bob', 'Charlie', 'David']

第三步:循环创建表格

我们可以使用for循环来遍历销售员姓名列表,并在每次循环中创建一个表格。在创建表格之前,我们需要先创建一个文件夹来存放所有的表格文件。

# 创建文件夹
if not os.path.exists('tables'):
    os.mkdir('tables')

# 循环创建表格
for salesman in salesmen:
    # 创建表格
    data = {'Product': [], 'Price': [], 'Quantity': []}
    df = pd.DataFrame(data)

    # 保存表格为文件
    file_name = f'tables/{salesman}.csv'
    df.to_csv(file_name, index=False)

在上述代码中,我们使用了os.mkdir()函数来创建一个名为tables的文件夹。然后,使用for循环遍历销售员姓名列表,并在每次循环中创建一个空的表格。最后,使用df.to_csv()函数将表格保存为CSV文件,并指定文件名为salesman.csv,其中salesman为当前销售员的姓名。

第四步:录入销售数据

我们可以使用类似的方法,在每个表格中逐一录入销售数据。

# 销售数据录入函数
def enter_sales_data(salesman, product, price, quantity):
    file_name = f'tables/{salesman}.csv'
    df = pd.read_csv(file_name)

    new_row = {'Product': product, 'Price': price, 'Quantity': quantity}
    df = df.append(new_row, ignore_index=True)

    df.to_csv(file_name, index=False)

# 示例:录入销售数据
enter_sales_data('Alice', 'Apple', 2.99, 10)
enter_sales_data('Bob', 'Banana', 1.99, 5)
enter_sales_data('Charlie', 'Orange', 0.99, 8)

上述代码中,我们定义了一个enter_sales_data()函数,用于录入销售数据。该函数接受销售员姓名、产品名称、价格和数量作为参数。在函数中,我们首先读取对应销售员的表格文件,然后创建一个新的行,并将其添加到表格中。最后,将更新后的表格保存为文件。

第五步:检查结果

我们可以通过读取每个表格文件,并打印出其内容来检查我们的结果。

# 打印表格内容
for salesman in salesmen:
    file_name = f'tables/{salesman}.csv'
    df = pd.read_csv(file_name)
    print(f'{salesman}\'s sales data:')
    print(df)
    print()

完整代码:

import os
import pandas as pd

salesmen = ['Alice', 'Bob', 'Charlie', 'David']

if not os.path.exists('tables'):
    os.mkdir('tables')

for salesman in salesmen:
    data = {'Product': [], 'Price': [], 'Quantity': []}
    df = pd.DataFrame(data)

    file_name = f'tables/{salesman}.csv