2016-07-13 6 views
0

私はある列に日付のリストと別の列に値のリストを持っています。Python Excelの2つの列のリスト

2/8/13 474 
2/7/13 463.25 
2/6/13 456.47 
2/5/13 444.05 
2/4/13 453.91 
2/1/13 459.11 
1/31/13 456.98 
1/30/13 457 
1/29/13 458.5 
1/28/13 437.83 
1/25/13 451.69 
1/24/13 460 
1/23/13 508.81 
1/22/13 504.56 
1/18/13 498.52 
1/17/13 510.31 

最初の列の日付をコンパイルし、その月の平均値を出力する方法を見つける必要があります。

出力は 月:year average_value_for_monthのようになります。

例えば、最初の二つの出力が^

02:2013 458.46 

01:2013 500.08 

のようになります。これは、2013年2月、1月のヶ月間、平均値は、今の私のコード458.46,500.08

あったと述べています、

def averageData(list_of_tuples): 
    #print(list_of_tuples) #prints out the list obtained from getDataList 
    sep_list = [] 
    for i in range(0,len(list_of_tuples)): 
     split_list = list_of_tuples[i].split() 
     sep_list.append(split_list) 
     #print(sep_list[i]) #prints out list with index [i][0] being the date and index [i][1] being the column value 
    new_list = [] 
    for i in range(0,len(sep_list)): 
     sep_list[i][0] = sep_list[i][0].split('-') #splits dates in year, month, day 
     #print(sep_list[i][0]) 
     print(sep_list[i][0]) 
    for i in range(0,len(sep_list)): 
     if sep_list[i][0][0] == sep_list[i+1][0][0] and sep_list[i][0][1] == sep_list[i+1][0][1]: 
      new_date = sep_list[i][0][1]+':'+sep_list[i][0][0] 
     new_list.append(new_date) 
     #print(new_list[i]) 

元のリストは

['2013-02-08 474.00'] 
のようにフォーマットされています

ループのための私の最初は

['2013-02-08', '474.00'] 

なっリストは、ループための第二は、私がここからどこへ行くにこだわっている

[['2013', '02', '08'], '474.00'] 

にリストに変わります。助けてください。

+0

ピボットテーブルを使ってみてください! http://stackoverflow.com/questions/15570099/pandas-pivot-tables-row-subtotals –

答えて

0

.splitや[:]区切り記号などのリストメソッドを組み合わせることで、より少ないループとリストを取得し、よりよく概要を把握できます。 「タプル」と呼ばれる特定のタプルのための例:

datelist=tuple.split(" ")[0].split("/") 
    month=datelist[0] 
    year=datelist[2] 
    value=tuple.split(" ")[1] 

あなたはこのように整理変数を保持する場合、私は=自分で残りの部分を把握することができると思う)

0

は、ここに私のソリューションです。これが役に立ったら:

from datetime import datetime 

def averageData(list_of_tuples): 
    dic = {}  
    for i in list_of_tuples: 
     i = list(map(str,i.strip().split(' '))) 
     dt = datetime.strptime(i[0] , '%Y-%m-%d') 
     if (dt.month,dt.year) in dic: 
      dic[(dt.month,dt.year)].append(float(i[1])) 
     else: 
      dic[(dt.month,dt.year)] = [float(i[1])] 

    for i in dic.items(): 
     #print(i) 
     print (str(i[0][0])+':'+str(i[0][1])+' '+str(round(sum(i[1])/len(i[1]),2))) 

tuples = ['2013-02-08 474','2013-02-07 463.25','2013-02-06 456.47', 
'2013-02-05 444.05', 
'2013-02-04 453.91', 
'2013-02-01 459.11', 
'2013-01-31 456.98', 
'2013-01-30 457', 
'2013-01-29 458.5', 
'2013-01-28 437.83', 
'2013-01-25 451.69', 
'2013-01-24 460', 
'2013-01-23 508.81', 
'2013-01-22 504.56', 
'2013-01-18 498.52', 
'2013-01-17 510.31'] 

averageData(tuples) 
関連する問題