2017-02-19 5 views
2

11月1日から11月15日まで毎分収集されるデータを含むデータセットがあります。時刻は11/1/2016 00:00:00で始まり、11/15/2016 23:59:59 I am trying to reshape this dataset, so that each minute is a column, and each day is a row. So [行1、列1]で終了する列ですwould have the data at 12:00 on 11/1, and [行2、列1] `は11/2の12時にデータを持ちます。現在、私のデータセット毎日のデータの再整理に問題があります

私は再形状関数を使用しようとしていますが、値をチェックすると正しく一致しません。私のコードでは、myDataの第2列は、私が再形成する必要があるデータであり、それは1日の分数なので、1440列あります。そして15行は、私がデータセットに持つ日数です。

私は間違っている可能性がありますか?

myData = pd.read_csv("Nov1-15.csv") 
myData = [myData.iloc[:,2]] 
myData = np.asarray(myData) 
myData = np.reshape(myData, (1440,15)) 
myData = np.transpose(myData) 

私の配列は、リシェイプした後、現在、以下のようになります。

:私はCSVファイルからそれを読み込み、2番目の列を分離した後

array([[ 137., 138., 136., ..., 345., 614., 337.], 
     [ 137., 137., 138., ..., 340., 611., 337.], 
     [ 138., 136., 138., ..., 373., 611., 336.], 
     ..., 
     [ 137., 138., 409., ..., 615., 336., 214.], 
     [ 136., 136., 412., ..., 614., 334., 214.], 
     [ 138., 136., 411., ..., 617., 339., 215.]]) 

は私の元のデータセットは、次のようになります。

[0  137.0 
1  137.0 
2  138.0 
3  137.0 
4  136.0 
5  138.0 
6  137.0 
7  141.0 
8  137.0 
9  139.0 
10  136.0 
11  136.0 
12  137.0 
13  136.0 
14  138.0 
15  138.0 
16  137.0 
17  136.0 
18  138.0 
19  137.0 
20  137.0 
21  138.0 
22  138.0 
23  137.0 
24  135.0 
25  138.0 
26  138.0 
27  138.0 
28  136.0 
29  136.0 
      ... 
21570 614.0 
21571 611.0 
21572 611.0 
21573 611.0 
21574 610.0 
21575 570.0 
21576 346.0 
21577 341.0 
21578 337.0 
21579 337.0 
21580 336.0 
21581 337.0 
21582 336.0 
21583 334.0 
21584 339.0 
21585 337.0 
21586 337.0 
21587 336.0 
21588 238.0 
21589 222.0 
21590 222.0 
21591 220.0 
21592 217.0 
21593 217.0 
21594 214.0 
21595 214.0 
21596 278.0 
21597 214.0 
21598 214.0 
21599 215.0 

サンプルデータ:

11/1/2016 0:00  213 
11/1/2016 0:01  214 
11/1/2016 0:02  213 
11/1/2016 0:03  213 
11/1/2016 0:04  210 
11/1/2016 0:05  210 
11/1/2016 0:06  209 
11/1/2016 0:07  209 
+0

原産地のサンプル(3〜5行)を投稿できますか? CSVファイルですか?あなたは 'timestamp'カラムを持っていますか? – MaxU

+1

サンプルデータをいくつか追加しました。そして、私はサンプルデータに含まれているような形式のタイムスタンプ列を持っています。 – Gary

答えて

2

再形成:

変更しよう:

myData = np.reshape(myData, (1440,15)) 

へ:

myData = np.reshape(myData, (15, 1440)) 

デモ:

3行、4列:

In [333]: np.arange(12).reshape(3,4) 
Out[333]: 
array([[ 0, 1, 2, 3], 
     [ 4, 5, 6, 7], 
     [ 8, 9, 10, 11]]) 

4行、 3列:

In [334]: np.arange(12).reshape(4,3) 
Out[334]: 
array([[ 0, 1, 2], 
     [ 3, 4, 5], 
     [ 6, 7, 8], 
     [ 9, 10, 11]]) 

パンダソリューション:

使用pivot方法は、(データの分を逃す)ラグを持っていない場合:

In [52]: df.assign(d=df.ts.dt.date, m=df.ts.dt.minute) \ 
      .pivot_table(index='d', columns='m', values='val', aggfunc='mean', fill_value=0) 
Out[52]: 
m    0 1 2 3 4 5 6 7 
d 
2016-11-16 213 214 213 213 210 210 209 209 

In [48]: df 
Out[48]: 
        ts val 
0 2016-11-16 00:00:00 213 
1 2016-11-16 00:01:00 214 
2 2016-11-16 00:02:00 213 
3 2016-11-16 00:03:00 213 
4 2016-11-16 00:04:00 210 
5 2016-11-16 00:05:00 210 
6 2016-11-16 00:06:00 209 
7 2016-11-16 00:07:00 209 

In [50]: df.assign(d=df.ts.dt.date, m=df.ts.dt.minute) \ 
      .pivot(index='d', columns='m', values='val') 
Out[50]: 
m    0 1 2 3 4 5 6 7 
d 
2016-11-16 213 214 213 213 210 210 209 209 

そうpivot_table()メソッドを使用します

+0

あなたの提案に私の形を変えて、働いた:) – Gary

関連する問題