In [1]:
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
data_list = {}

data_list['data'] = pd.read_csv('data.csv')
data_list['banner'] = pd.read_csv('banner.csv')
data_list['publisher'] = pd.read_csv('publisher.csv')


data_list['data']['day'] = pd.to_datetime(data_list['data']['day'])
data_list['data']['start_time'] = pd.to_datetime(data_list['data']['start_time'])
data_list['data']['end_time'] = pd.to_datetime(data_list['data']['end_time'])

for k, v in data_list.items() : 
    print(k,'\n\n')
    
    print(k,'Head\n\n',v.head(),'\n','-'*10)
    print(k,'Shape\n\n',v.shape,'\n','-'*10)
    print(k,'Describe\n\n',v.describe(),'\n','-'*10)
    print(k,'info\n\n',v.info(),'\n','-'*10)
    print('*'*50)


publisher 


publisher Head

    Campaign name  Publisher
0  Campaign_char       7320
1  Campaign_brun       7320
2  Campaign_cong       3528
3  Campaign_dark       1633
4  Campaign_drab       9676 
 ----------
publisher Shape

 (80, 2) 
 ----------
publisher Describe

          Publisher
count    80.000000
mean   5230.487500
std    2756.760546
min    1311.000000
25%    3358.000000
50%    4415.000000
75%    7632.000000
max    9676.000000 
 ----------
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 80 entries, 0 to 79
Data columns (total 2 columns):
Campaign name    80 non-null object
Publisher        80 non-null int64
dtypes: int64(1), object(1)
memory usage: 1000.0+ bytes
publisher info

 None 
 ----------
**************************************************
data 


data Head

    Campaign_name c_type owner  price start_time   end_time Banner_code  \
0  Campaign_desi    CPM    AR   6.85 2014-02-25 2014-03-01    00ha91ro   
1  Campaign_desi    CPM    AR   6.85 2014-02-25 2014-03-01    00ha91ro   
2  Campaign_desi    CPM    AR   6.85 2014-02-25 2014-03-01    00ha91ro   
3  Campaign_desi    CPM    AR   6.85 2014-02-25 2014-03-01    00ha91ro   
4  Campaign_anti    CPM    MM  15.39 2014-04-05 2014-04-08    00ha91ro   

     imps  clk  con1        day  day_con  day_clk  
0  226725   83     2 2014-02-25        0       22  
1  226725   83     2 2014-02-26        0       20  
2  226725   83     2 2014-02-27        2       20  
3  226725   83     2 2014-02-28        0       21  
4  107076  132     1 2014-04-05        0       53   
 ----------
data Shape

 (2599, 13) 
 ----------
data Describe

              price          imps          clk         con1      day_con  \
count  2599.000000  2.599000e+03  2599.000000  2599.000000  2599.000000   
mean      8.614348  2.742433e+05  1182.647557    10.978068     0.934205   
std       4.386961  2.560528e+05  1316.026469    12.929038     1.524214   
min       2.080000  2.976000e+03     0.000000     0.000000     0.000000   
25%       6.850000  9.571600e+04   318.000000     2.000000     0.000000   
50%       6.850000  1.894610e+05   671.000000     6.000000     0.000000   
75%      11.630000  3.464450e+05  1694.000000    16.000000     1.000000   
max      20.830000  1.319591e+06  8266.000000    79.000000    21.000000   

           day_clk  
count  2599.000000  
mean    105.347057  
std     122.027110  
min       0.000000  
25%      33.000000  
50%      71.000000  
75%     138.000000  
max    1972.000000   
 ----------
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2599 entries, 0 to 2598
Data columns (total 13 columns):
Campaign_name    2599 non-null object
c_type           2599 non-null object
owner            2599 non-null object
price            2599 non-null float64
start_time       2599 non-null datetime64[ns]
end_time         2599 non-null datetime64[ns]
Banner_code      2599 non-null object
imps             2599 non-null int64
clk              2599 non-null int64
con1             2599 non-null int64
day              2599 non-null datetime64[ns]
day_con          2599 non-null int64
day_clk          2599 non-null int64
dtypes: datetime64[ns](3), float64(1), int64(5), object(4)
memory usage: 223.4+ KB
data info

 None 
 ----------
**************************************************
banner 


banner Head

   Banner_code      Banner Product   Format
0    2051bfc0  AAA-Ginger     AAA  160x600
1    23b1573c  AAA-Ginger     AAA  300x250
2    664a6256  AAA-Ginger     AAA  300x600
3    f85c6e92  AAA-Ginger     AAA  624x104
4    d5c07282  AAA-Ginger     AAA   728x90 
 ----------
banner Shape

 (874, 4) 
 ----------
banner Describe

        Banner_code    Banner Product   Format
count          874       874     874      874
unique         874        68       2       45
top       3e0ced49  BBB-aero     BBB  300x250
freq             1        45     594      224 
 ----------
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 874 entries, 0 to 873
Data columns (total 4 columns):
Banner_code    874 non-null object
Banner         874 non-null object
Product        874 non-null object
Format         874 non-null object
dtypes: object(4)
memory usage: 13.7+ KB
banner info

 None 
 ----------
