2017-12-28 17 views
-1

これで私のOptimizatorダッシュボードを作成できます。今、私はいくつかの変更を加える必要があります。データCSVダッシュボードPython

import csv 
import datetime 

with open("prueba.csv", 'rb') as f: 
    reader = csv.reader(f) 
    your_list = list(reader) 



mydict = {} 
for row in your_list[1:]: 
    date = datetime.datetime.strptime(row[0],'%d/%m/%Y') 
    name = row[1] 
    mydict[(date,name)] = row[2:] 


def convert(n): 
    n = n.replace(",",".").replace("%","") 
    try: 
     return float(n) 
    except ValueError: 
     return 0e0 


for (day, name) in mydict: 
    previous_day = day - datetime.timedelta(days=1) 
    if (previous_day,name) in mydict: 
     print name, datetime.datetime.strftime(day,"%d/%m/%Y") 
     day2_values = mydict[(day, name)] 
     day1_values = mydict[(previous_day, name)] 
     comparer = zip(day2_values, day1_values) 
     for n,value in enumerate(comparer): 
      print "item[%d]:" % (n+2,), 
      if convert(value[1]) < convert(value[0]): 
       print value[1], "smaller than", value[0], "Incremento" 
      else: 
       print value[1], "bigger than", value[0], "Descenso" 
     print 

>>> 
Martin 18/12/2017 
item[2]: 312341 smaller than 349805 Incremento 
item[3]: 45368 smaller than 46818 Incremento 
item[4]: 14.53% bigger than 13.38% Bajada 
item[5]: 39.35 bigger than 32.98 Bajada 
item[6]: 0.87 bigger than 0.70 Bajada 

Jose 11 03/12/2017 
item[2]: 140580 smaller than 161540 Incremento 
item[3]: 4943 bigger than 4663 Bajada 
item[4]: 3.52% bigger than 2.89% Bajada 
item[5]: 2.04 bigger than 1.95 Bajada 
item[6]: 0.41 smaller than 0.42 Incremento 

Jorge cl 17/12/2017 
item[2]: 156736 smaller than 164272 Incremento 
item[3]: 39295 bigger than 36921 Bajada 
item[4]: 25.07% bigger than 22.48% Bajada 
item[5]: 19.74 bigger than 19.61 Bajada 
item[6]: 0.50 smaller than 0.53 Incremento 

私は戻って本当の名のitems[2],items[3],items[4],items[5] and items[6]変更する必要があります:これはコードです。また[['"Fecha"', '"Cliente"', '"Subastas"', '"Impresiones_exchange"', '"Fill_rate"', '"Importe_a_pagar_a_medio"', '"ECPM_medio"']

を、私はCliente名でcsvファイルの順序でリターンを保存する必要があります。出来ますか??

答えて

1

実名はyour_list[0]です。したがって、このラインにこれ​​に

print "item[%d]:" % (n+2,), 

を変更:

print your_list[0][n+2] + ":", 

あなたのデータをプリントアウトcsvとして出力を保存し、代わりに(または同様に)するには、あなたがそのようにそれを保存する必要がありますそれをcsv.writerに渡すことができます。あなたが出力に表示することresultと呼ばれ、行ごとにリストを作成し、あなたはそれを名前で並べ替え、resultを構築し終わったら

row = [name, datetime.datetime.strftime(day,"%d/%m/%Y"), mylist[0][n+2],value[1], value[0]] 
result.append(row) 

の操作を行います。

result.sort() 

使用csv.writer()を生成しますあなたのcsvファイルをこのリストから呼び出し、resultのすべての行に対してライターオブジェクトのwriterow()メソッドを1回呼び出します。

+0

私はあなたの答えを編集して何かを変更しました。どうぞ、私がそこにコピーしたコードを編集して、それを実際に作ることができますか?ありがとう –

+0

私はあなたの編集を見ることができないので、撮影されていない可能性があります。 – BoarGules

+0

あなたはあなたの答えの後に完全なコードを書くことができますか? –