Как запустить один и тот же код с разными файлами ввода и разными файлами вывода? То же, что и макрос SAS

#python #pandas #sas-macro

Вопрос:

Привет, я ищу шаг, чтобы повторить следующее:

  1. Data_Dec2019.xlsx
  2. Data_Mar2020.xlsx
  3. Data_Jun2020.xlsx
  4. Base_Data.xlsx

Код выглядит следующим образом:

 #Importing package
import pandas as pd

df_base = pd.read_excel(r'...Base_Data.xlsx')

df_data = pd.read_excel(r'...Data_Jun2020.xlsx')

#Data Cleaning for Base
df_base = df_base.sort_values(by='CustomerNumber')

df_base = df_base.drop_duplicates('CustomerNumber')


#Data Cleaning for Data
df_data = df_data.groupby (['CustomerNumber'])['Amount'].sum().reset_index()

#Map both data
df_mapped = pd.merge (df_base, df_data, on = "CustomerNumber", how = "inner")

#Export Data
df_mapped.to_excel(r'...Merged_June2020.xlsx')
 

У меня есть более 10 данных с различными моментальными снимками, я хотел бы повторить процесс. Попытался просмотреть сообщение сообщества, но в основном это были сложные вопросы. Обратите внимание, что код обработки данных длиннее и сложнее, но для иллюстрации я поделился упрощенной версией, чтобы понять, есть ли простой способ сделать это.

Спасибо за помощь.

Ответ №1:

Создайте функцию для обработки файлов и перебора имен файлов с pathlib помощью . Адаптируйте приведенный ниже код:

 import pathlib

data_dir = 'file/path/to/data'

# load base data
df_base = pd.read_excel(r'...Base_Data.xlsx') 
            .sort_values(by='CustomerNumber') 
            .drop_duplicates('CustomerNumber')


# load, process and export a file
def process_data(file):
    df_data = pd.read_excel(file) 
                .groupby (['CustomerNumber'])['Amount'] 
                .sum().reset_index()

    df_base.merge(df_data, on="CustomerNumber") 
           .to_excel(file.parent / f'Merged_{file.name}')


for file in data_dir.glob('Data_*.xlsx'):
   process_data(file)