**************************************************

In [2]:
#(Appendix)
#Dowod na to, ze kazdy banner id jest unikalny: 
#Bierzemy ilosc elementow i porownujemy z ilosciom unikalnych elementow:

print('Ilosc wszystkich banner_code: ',len(data_list['banner']['Banner_code']))
print('Ilosc unikalnych banner_code: ',len(data_list['banner']['Banner_code'].unique()))


#I przypisany tylko do jednego produktu:

#Zbior id przypisanych do AAA
AAA_banner_id = data_list['banner'][data_list['banner']['Product'] == 'AAA']['Banner_code'].values
BBB_banner_id = data_list['banner'][data_list['banner']['Product'] == 'BBB']['Banner_code'].values

#Przekroj:
print('Przekroj banner_code dla produktu AAA i BBB: ', np.intersect1d(AAA_banner_id, BBB_banner_id))    
#Tak samo z kampaniami (przypisane tylko do produktu):


Ilosc wszystkich banner_code:  874
Ilosc unikalnych banner_code:  874
Przekroj banner_code dla produktu AAA i BBB:  []

In [3]:
#(Appendix) 
#Dowod na to, ze jedna kampania NIE przypada na jeden product (Appendix):
#Zliczamy ile produktow wystepuje dla danej kampanii. Filtrujemy dane po campaign_code, robimy inner joina z lista bannerow i patrzymy ile jest unikalnych produktow.
#Jasno widac, ze kampanie moga miec zarowno jeden jak i dwa produkty.

Campaign_names = data_list['data']['Campaign_name'].unique()
Campaign_names_bool = data_list['data']['Campaign_name'] == Campaign_names[0]

for campaign in Campaign_names : 
    Campaign_names_bool = data_list['data']['Campaign_name'] == campaign
    temp_data = data_list['data'][Campaign_names_bool]
    temp_data = temp_data.merge(data_list['banner'][['Banner_code','Product']],how = 'inner',left_on = 'Banner_code',right_on='Banner_code')
    print(campaign,len(temp_data['Product'].unique()) )


Campaign_desi 1
Campaign_anti 2
Campaign_dark 2
Campaign_flax 1
Campaign_amet 2
Campaign_carr 2
Campaign_cana 2
Campaign_byza 1
Campaign_ash  2
Campaign_cal  1
Campaign_aoio 1
Campaign_deep 2
Campaign_crim 2
Campaign_corn 1
Campaign_bitt 1
Campaign_apri 1
Campaign_char 1
Campaign_ecru 2
Campaign_drab 2
Campaign_dand 1
Campaign_buff 1
Campaign_aure 1
Campaign_acid 2
Campaign_chin 2
Campaign_eeri 2
Campaign_alic 2
Campaign_andr 1
Campaign_cadm 1
Campaign_cast 1
Campaign_copp 2
Campaign_cinn 2
Campaign_brow 2
Campaign_aero 2
Campaign_blon 1
Campaign_ceru 1
Campaign_fawn 2
Campaign_baby 2
Campaign_blac 2
Campaign_cong 2
Campaign_coba 2
Campaign_blus 1
Campaign_camb 1
Campaign_boys 2
Campaign_azur 1
Campaign_burn 2
Campaign_carm 2
Campaign_ambe 2
Campaign_dust 1
Campaign_brig 1
Campaign_cord 1
Campaign_daff 1
Campaign_dese 1
Campaign_blue 1
Campaign_brin 1
Campaign_bist 1
Campaign_cosm 1
Campaign_caro 1

In [4]:
# (Appendix)[operacja do zrobienia na poczatku]
# Dowod na to, ze jeden Banner moze miec wiele formatow oraz 
# stworzenie Horizontal columny ktora mowi kiedy banner jest horyzontalny:

data_list['banner'][['Banner_code','Banner','Format']]
#this
data_list['banner']['Horizontal'] = data_list['banner']['Format'].str.split('x').map(lambda x :  int(x[0]) - int(x[1]) > 0 )
print(data_list['banner'][['Format','Horizontal']])


       Format Horizontal
0     160x600      False
1     300x250       True
2     300x600      False
3     624x104       True
4      728x90       True
5     970x250       True
6     300x250       True
7     300x600      False
8      728x90       True
9     970x250       True
10    300x250       True
11    300x600      False
12     728x90       True
13    970x250       True
14    300x250       True
15     728x90       True
16    970x250       True
17    300x250       True
18     728x90       True
19    970x250       True
20    300x250       True
21     728x90       True
22    300x250       True
23     728x90       True
24    300x250       True
25    970x250       True
26    300x250       True
27    970x250       True
28    300x250       True
29     728x90       True
..        ...        ...
844   300x250       True
845    728x90       True
846   970x250       True
847   300x250       True
848    728x90       True
849  1000x100       True
850   120x600      False
851   300x250       True
852    468x60       True
853    728x90       True
854   750x100       True
855   120x600      False
856   160x600      False
857   180x150       True
858   200x200      False
859   250x250      False
860   300x250       True
861    320x50       True
862   336x280       True
863    468x60       True
864    480x80       True
865    728x90       True
866   120x600      False
867   160x600      False
868   180x150       True
869   200x200      False
870   250x250      False
871   300x250       True
872    320x50       True
873   336x280       True

