title: Loop through multiple CSV files and run a script
body: <p>I have a script which pulls in data from a csv file, does some manipulations to it and creates an output excel file. But, its a tedious process as I need to do it for multiple files. </p>
  
  <p>Question: Is there a way for me to run this script across multiple csv files together and create a separate excel file output for each input file?</p>
  
  <p>I'm not sure what to try out here. I've read that I need to use a module called glob but I'm not sure how to go about it.</p>
  
  <p>This script works for a single file:</p>
  
  <pre><code># Import libraries
  import pandas as pd
  import xlsxwriter
  
  # Set system paths
  INPUT_PATH = 'SystemPath//Downloads//'
  INPUT_FILE = 'rawData.csv'
  
  OUTPUT_PATH = 'SystemPath//Downloads//Output//'
  OUTPUT_FILE = 'rawDataOutput.xlsx'
  
  # Get data
  df = pd.read_csv(INPUT_PATH + INPUT_FILE)
  
  # Clean data
  cleanedData = df[['State','Campaigns','Type','Start date','Impressions','Clicks','Spend(INR)',
                    'Orders','Sales(INR)','NTB orders','NTB sales']]
  cleanedData = cleanedData[cleanedData['Impressions'] != 0].sort_values('Impressions', 
                                                                         ascending= False).reset_index()
  cleanedData.loc['Total'] = cleanedData.select_dtypes(pd.np.number).sum()
  cleanedData['CTR(%)'] = (cleanedData['Clicks'] / 
                           cleanedData['Impressions']).astype(float).map("{:.2%}".format)
  cleanedData['CPC(INR)'] = (cleanedData['Spend(INR)'] / cleanedData['Clicks'])
  cleanedData['ACOS(%)'] = (cleanedData['Spend(INR)'] / 
                            cleanedData['Sales(INR)']).astype(float).map("{:.2%}".format)
  cleanedData['% of orders NTB'] = (cleanedData['NTB orders'] / 
                                    cleanedData['Orders']).astype(float).map("{:.2%}".format)
  cleanedData['% of sales NTB'] = (cleanedData['NTB sales'] / 
                                   cleanedData['Sales(INR)']).astype(float).map("{:.2%}".format)
  cleanedData = cleanedData[['State','Campaigns','Type','Start date','Impressions','Clicks','CTR(%)',
                             'Spend(INR)','CPC(INR)','Orders','Sales(INR)','ACOS(%)',
                             'NTB orders','% of orders NTB','NTB sales','% of sales NTB']]
  
  # Create summary
  summaryData = cleanedData.groupby(['Type'])[['Spend(INR)','Sales(INR)']].agg('sum')
  summaryData.loc['Overall Snapshot'] = summaryData.select_dtypes(pd.np.number).sum()
  summaryData['ROI'] = summaryData['Sales(INR)'] / summaryData['Spend(INR)']
  
  # Push to excel
  writer = pd.ExcelWriter(OUTPUT_PATH + OUTPUT_FILE, engine='xlsxwriter')
  summaryData.to_excel(writer, sheet_name='Summary')
  cleanedData.to_excel(writer, sheet_name='Overall Report')
  writer.save()
  </code></pre>
  
  <p>I've never tried anything like this before and I would appreciate your help trying to figure this out</p>