teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

質問内容の抜けの修正

2017/10/16 11:58

投稿

hamar1
hamar1

スコア26

title CHANGED
File without changes
body CHANGED
@@ -1,14 +1,18 @@
1
+ pythonでのpandasを用いたデータ処理において詰まっておりますので、ぜひ助けていただけると幸いです。
2
+ なにとぞよろしくお願いします。
3
+
1
4
  ###前提・実現したいこと
2
- Python3
5
+ ある時間にid=0がどこにあるか(Area)を分類・収集するプログラムが、start endの形式データを出力するので、データ処理の行いやすい時系列のデータに変換したい。
6
+
3
- 下記のようなStart End形式のデータ(raw_data)を
7
+ 元とStart End形式のデータ(raw_data)を
4
8
  ```
5
- id | start_time | end_time | type
9
+ id | start_time | end_time | Area
6
10
  0 | 2017-09-29 00:00:00 | 2017-09-29 00:00:02 | A
7
11
  0 | 2017-09-29 00:00:02 | 2017-09-29 00:00:04 | B
8
12
  ```
9
- 離散型に変換したい(02秒でダブりあり)
13
+ 時系列に変換したい(02秒でダブりあり)
10
14
  ```
11
- time | id | type.A | type.B
15
+ time | id | Area.A | Area.B
12
16
  2017-09-29 00:00:00 | 0 | 1 | 0
13
17
  2017-09-29 00:00:01 | 0 | 1 | 0
14
18
  2017-09-29 00:00:02 | 0 | 1 | 1
@@ -17,7 +21,7 @@
17
21
  ```
18
22
 
19
23
  ###発生している問題・エラーメッセージ
20
-
24
+ 下記メッセージが出て、処理が終了せず。
21
25
  ```
22
26
  A value is trying to be set on a copy of a slice from a DataFrame
23
27
 
@@ -26,18 +30,31 @@
26
30
 
27
31
  ###該当のソースコード
28
32
  ```ここに言語を入力
33
+ # --- 入力データの編集 ------
34
+ raw_data = pd.csv_read("必要なデータ.csv")
35
+ # ダミー変数作成
29
- raw_dummy = pd.get_dummies(copy_raw_data[['type']])
36
+ raw_dummy = pd.get_dummies(copy_raw_data[['Area']])
37
+ # 結合
38
+ con_data = pd.concat([copy_raw_data,raw_dummy],axis=1)
39
+ con_data.reset_index(inplace=True) # increment変数のため
30
40
 
41
+ # --- DatetimeIndexを用意して、新しいDataFrameを作成
31
42
  dti = pd.date_range(start=min(raw_data['start_time']), end=max(raw_data['end_time']), freq='S')
32
43
  df_freq = DataFrame(index=dti, columns=raw_dummy.columns)
33
- df_freq['ユーザー名'] = NA
44
+ df_freq['id'] = NA
34
- # df_freq.reset_index(inplace=True)
35
45
  df_freq.rename(columns={'index': 'time'}, inplace=True)
46
+
47
+ # --- 以下、問題を抱えている部分-------
48
+ for i in con_data['index']:
49
+ t_range = pd.date_range(start=con_data['start_time'][i], end=con_data['end_time'][i],freq='S')
50
+ for t in t_range:
51
+ for c in raw_dummy.columns:
52
+ df_freq[c][t] += con_data[c][i]
36
- df_freq.head(1)
53
+ df_freq.head()
37
54
  ```
38
55
 
39
56
  ###試したこと
40
- 課題に対てアプローチしたことを記載してださ
57
+ DataFrameのapplyを使う、for文を成型するなどしたが、うまくいっていません。
41
58
 
42
59
  ###補足情報(言語/FW/ツール等のバージョンなど)
43
- より詳細な情報
60
+ python3