[874 rows x 2 columns]

In [ ]:


In [5]:
#Tworzenie dodatkowej tabeli w celu idenyfikacji "unikalnych" ciaglych pojawien sie danego bannera w ramach kampanii
#Wyszczegolniamy unikalne pojawienie sie bannera, tj w kampanii, w ramach pojawienia sie w ciaglej serii dni (na podstwie ktorej ma zliczane kliki i wyswietlnia)

#tutaj tworze zmienna ktora przetrzymuje ten podzial:
data_list['data']['Unique_appearance']= data_list['data']['Campaign_name'] +data_list['data']['start_time'].apply(str)+data_list['data']['end_time'].apply(str)+data_list['data']['Banner_code']
#tu tworze liste z unikalnymi wartosciami
temp_list = np.sort(data_list['data']['Unique_appearance'].unique())
counter = 0
#teraz przechodze caly dataset i pod kazdy unikalny temp podstawiam liczbe (w celu przejrzystosci)
for temp_val in temp_list : #can be written faster
    data_list['data']['Unique_appearance'] = data_list['data']['Unique_appearance'].map(lambda x : counter if x == temp_val else x)
    counter = counter + 1
#print(data_list['data']['Unique_appearance'])
#print(data_list['data'])


for ii in range(len(temp_list)) : 
    temp_data = data_list['data'][data_list['data']['Unique_appearance'] == ii] 
    if temp_data['day_clk'].sum() != temp_data['clk'].iloc[0] : 
        print(ii, 'Issue, verify')
    
# Na podstawie tej petli, mozemy stwierdzic, ze dla 5ciu bannerow mamy sytuacje w ktorej odpalono je dwukrotnie. Z tego powodu ilosc klikow i wyswietlen sie nei zgadza. 

ii = 247
temp_data = data_list['data'][data_list['data']['Unique_appearance'] == ii] 
print(temp_data)

# Dlatego stworzymy jeszcze raz ta kolumne, ale tym razem dodamy do niej rowniez ilosc klikow (clk) w celu unikalnego rozroznienia tych wypadkow


57 Issue, verify
198 Issue, verify
199 Issue, verify
219 Issue, verify
246 Issue, verify
247 Issue, verify
      Campaign_name c_type owner  price start_time   end_time Banner_code  \
1018  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1019  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1020  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1021  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1022  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1023  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1024  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1025  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1026  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1027  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1028  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1029  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1030  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1031  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1032  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1033  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1034  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1035  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1036  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1037  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1038  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1039  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1040  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1041  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1042  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1043  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1044  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   
1045  Campaign_cinn    CPM    MM   7.68 2014-05-13 2014-05-31    36ee60or   

        imps  clk  con1        day  day_con  day_clk  Unique_appearance  
1018  130532  584     1 2014-05-13        1      330                247  
1019  130532  584     1 2014-05-14        0      206                247  
1020  130532  584     1 2014-05-15        0       48                247  
1021  130532  584     1 2014-05-16        0        0                247  
1022  130532  584     1 2014-05-17        0        0                247  
1023  130532  584     1 2014-05-18        0        0                247  
1024  130532  584     1 2014-05-19        0        0                247  
1025  130532  584     1 2014-05-20        0        0                247  
1026  130532  584     1 2014-05-21        0        0                247  
1027  130532  584     1 2014-05-22        0        0                247  
1028  130532  584     1 2014-05-23        0        0                247  
1029  130532  584     1 2014-05-24        0        0                247  
1030  130532  584     1 2014-05-25        0        0                247  
1031  130532  584     1 2014-05-26        0        0                247  
1032  131809  537     0 2014-05-13        0      292                247  
1033  131809  537     0 2014-05-14        0      187                247  
1034  131809  537     0 2014-05-15        0       58                247  
1035  131809  537     0 2014-05-16        0        0                247  
1036  131809  537     0 2014-05-17        0        0                247  
1037  131809  537     0 2014-05-18        0        0                247  
1038  131809  537     0 2014-05-19        0        0                247  
1039  131809  537     0 2014-05-20        0        0                247  
1040  131809  537     0 2014-05-21        0        0                247  
1041  131809  537     0 2014-05-22        0        0                247  
1042  131809  537     0 2014-05-23        0        0                247  
1043  131809  537     0 2014-05-24        0        0                247  
1044  131809  537     0 2014-05-25        0        0                247  
1045  131809  537     0 2014-05-26        0        0                247  

