数据CSV仪表板python [英] Data CSV Dashboard python

查看:38
本文介绍了数据CSV仪表板python的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在此论坛的帮助下,我可以创建我的Optimizer仪表板.现在,我需要进行一些更改.这是代码:

With help from this foro I can create my Optimizator dashboard. Now, I need to make some changes. This is the code:

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]和items [6] : [['"Fecha"','"Cliente"','"Subastas"','"Impresiones_exchange"','"Fill_rate"','"Importe_a_pagar_a_medio"','"ECPM_medio"']

I need to change the returns items[2],items[3],items[4],items[5] and items[6] for the real names : [['"Fecha"', '"Cliente"', '"Subastas"', '"Impresiones_exchange"', '"Fill_rate"', '"Importe_a_pagar_a_medio"', '"ECPM_medio"']

此外,我需要按Cliente名称以csv文件顺序保存退货.有可能吗?

Also, I need to save the returns in a csv file order by Cliente name. Is it possible??

推荐答案

真实姓名在您的列表[0] 中.因此,更改此行

The real names are in your_list[0]. So change this line

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

对此:

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

要将输出保存为 csv ,而不是(或同时)打印数据,您需要保存它以便将其传递给 csv.writer .创建一个名为 result 的列表,对于要在输出中看到的每一行,执行

To save the output as a csv, instead of (or as well as) printing your data out, you need to save it so that you can pass it to csv.writer. Create a list called result, and for every row that you want to see in the output, do

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

构建完结果后,请按名称对其进行排序:

After you have finished building result, sort it on name:

result.sort()

使用 csv.writer()从此列表中生成您的 csv 文件,一次调用writer对象的 writerow()方法 result 中的每一行.

Use csv.writer() to produce your csv file from this list, one call to the writer object's writerow() method for every row in result.

这篇关于数据CSV仪表板python的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