I have created a dictionary that uses date as the key and added multiple values to each date. The dictionary is populated by reading an original csv so that I can create totals per date.
My Code:
import csv
##Opens the csv file to be read
tradedata=open("test.csv","r")
##Reads the csv file
tradedatareader = csv.reader(tradedata,delimiter=',',quotechar='"')
##create dictionary
my_dict = {}
for row in tradedatareader:
Date = row[1][0:8]
volume = int(row[4])
price = float(row[5])
Transtype=row[6]
##Find SEC_Fee
if Transtype !="BUY":
ttype =1
else:
ttype=0
secfee=(ttype*volume*price*.0000221)
##Finds Notional Value
notional_val = (volume*price)
##Finds Clearing Fees
cl_fee = (volume*.0005)
if cl_fee < .05:
clearing_fee = 0.05
else:
clearing_fee = (volume*.0005)
##Finds Totals per Date
my_dict[Date] = my_dict.setdefault(Date, [0,0,0,0,0])
my_dict[Date][0] = my_dict[Date][0] + volume
my_dict[Date][1] = my_dict[Date][1] + notional_val
my_dict[Date][2] = my_dict[Date][2] + secfee
my_dict[Date][3] = my_dict[Date][3] + clearing_fee
my_dict[Date][4] = my_dict[Date][4] + secfee + clearing_fee
## Writes totals to CSV
with open('mycsvfile.csv','w') as f:
w = csv.writer(f, delimiter = ',')
w.writerows(my_dict.items())
This currently writes the key in column A and the values in column B and skips a line between each row.
I would like each value to be written in its own column and would like each column to have a header like this:
DATE Volume Notional Value SEC FEES Clearing Fees Total Fees
20140612 2751 157750.56 3.4132565999 1.4500000 4.8632566
20140612 5148 270200.02 5.831338266 2.692499999 8.523838265999998
Dateshould becomedate. That will make your code readable w.r.t. Pythonic conventions.