In [14]:
#tutaj tworze zmienna ktora przetrzymuje ten podzial:
data_list['data']['True_Unique_appearance']= data_list['data']['Campaign_name'] +data_list['data']['start_time'].apply(str)+data_list['data']['end_time'].apply(str)+data_list['data']['Banner_code'] + data_list['data']['imps'].apply(str)
#tu tworze liste z unikalnymi wartosciami
true_temp_list = np.sort(data_list['data']['True_Unique_appearance'].unique())
counter = 0

#teraz przechodze caly dataset i pod kazdy unikalny temp podstawiam liczbe (w celu przejrzystosci)
for temp_val in true_temp_list : #can be written faster
    data_list['data']['True_Unique_appearance'] = data_list['data']['True_Unique_appearance'].map(lambda x : counter if x == temp_val else x)
    counter = counter + 1

#Puscmy jeszcze raz weryfikacje:
print(true_temp_list.shape)
for ii in range(len(true_temp_list)) : 
    temp_data = data_list['data'][data_list['data']['True_Unique_appearance'] == ii] 
    if temp_data['day_clk'].sum() != temp_data['clk'].iloc[0] : 
        print(ii, 'Issue, verify')
    # tutaj dowod na to, ze nie ma scisle okreslonych dlugosci wyswietlania danego bannera:
    #print(temp_data.shape[0])
#Tada, zadnych powtorzen


(378,)

In [7]:
data1 = data_list['data'].merge(data_list['banner'][['Banner_code','Product']],left_on = "Banner_code",right_on = 'Banner_code', how = 'left')


groupby_clicks = data1[['day','day_con','day_clk','Product']].groupby(['Product','day']).sum().reset_index()
groupby_banner_count = data1[['Banner_code','day','Product']].groupby(['Product','day']).count().reset_index()

grouby_clk_banner = groupby_clicks.merge(groupby_banner_count, on = ['Product','day'], how='outer')

grouby_clk_banner.rename(columns = {'Banner_code' : 'Banner_count'},inplace = True)

#print(grouby_clk_banner.head())

for prod in ['AAA', 'BBB'] : 
    aa_data = grouby_clk_banner[grouby_clk_banner['Product'] == prod]
    print(aa_data)
    print(aa_data.shape)
    #----------------------------------------------------------------------------------------------
    plt.plot(aa_data['day'], aa_data['day_clk'],'.-',color ='blue')
    plt.xticks(rotation = 'vertical')
    plt.plot(aa_data['day'], aa_data['day_con']*100,'.-',label='day_con x 100',color ='green')
    plt.xticks(rotation = 'vertical')
    plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
    plt.title('Product: '+prod +', number of day clk vs time \n(with day_con multiplied by 100)')
    plt.show()

    #----------------------------------------------------------------------------------------------
    
    
    plt.plot(aa_data['day'], aa_data['day_clk'],'.-',color ='blue')
    plt.xticks(rotation = 'vertical')

    plt.plot(aa_data['day'], aa_data['Banner_count']*100,'.-',label = 'banner_count x 100',color='red')
    plt.xticks(rotation = 'vertical')
    plt.title('Product: '+prod +', number of day clk vs time \n(with banner_count multiplied by 100)')
    plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
    plt.show()
    
    #----------------------------------------------------------------------------------------------
    
    plt.plot(aa_data['day'], aa_data['day_con'],'.-',color ='green')
    plt.xticks(rotation = 'vertical')

    plt.plot(aa_data['day'], aa_data['Banner_count'],'.-',color='red')
    plt.xticks(rotation = 'vertical')
    plt.title(prod)
    plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
    plt.title('Product: '+prod +', number of day clk AND banner_count vs time')
    plt.show()


   Product        day  day_con  day_clk  Banner_count
0      AAA 2014-03-12        0       38             1
1      AAA 2014-03-13        1      162             2
2      AAA 2014-03-14        0      100             2
3      AAA 2014-03-15        0       50             1
4      AAA 2014-03-16        1       49             1
5      AAA 2014-03-17        1       45             2
6      AAA 2014-03-18        0       52             1
7      AAA 2014-03-19        0       93             2
8      AAA 2014-03-20        0       64             2
9      AAA 2014-03-24        1      142             2
10     AAA 2014-03-25        2      383             3
11     AAA 2014-03-26        2      615             2
12     AAA 2014-03-27        7      602             3
13     AAA 2014-03-28        3      364             2
14     AAA 2014-03-29        2      279             2
15     AAA 2014-03-30        1      328             2
16     AAA 2014-03-31        6      381             3
17     AAA 2014-04-01        5      491             5
18     AAA 2014-04-02        3      319             6
19     AAA 2014-04-03        1      264             3
20     AAA 2014-04-04        1      252             4
21     AAA 2014-04-05        0       91             1
22     AAA 2014-04-06        1       83             1
23     AAA 2014-04-07        1      100             2
24     AAA 2014-04-08        4      276             3
25     AAA 2014-04-09        1      264             4
26     AAA 2014-04-10        2      264             4
27     AAA 2014-04-11        3      385             7
28     AAA 2014-04-12        3      344             5
29     AAA 2014-04-13        4      385             5
..     ...        ...      ...      ...           ...
43     AAA 2014-04-27        7      787             4
44     AAA 2014-04-28        9     1381            10
45     AAA 2014-04-29       12     1675            11
46     AAA 2014-04-30       16     1533             9
47     AAA 2014-05-01       13      793             7
48     AAA 2014-05-02        4      818             7
49     AAA 2014-05-03        5      820             7
50     AAA 2014-05-04       10      928             7
51     AAA 2014-05-05        7      781             9
52     AAA 2014-05-06        8      616             8
53     AAA 2014-05-07       24     1430            10
54     AAA 2014-05-08       34     1979             8
55     AAA 2014-05-09       21     1391             8
56     AAA 2014-05-10        6      502             5
57     AAA 2014-05-11        6      551             5
58     AAA 2014-05-12        9     1306             9
59     AAA 2014-05-13       15     3094            15
60     AAA 2014-05-14       17     2801            17
61     AAA 2014-05-15       32     2569            20
62     AAA 2014-05-16       18     1806            15
63     AAA 2014-05-17        6      589            15
64     AAA 2014-05-18        5      523            15
65     AAA 2014-05-19        5      607            17
66     AAA 2014-05-20       20      782            16
67     AAA 2014-05-21       12      860            15
68     AAA 2014-05-22       11     1523            16
69     AAA 2014-05-23        3      442            15
70     AAA 2014-05-24        0        0            14
71     AAA 2014-05-25        0        0            14
72     AAA 2014-05-26        0        0            14

[73 rows x 5 columns]
(73, 5)
    Product        day  day_con  day_clk  Banner_count
73      BBB 2014-01-20       14      922             2
74      BBB 2014-01-21        6      761             2
75      BBB 2014-01-22       11      501             3
76      BBB 2014-01-23        5      446             2
77      BBB 2014-01-24       12      494             2
78      BBB 2014-01-25        5      272             2
79      BBB 2014-01-26        6      334             2
80      BBB 2014-01-27        6      378             3
81      BBB 2014-01-28        2      385             3
82      BBB 2014-01-29        7      444             3
83      BBB 2014-01-30        6      485             3
84      BBB 2014-01-31        9      315             3
85      BBB 2014-02-01        1      158             3
86      BBB 2014-02-02        2      110             3
87      BBB 2014-02-03        0      132             3
88      BBB 2014-02-04        0       94             1
89      BBB 2014-02-05        1       76             1
90      BBB 2014-02-06        1      121             1
91      BBB 2014-02-07        3      340             2
92      BBB 2014-02-08        6      500             1
93      BBB 2014-02-09        8      411             1
94      BBB 2014-02-10       13      948             4
95      BBB 2014-02-11        8      777             4
96      BBB 2014-02-12        1      255             4
97      BBB 2014-02-13        0       59             4
98      BBB 2014-02-14        2      156             4
99      BBB 2014-02-15        2      160             4
100     BBB 2014-02-16        1      114             3
101     BBB 2014-02-17        0        0             3
102     BBB 2014-02-18        3      101             5
..      ...        ...      ...      ...           ...
170     BBB 2014-04-27       34     4340            33
171     BBB 2014-04-28       29     4482            40
172     BBB 2014-04-29       33     5274            35
173     BBB 2014-04-30       40     5536            30
174     BBB 2014-05-01        5      796            13
175     BBB 2014-05-02        4      903            13
176     BBB 2014-05-03        6      802            13
177     BBB 2014-05-04        4      892            13
178     BBB 2014-05-05        5     1073            15
179     BBB 2014-05-06        6     1049            13
180     BBB 2014-05-07        7      951            11
181     BBB 2014-05-08        7      835             4
182     BBB 2014-05-09        8      684             4
183     BBB 2014-05-10        0      232             3
184     BBB 2014-05-11        1      204             3
185     BBB 2014-05-12        4      339             3
186     BBB 2014-05-13        4      417             4
187     BBB 2014-05-14       30     1793            15
188     BBB 2014-05-15       30     3163            17
189     BBB 2014-05-16       20     2077            17
190     BBB 2014-05-17       15     2002            17
191     BBB 2014-05-18       13     2146            17
192     BBB 2014-05-19       31     2110            20
193     BBB 2014-05-20       24     2572            16
194     BBB 2014-05-21       14     2063            16
195     BBB 2014-05-22       18     2422            14
196     BBB 2014-05-23        9      818            13
197     BBB 2014-05-24        0        0            13
198     BBB 2014-05-25        0        0            13
199     BBB 2014-05-26        0        0            13

[127 rows x 5 columns]
(127, 5)

In [13]:
#Stworzenie dodatkowych column posiadajacych ich magiczne cyferki

