pjmakey2

rtdc_compare

May 8th, 2023
1,114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.60 KB | None | 0 0
  1.         from django.forms import model_to_dict
  2.         npp = []
  3.         dfp = pd.read_csv('/opt/fami/dbfaco/acodaypp.csv',        
  4.                             sep='|',
  5.                             quotechar='"',
  6.                             decimal=',',
  7.                             encoding='utf-8',
  8.                             dtype={'CAMPO14': str, 'CAMPO15': str, 'prod_gcas': str}
  9.                         )
  10.         dfp['FEC'] = pd.to_datetime(dfp['FEC'], format='%d/%m/%Y')
  11.         years = dfp['FEC'].dt.year
  12.         months = dfp['FEC'].dt.month
  13.         dfp['YEAR'] = dfp['FEC'].dt.year
  14.         dfp['MONTH'] = dfp['FEC'].dt.month
  15.         dfp['MSU'] = dfp['STA'] / 1000
  16.  
  17.         year = 2023
  18.         month = 4
  19.        
  20.         eeans = list(ExclussionTransaction.objects.using('rtdcbits')\
  21.                     .filter(date__gte='{}-{}-01'.format(year, month))\
  22.                     .values_list('dun', flat=True)\
  23.                     .distinct('dun'))
  24.         rtdcs = [ model_to_dict(a) for a in Fac.objects.using('rtdcbits').filter(
  25.                                                             ~Q(product_dun14_code__in=eeans),
  26.                                                             ~Q(canal='CONSUMO/INST'),
  27.                                                             transaction_period__year=year,
  28.                                                             transaction_period__month=month,
  29.                                                             proveedor='PROCTER_AND_GAMBLE',
  30.                                                             origen='ACO').exclude(familia='GENERAL', )
  31.                                                             ]
  32.        
  33.  
  34.  
  35.         dfr = pd.DataFrame(rtdcs)
  36.  
  37.         #read the txt file
  38.         pps = {'sep':'!', 'quotechar':'"', 'encoding':'utf-8'}
  39.         dfexternal = pd.read_csv('/opt/external/LADMAR/fact_ACONCAGUA_{}012023.txt'.format(str(month).zfill(2)), converters={'store_code': str, 'store_salesrep_code': str }, **pps)
  40.         dfexternal['indirect_shipments_customer_units'] = dfexternal['indirect_shipments_customer_units'].astype(float)
  41.         dfexternal['store_name'] = dfexternal['store_name'].astype(str)
  42.         dfexternal['transaction_period'] = dfexternal['transaction_period'].apply(lambda x: x.split('-')[0])
  43.         dfexternal['transaction_period'] = pd.to_datetime(dfexternal['transaction_period'], format='%m/%d/%Y')        
  44.         dfexternal = dfexternal[dfexternal['transaction_type'].isin(['fac', 'dev'])].reset_index()
  45.         mark_nc = dfexternal['transaction_type'] == 'dev'
  46.         dfexternal.loc[mark_nc, 'indirect_shipments_amount'] = dfexternal[mark_nc].indirect_shipments_amount * -1
  47.         dfexternal.loc[mark_nc, 'indirect_shipments_customer_units'] = dfexternal[mark_nc].indirect_shipments_customer_units * -1
  48.         dfexternal.loc[mark_nc, 'indirect_shipments_pu'] = dfexternal[mark_nc].indirect_shipments_pu * -1                
  49.  
  50.         dfexternal.rename(columns={'indirect_shipments_amount':'VTA', 'indirect_shipments_pu':'CAJ_PROVIDER', 'msu': 'MSU'}, inplace=True)
  51.  
  52.         rmark = dfr['transaction_type'].isin(['dev', 'fac'])
  53.         dfr['indirect_shipments_amount'] = dfr['indirect_shipments_amount'].astype(float)
  54.         dfr['indirect_shipments_pu'] = dfr['indirect_shipments_pu'].astype(float)
  55.         dfr['msu'] = dfr['msu'].astype(float)
  56.         dfr.rename(columns={'indirect_shipments_amount':'VTA', 'indirect_shipments_pu':'CAJ_PROVIDER', 'msu': 'MSU'}, inplace=True)
  57.         pmark = (dfp['YEAR'] == year) & (dfp['MONTH'] == month) & (dfp['proveedor'] == 'PROCTER_AND_GAMBLE')
  58.         a =  dfp[pmark][['familia_pg', 'VTA', 'CAJ_PROVIDER', 'MSU']].groupby(['familia_pg']).agg('sum').sort_values(by=['VTA'], ascending=False).reset_index()
  59.         b = dfr[rmark][['familia_pg', 'VTA', 'CAJ_PROVIDER', 'MSU']].groupby(['familia_pg']).agg('sum').sort_values(by=['VTA'], ascending=False).reset_index()
  60.         c = pd.merge(a, b, on='familia_pg', suffixes=('_CUBO', '_DB'))
  61.        
  62.         c['VTA'] = (c['VTA_CUBO']*100)/c['VTA_DB']
  63.         c['CAJ_PROVIDER'] = (c['CAJ_PROVIDER_CUBO']*100)/c['CAJ_PROVIDER_DB']
  64.         c['MSU'] = (c['MSU_CUBO']*100)/c['MSU_DB']
  65.         c['YEAR'] = year
  66.         c['MONTH'] = month
  67.         c = c[['YEAR', 'MONTH', 'VTA_CUBO', 'VTA_DB', 'CAJ_PROVIDER_CUBO', 'CAJ_PROVIDER_DB', 'MSU_CUBO', 'MSU_DB', 'VTA', 'CAJ_PROVIDER', 'MSU']]
  68.         print('Comparasion PPLAY vs Fac Model')
  69.         print(c)
  70.         print('#'*40)
  71.         print('\n')
  72.         #Compare against the .txt file
  73.        
  74.         dfr['prod_codigoviejo'] = dfr['product_customer_code'].astype(int)
  75.         df_familia_pg = dict(dfr[['prod_codigoviejo', 'familia_pg']].to_dict(orient='split').get('data'))
  76.         dfexternal['familia_pg'] = dfexternal['product_customer_code'].map(df_familia_pg).fillna('ND')
  77.         rmark = dfexternal['transaction_type'].isin(['dev', 'fac'])
  78.         b = dfexternal[rmark][['familia_pg', 'VTA', 'CAJ_PROVIDER', 'MSU']].groupby(['familia_pg']).agg('sum').sort_values(by=['VTA'], ascending=False).reset_index()
  79.         ctxt = pd.merge(a, b, on='familia_pg', suffixes=('_CUBO', '_DB'))
  80.        
  81.         ctxt['VTA'] = (c['VTA_CUBO']*100)/c['VTA_DB']
  82.         ctxt['CAJ_PROVIDER'] = (c['CAJ_PROVIDER_CUBO']*100)/c['CAJ_PROVIDER_DB']
  83.         ctxt['MSU'] = (c['MSU_CUBO']*100)/c['MSU_DB']
  84.         ctxt['YEAR'] = year
  85.         ctxt['MONTH'] = month
  86.         ctxt = ctxt[['YEAR', 'MONTH', 'VTA_CUBO', 'VTA_DB', 'CAJ_PROVIDER_CUBO', 'CAJ_PROVIDER_DB', 'MSU_CUBO', 'MSU_DB', 'VTA', 'CAJ_PROVIDER', 'MSU']]
  87.         print('Comparasion PPLAY vs Txt File')
  88.         print(ctxt)
  89.         print('#'*40)
  90.         print('\n')        
  91.  
  92.  
  93.         #Compare by product code
  94.         dfr['prod_codigoviejo'] = dfr['product_customer_code'].astype(int)
  95.  
  96.         pmark = (dfp['YEAR'] == year) & (dfp['MONTH'] == month) & (dfp['proveedor'] == 'PROCTER_AND_GAMBLE')
  97.         a =  dfp[pmark][['prod_codigoviejo', 'VTA', 'CAJ_PROVIDER', 'MSU']].groupby(['prod_codigoviejo']).agg('sum').sort_values(by=['VTA'], ascending=False).reset_index()
  98.         b = dfr[rmark][['prod_codigoviejo', 'VTA', 'CAJ_PROVIDER', 'MSU']].groupby(['prod_codigoviejo']).agg('sum').sort_values(by=['VTA'], ascending=False).reset_index()
  99.         dc = pd.merge(a, b, on='prod_codigoviejo', suffixes=('_CUBO', '_DB'))
  100.  
  101.         dc['VTA'] = (dc['VTA_CUBO']*100)/dc['VTA_DB']
  102.         dc['CAJ_PROVIDER'] = (dc['CAJ_PROVIDER_CUBO']*100)/dc['CAJ_PROVIDER_DB']
  103.         dc['MSU'] = (dc['MSU_CUBO']*100)/dc['MSU_DB']
  104.         dc['YEAR'] = year
  105.         dc['MONTH'] = month
  106.         dc = dc[['prod_codigoviejo', 'YEAR', 'MONTH', 'VTA_CUBO', 'VTA_DB', 'CAJ_PROVIDER_CUBO', 'CAJ_PROVIDER_DB', 'MSU_CUBO', 'MSU_DB', 'VTA', 'CAJ_PROVIDER', 'MSU']]
  107.  
  108.         #compare by product against the .txt file
  109.         dfexternal['prod_codigoviejo'] = dfexternal['product_customer_code'].astype(int)
  110.  
  111.         pmark = (dfp['YEAR'] == year) & (dfp['MONTH'] == month) & (dfp['proveedor'] == 'PROCTER_AND_GAMBLE')
  112.         a =  dfp[pmark][['prod_codigoviejo', 'VTA', 'CAJ_PROVIDER', 'MSU']].groupby(['prod_codigoviejo']).agg('sum').sort_values(by=['VTA'], ascending=False).reset_index()
  113.         rmark = dfexternal['transaction_type'].isin(['dev', 'fac'])
  114.         b = dfexternal[rmark][['prod_codigoviejo', 'VTA', 'CAJ_PROVIDER', 'MSU']].groupby(['prod_codigoviejo']).agg('sum').sort_values(by=['VTA'], ascending=False).reset_index()
  115.         dc = pd.merge(a, b, on='prod_codigoviejo', suffixes=('_CUBO', '_DB'))
  116.  
  117.         dc['VTA'] = (dc['VTA_CUBO']*100)/dc['VTA_DB']
  118.         dc['CAJ_PROVIDER'] = (dc['CAJ_PROVIDER_CUBO']*100)/dc['CAJ_PROVIDER_DB']
  119.         dc['MSU'] = (dc['MSU_CUBO']*100)/dc['MSU_DB']
  120.         dc['YEAR'] = year
  121.         dc['MONTH'] = month
  122.         dc = dc[['prod_codigoviejo', 'YEAR', 'MONTH', 'VTA_CUBO', 'VTA_DB', 'CAJ_PROVIDER_CUBO', 'CAJ_PROVIDER_DB', 'MSU_CUBO', 'MSU_DB', 'VTA', 'CAJ_PROVIDER', 'MSU']]
  123.         #See transaction per transaction day
  124.         dfexternal['FEC'] = dfexternal['transaction_period']
  125.         ta =  dfp[pmark][['FEC','prod_codigoviejo', 'VTA', 'CAJ_PROVIDER', 'MSU']].groupby(['FEC', 'prod_codigoviejo']).agg('sum').sort_values(by=['FEC'], ascending=False).reset_index()
  126.         tb = dfexternal[rmark][['FEC','prod_codigoviejo', 'VTA', 'CAJ_PROVIDER', 'MSU']].groupby(['FEC','prod_codigoviejo']).agg('sum').sort_values(by=['FEC'], ascending=False).reset_index()
  127.         tdc = pd.merge(ta, tb, on=['FEC','prod_codigoviejo'], suffixes=('_CUBO', '_DB'))        
  128.         tdc['VTA'] = (tdc['VTA_CUBO']*100)/tdc['VTA_DB']
  129.         tdc['CAJ_PROVIDER'] = (tdc['CAJ_PROVIDER_CUBO']*100)/tdc['CAJ_PROVIDER_DB']
  130.         tdc['MSU'] = (tdc['MSU_CUBO']*100)/tdc['MSU_DB']
  131.         tdc['YEAR'] = year
  132.         tdc['MONTH'] = month
Advertisement
Add Comment
Please, Sign In to add comment