2017-10-28 4 views
-1

Ich habe zwei Spalten von Daten (sample data) und ich möchte die Gesamtbenutzer für jede Woche Tag berechnen.Mein Code produziert keine Ausgabe - Python

Zum Beispiel würde ich meine Ausgabe wie diese will (dict/alles auflistet tun):

Montag: 25, Dienstag: 30, Mittwoch: 45, Donnerstag: 50, Freitag: 24, Samstag: 22, Sonntag: 21

Hier ist mein Versuch:

def rider_ship (filename): 
    with open('./data/Washington-2016-Summary.csv','r') as f_in: 

     Sdict = [] 
     Cdict = [] 
     reader = csv.DictReader(f_in) 
     for row in reader: 
      if row['user_type']=="Subscriber": 
       if row['day_of_week'] in Sdict: 
        Sdict[row['day_of_week']]+=1 
       else: 
        Sdict [row['day_of_week']] = row['day_of_week'] 
      else: 
       if row ['day_of_week'] in Cdict: 
        Cdict[row['day_of_week']] +=1 
       else: 
        Cdict[row['day_of_week']] = row['day_of_week'] 

     return Sdict, Cdict 

     print (Sdict) 
     print (Cdict) 

t= rider_ship ('./data/Washington-2016-Summary.csv') 
print (t) 

Typeerror :: Liste Indizes müssen ganze Zahlen sein oder scheiben, nicht str

+0

Willkommen bei Stackoverflow, Bitte lesen Sie [Wie Sie fragen] (https://stackoverflow.com/help/how-to-ask). Achten Sie besonders auf [So erstellen Sie MCVE] (https://stackoverflow.com/help/mcve). Je mehr Mühe Sie in die Veröffentlichung einer guten Frage stecken: eine, die leicht zu lesen und zu verstehen ist und die [zum Thema] (https://stackoverflow.com/help/on-topic) ist - die Chancen stehen höher Sie werden die relevanten Leute anziehen und Sie werden schneller Hilfe bekommen. Viel Glück! – alfasin

+0

Sdict = {} Cdict = {} um mit –

+0

zu beginnen Okay. Fertig, ich bekomme immer noch den gleichen Fehler. –

Antwort

0

Wie wäre es mit Pandas?

Lassen Sie uns zunächst eine Datei artiges Objekt mit io-Bibliothek erstellen:

import io 
s = u"""day_of_week,user_type 
Monday,subscriber 
Tuesday,customer 
Tuesday,subscriber 
Tuesday,subscriber""" 
file = io.StringIO(s) 

Nun zum eigentlichen Code:

import pandas as pd 
df = pd.read_csv(file) # "path/to/file.csv" 

Sdict = df[df["user_type"] == "subscriber"]["day_of_week"].value_counts().to_dict() 
Cdict = df[df["user_type"] == "customer"]["day_of_week"].value_counts().to_dict() 

Jetzt haben wir:

Sdict = {'Tuesday': 2, 'Monday': 1}

Cdict = {'Tuesday': 1}

+0

Sieht gut aus. Danke Anton. –

+0

@ shreyaagarwal Großartig! Überlegen Sie, die beantwortete Frage zu markieren. –

Verwandte Themen