data_list['data']['CPM_cost'] = data_list['data']['price']*data_list['data']['imps']/ 1000
data_list['data']['CPC_cost'] = data_list['data']['price']*data_list['data']['clk']
data_list['data']['CPL_CPM']  = data_list['data']['CPM_cost'] / data_list['data']['con1']
data_list['data']['CPL_CPC']  = data_list['data']['CPC_cost'] / data_list['data']['con1']
data_list['data']['CTR']  = data_list['data']['imps'] / data_list['data']['clk']
data_list['data']['CR']  = data_list['data']['clk'] / data_list['data']['con1']
data_list['data']['no days'] = (data_list['data']['end_time'] - data_list['data']['start_time']).apply(lambda x : str(x).split()[0])


# stworzenie dodatkowej df, ktora bedzie rozszczerzeniem banner 
filter_col = ['Campaign_name','owner','Banner_code','True_Unique_appearance','imps','clk','con1','CPM_cost','CPC_cost','CPL_CPM','CPL_CPC','CTR','CR','no days']
#print(data_list['data'][filter_col])

data_list['data1'] = data_list['data'][filter_col].merge(data_list['banner'],on=['Banner_code'], how='left')
data_list['data1'].drop_duplicates(inplace=True)
data_list['data1'].reset_index(inplace=True, drop = True)
print(data_list['data1'])


     Campaign_name owner Banner_code  True_Unique_appearance     imps   clk  \
0    Campaign_desi    AR    00ha91ro                     325   226725    83   
1    Campaign_anti    MM    00ha91ro                      64   107076   132   
2    Campaign_dark    MM    00ma31fr                     290    88141   254   
3    Campaign_flax    MM    01uc16or                     374   109471   269   
4    Campaign_amet    MM    01uc16or                      35    81964   465   
5    Campaign_carr    MM    01uc16or                     219    87393   351   
6    Campaign_cana    MM    02ar45lu                     206    19239   168   
7    Campaign_byza    MM    02ar45lu                     185   220658  1506   
8    Campaign_ash     MM    02ar45lu                      90   423114  1539   
9    Campaign_dark    MM    02ar45lu                     297   117468   582   
10   Campaign_amet    MM    02g 07hr                      36    81663   341   
11   Campaign_carr    MM    02g 07hr                     220    87072   297   
12   Campaign_cal     MM    02ri88ri                     198    45498   461   
13   Campaign_aoio    MM    04ar71he                      77   123168   553   
14   Campaign_anti    MM    04ri15ma                      70    61417    38   
15   Campaign_deep    MM    05ri62al                     319   270418  1102   
16   Campaign_crim    MM    05ri62al                     278    37090   224   
17   Campaign_corn    MM    06he83ro                     274    23489   268   
18   Campaign_dark    AR    06la03ad                     283   341628  2321   
19   Campaign_desi    AR    06la03ad                     331    11017   279   
20   Campaign_anti    MM    06la03ad                      65   106094   191   
21   Campaign_bitt    MM    06la03ad                     113   771036  1185   
22   Campaign_deep    MM    06la03ad                     317    42392   263   
23   Campaign_apri    MM    07ar01ma                      83     8504    17   
24   Campaign_char    MM    07ar01ma                     230    36401    37   
25   Campaign_deep    MM    07ar01ma                     302   233572   243   
26   Campaign_bitt    MM    07ar01ma                     109   280628   543   
27   Campaign_dark    MM    08oi44lu                     286   266137   686   
28   Campaign_ecru    AR    08ur34er                     349   169178   337   
29   Campaign_byza    MM    09op77uk                     188   112014   763   
..             ...   ...         ...                     ...      ...   ...   
348  Campaign_blac    MM    93ro95ar                     123    52465    16   
349  Campaign_bist    MM    94ar08as                     108   245622   831   
350  Campaign_cal     MM    94or05ee                     197   260940  2847   
351  Campaign_desi    AR    95ar85ar                     336   502486  1456   
352  Campaign_dand    MM    95ar85ar                     282    32949   183   
353  Campaign_boys    AR    95ar85ar                     138    64914    97   
354  Campaign_boys    AR    95ar85ar                     140   454724   606   
355  Campaign_carr    MM    95ar85ar                     213    60620   151   
356  Campaign_blus    MM    95la75ar                     135   137134   328   
357  Campaign_acid    MM    95la75ar                      15    35386    78   
358  Campaign_cana    MM    95la75ar                     205   151968   872   
359  Campaign_cinn    MM    96ar53ee                     248   126990   798   
360  Campaign_amet    MM    96ar53ee                      55   424797  1843   
361  Campaign_bist    MM    96ar53ee                     106   396387  1499   
362  Campaign_byza    MM    96lu67la                     190   343532  2115   
363  Campaign_aoio    MM    96lu67la                      76   239831   845   
364  Campaign_ash     MM    96lu67la                      93    23517    93   
365  Campaign_coba    MM    96lu67la                     258    57870   164   
366  Campaign_amet    MM    96lu67la                      50   115968   216   
367  Campaign_brow    MM    96lu67la                     166    19331    72   
368  Campaign_anti    MM    96lu67la                      67    91981   195   
369  Campaign_desi    AR    97an25ci                     335   248426   654   
370  Campaign_deep    MM    97ar39lu                     307    74748   200   
371  Campaign_deep    MM    97ha85ar                     306    91776   320   
372  Campaign_burn    MM    97hr92op                     184    17258    71   
373  Campaign_deep    MM    97hr92op                     322    46119   227   
374  Campaign_desi    AR    98le96ar                     328   324565   283   
375  Campaign_bitt    MM    98le96ar                     116  1061402  1803   
376  Campaign_baby    MM    98zu03ar                     104   293835  3003   
377  Campaign_dark    MM    99ri75in                     287    33404    62   

     con1    CPM_cost  CPC_cost      CPL_CPM      CPL_CPC          CTR  \
