Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # 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()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement