2017-10-28 122 views
-1

我有兩列數據 (sample data),我想計算每週的一天的總用戶數。我的代碼不會產生任何輸出 - Python

舉例來說,我想這樣我的輸出(字典/列出什麼都行):

星期一:25,週二 :30,週三 :45,週四 :50,週五 : 24,週六 :22,週日 :21

這裏是我的嘗試:

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) 

類型錯誤::列表索引必須爲整數或切片,而不是str

+0

歡迎#1,請閱讀[如何提問](https://stackoverflow.com/help/how-to-ask)。請特別注意[如何創建MCVE](https://stackoverflow.com/help/mcve)。您將付出更多努力發佈一個好問題:一個容易閱讀,理解和[主題](https://stackoverflow.com/help/on-topic) - 的機會更高會吸引相關人員,你會得到更快的幫助。祝你好運! – alfasin

+0

Sdict = {} Cdict = {}以 –

+0

開頭好吧。完成後,我仍然遇到同樣的錯誤。 –

回答

0

如何使用熊貓?

讓我們先創建一個IO庫中的文件對象:

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

我們的實際代碼:

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() 

現在我們有:

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

Cdict = {'Tuesday': 1}

+0

看起來不錯。謝謝安東。 –

+0

@shreyaagarwal太棒了!考慮標記回答的問題。 –