0       2  1553.06625    568.55   776.533125   284.275000  2731.626506   
1       1  1647.89964   2031.48  1647.899640  2031.480000   811.181818   
2       5   348.15695   1003.30    69.631390   200.660000   347.011811   
3       1   749.87635   1842.65   749.876350  1842.650000   406.955390   
4       0   561.45340   3185.25          inf          inf   176.266667   
5       1  1016.38059   4082.13  1016.380590  4082.130000   248.982906   
6       3   223.74957   1953.84    74.583190   651.280000   114.517857   
7      12  2566.25254  17514.78   213.854378  1459.565000   146.519256   
8      10  2898.33090  10542.15   289.833090  1054.215000   274.927875   
9       4  1366.15284   6768.66   341.538210  1692.165000   201.835052   
10      0   559.39155   2335.85          inf          inf   239.480938   
11      3  1012.64736   3454.11   337.549120  1151.370000   293.171717   
12      1   311.66130   3157.85   311.661300  3157.850000    98.694143   
13      4  2299.54656  10324.51   574.886640  2581.127500   222.726944   
14      0   714.27971    441.94          inf          inf  1616.236842   
15     12  1852.36330   7548.70   154.363608   629.058333   245.388385   
16      1   254.06650   1534.40   254.066500  1534.400000   165.580357   
17      1   276.70042   3157.04   276.700420  3157.040000    87.645522   
18     33  3962.88480  26923.60   120.087418   815.866667   147.190004   
19      2    75.46645   1911.15    37.733225   955.575000    39.487455   
20      1  1632.78666   2939.49  1632.786660  2939.490000   555.465969   
21     10  5728.79748   8804.55   572.879748   880.455000   650.663291   
22      1   290.38520   1801.55   290.385200  1801.550000   161.186312   
23      2    17.68832     35.36     8.844160    17.680000   500.235294   
24      5    75.71408     76.96    15.142816    15.392000   983.810811   
25      1  1599.96820   1664.55  1599.968200  1664.550000   961.201646   
26      2  2085.06604   4034.49  1042.533020  2017.245000   516.810313   
27      5  1051.24115   2709.70   210.248230   541.940000   387.954810   
28      4  1158.86930   2308.45   289.717325   577.112500   502.011869   
29      7  1302.72282   8873.69   186.103260  1267.670000   146.807339   
..    ...         ...       ...          ...          ...          ...   
348     0   207.23675     63.20          inf          inf  3279.062500   
349    15  2856.58386   9664.53   190.438924   644.302000   295.574007   
350    21  1787.43900  19501.95    85.116143   928.664286    91.654373   
351    17  3442.02910   9973.60   202.472300   586.682353   345.114011   
352     1   285.66783   1586.61   285.667830  1586.610000   180.049180   
353     1   229.79556    343.38   229.795560   343.380000   669.216495   
354     5  1609.72296   2145.24   321.944592   429.048000   750.369637   
355     1   705.01060   1756.13   705.010600  1756.130000   401.456954   
356     5   666.47124   1594.08   133.294248   318.816000   418.091463   
357     0    95.54220    210.60          inf          inf   453.666667   
358    12  1767.38784  10141.36   147.282320   845.113333   174.275229   
359    10  1476.89370   9280.74   147.689370   928.074000   159.135338   
360    38  3321.91254  14412.26    87.418751   379.270000   230.492132   
361    39  4609.98081  17433.37   118.204636   447.009487   264.434290   
362    24  3995.27716  24597.45   166.469882  1024.893750   162.426478   
363     8  4477.64477  15776.15   559.705596  1972.018750   283.823669   
364     1   161.09145    637.05   161.091450   637.050000   252.870968   
365     1   452.54340   1282.48   452.543400  1282.480000   352.865854   
366     2   906.86976   1689.12   453.434880   844.560000   536.888889   
367     2   132.41735    493.20    66.208675   246.600000   268.486111   
368     2  1069.73903   2267.85   534.869515  1133.925000   471.697436   
369     6  1701.71810   4479.90   283.619683   746.650000   379.856269   
370     2   928.37016   2484.00   464.185080  1242.000000   373.740000   
371     1  1139.85792   3974.40  1139.857920  3974.400000   286.800000   
372     1    89.91418    369.91    89.914180   369.910000   243.070423   
373     6   315.91515   1554.95    52.652525   259.158333   203.167401   
374     3  2223.27025   1938.55   741.090083   646.183333  1146.872792   
375    18  7886.21686  13396.29   438.123159   744.238333   588.686633   
376    37  5221.44795  53363.31   141.120215  1442.251622    97.847153   
377     0   131.94580    244.90          inf          inf   538.774194   

             CR no days          Banner Product   Format Horizontal  
