2017-06-20 18 views
1

これまでは2つのCSVを読み込み、共通の要素に基づいてそれらをマージしました。私はマージされたCSVの出力を取り出し、マージされたユニークな要素を反復処理します。私はそれらを分けている間、私は毎日のカウントラインと現在の日付から2週間のローリング平均を後方に生成したいと思っています。私は 'Date Opened'フィールドに基づいてインデックスを作成することはできませんが、私はまだこれで整理された出力を最新のものとする必要があります。これらを日付順に並べ替えると、私の日報カウント問題は解決されます。私の残っている仕事は、週内のカウントの2週間の平均を計算することです。私はPandasのドキュメントを調べましたが、rolling_meanは機能すると思いますが、この関数のパラメータは実際に私にとって意味をなさないものです。私はbiwk_avg = pd.rolling_mean(open_dt, 28)を試しましたが、それは動作しないようです。私はこれを行う簡単な方法があることを知っていますが、私は利用可能なドキュメントでロードブロックを打ったと思う。最終的な結果は、graphのようになります。今私の毎日のカウント・グラフはソートされていません(私はそれを指示したと思いますが)。unusableがライン形式です。Python/Pandas:日付でソートして2週間(ローリング?)の平均を計算する

def data_sort(): 
    data_merge = data_extract() 
    domains = data_merge.groupby('PWx Domain') 
    for domain in domains.groups.items(): 
     dsort = (data_merge.loc[domain[1]]) 
     print (dsort.head()) 
     open_dt = pd.to_datetime(dsort['Date Opened']).dt.date 
     #open_dt.to_csv('output\''+str(domain)+'_out.csv', sep = ',') 
     open_ct = open_dt.value_counts(sort= False) 
     biwk_avg = pd.rolling_mean(open_ct, 28) 
     plt.plot(open_ct,'bo') 
     plt.show() 

data_sort() 
+0

'print(dsort.head())' - それを見てもいいですか? – DyZ

+0

@DYZ http://imgur.com/a/DnxtK – Spectre

答えて

1

転がり軸受だけでは十分ではありません。再サンプリング(データを日単位でグループ化する)とそれに続く14日間のローリング平均(なぜあなたのコードで28を使用しますか?)の組み合わせが必要です。何かのようなもの:

for _,domain in data_merge.groupby('PWx Domain'): 
    # Convert date to the index 
    domain.index = pd.to_datetime(domain['Date Opened']) 
    # Sort dy dates 
    domain.sort_index(inplace=True) 
    # Do the averaging 
    rolling = pd.rolling_mean(domain.resample('1D').mean(), 14) 
    plt.plot(rolling,'bo') 
    plt.show() 
+0

私のforループ内の個別の線の量を減らして返信してくれてありがとう。これは必要に応じて機能しているようです。 – Spectre

関連する問題