0     41.500000       4  BBB-Eucalyptus     BBB  300x250       True  
1    132.000000       3  BBB-Eucalyptus     BBB  300x250       True  
2     50.800000       3       BBB-Azure     BBB  300x250       True  
3    269.000000       5   BBB-Raspberry     BBB  336x280       True  
4           inf       5   BBB-Raspberry     BBB  336x280       True  
5    351.000000       4   BBB-Raspberry     BBB  336x280       True  
6     56.000000       1       BBB-Azure     BBB  250x250      False  
7    125.500000       8       BBB-Azure     BBB  250x250      False  
8    153.900000       5       BBB-Azure     BBB  250x250      False  
9    145.500000       7       BBB-Azure     BBB  250x250      False  
10          inf       5   BBB-Raspberry     BBB   320x50       True  
11    99.000000       4   BBB-Raspberry     BBB   320x50       True  
12   461.000000       3   BBB-Tangerine     BBB   468x60       True  
13   138.250000       4       BBB-Topaz     BBB  300x600      False  
14          inf       2   AAA-Pistachio     AAA  200x200      False  
15    91.833333       9   BBB-Tangerine     BBB  120x600      False  
16   224.000000       2   BBB-Tangerine     BBB  120x600      False  
17   268.000000       2       BBB-Azure     BBB  970x250       True  
18    70.333333       9     BBB-Gamboge     BBB  970x250       True  
19   139.500000      12     BBB-Gamboge     BBB  970x250       True  
20   191.000000       3     BBB-Gamboge     BBB  970x250       True  
21   118.500000      16     BBB-Gamboge     BBB  970x250       True  
22   263.000000       6     BBB-Gamboge     BBB  970x250       True  
23     8.500000       2        BBB Navy     BBB  300x250       True  
24     7.400000       7        BBB Navy     BBB  300x250       True  
25   243.000000      13        BBB Navy     BBB  300x250       True  
26   271.500000       3        BBB Navy     BBB  300x250       True  
27   137.200000       8        AAA-blue     AAA   728x90       True  
28    84.250000       5        BBB-Ruby     BBB   468x60       True  
29   109.000000       5      BBB-silver     BBB  960x150       True  
..          ...     ...             ...     ...      ...        ...  
348         inf       1        AAA-Plum     AAA  300x600      False  
349   55.400000       4      AAA-orange     AAA   728x90       True  
350  135.571429      18      BBB-silver     BBB   728x90       True  
351   85.647059      13        BBB-Ruby     BBB  300x250       True  
352  183.000000       4        BBB-Ruby     BBB  300x250       True  
353   97.000000       1        BBB-Ruby     BBB  300x250       True  
354  121.200000       3        BBB-Ruby     BBB  300x250       True  
355  151.000000       3        BBB-Ruby     BBB  300x250       True  
356   65.600000       5      BBB-silver     BBB  250x250      False  
357         inf       2      BBB-silver     BBB  250x250      False  
358   72.666667       8      BBB-silver     BBB  250x250      False  
359   79.800000       6       AAA-green     AAA  300x250       True  
360   48.500000      24       AAA-green     AAA  300x250       True  
361   38.435897       9       AAA-green     AAA  300x250       True  
362   88.125000      10       BBB-Azure     BBB  970x310       True  
363  105.625000       7       BBB-Azure     BBB  970x310       True  
364   93.000000       2       BBB-Azure     BBB  970x310       True  
365  164.000000       3       BBB-Azure     BBB  970x310       True  
366  108.000000       7       BBB-Azure     BBB  970x310       True  
367   36.000000       2       BBB-Azure     BBB  970x310       True  
368   97.500000       4       BBB-Azure     BBB  970x310       True  
369  109.000000       8       BBB-brown     BBB   728x90       True  
370  100.000000       1     BBB-Gamboge     BBB  300x250       True  
371  320.000000       2       BBB-Topaz     BBB  970x250       True  
372   71.000000       1   AAA-Raspberry     AAA   728x90       True  
373   37.833333      12   AAA-Raspberry     AAA   728x90       True  
374   94.333333       4       BBB-Azure     BBB  970x250       True  
375  100.166667      15       BBB-Azure     BBB  970x250       True  
376   81.162162      17        AAA-Plum     AAA  120x600      False  
377         inf       2   BBB-Tangerine     BBB  300x250       True  

[378 rows x 18 columns]