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

質問編集履歴

3

誤字修正

2021/09/03 20:44

投稿

yutakao
yutakao

スコア10

title CHANGED
File without changes
body CHANGED
@@ -128,7 +128,7 @@
128
128
  dummy=list(tickers.tickers.values())[**0**].balance_sheet.T["Total Stockholder Equity"]
129
129
 
130
130
  dummy=list(tickers.tickers.values())[**1**].balance_sheet.T["Total Stockholder Equity"]
131
- とダミー作成用に作成使用するインデックスを変えると。
131
+ とダミー作成用に使用するインデックスを変えると。
132
132
  1332.T 1333.T 1414.T 1605.T ^N225
133
133
 
134
134
  2018-03-31 NaN NaN NaN 2.916679e+12 NaN

2

初期エラー対策後、次の類似コードに同対応した際に理由不明の意図せぬ結果が返ってくる。

2021/09/03 20:44

投稿

yutakao
yutakao

スコア10

title CHANGED
File without changes
body CHANGED
@@ -86,4 +86,68 @@
86
86
  上記はエラー対策をしているのかと推測しているのですが、具体的に何をしているのでしょうか?
87
87
  ちなみにtickers.tickersは辞書型で、キーに0 がない為 KeyError: 0 が返ります。
88
88
 
89
- 分かる方、ご教示いただきたくお願いいたします。
89
+ 分かる方、ご教示いただきたくお願いいたします。
90
+
91
+ 追記
92
+ 上記のエラーはmeg_様からのご教示により対応できましたが…
93
+ 次の同様のコードにて動作不備が発生しました。
94
+
95
+ ```ここに言語を入力
96
+ equity = [] # 自己資本
97
+
98
+ dummy=list(tickers.tickers.values())[0].balance_sheet.T["Total Stockholder Equity"]
99
+ dummy[:] = np.nan
100
+
101
+ for i in tickers.tickers:
102
+ try:
103
+ equity.append(tickers.tickers[i].balance_sheet.T["Total Stockholder Equity"])
104
+ except:
105
+ equity.append(dummy) # エラー発生時はダミーを入れる
106
+
107
+ equity = pd.DataFrame(equity).T # DataFrame化
108
+ equity.columns = stocks # カラム名の設定
109
+
110
+ print(equity)
111
+ ```
112
+ 上記の実行結果(結果1)は
113
+ 1332.T 1333.T 1414.T 1605.T ^N225
114
+
115
+ 2018-03-31 NaN 1.154590e+11 NaN 2.916679e+12 NaN
116
+ 2018-06-30 NaN NaN 7.409500e+10 NaN NaN
117
+ 2019-03-31 NaN 1.253530e+11 NaN 3.006479e+12 NaN
118
+ 2019-06-30 NaN NaN 7.806600e+10 NaN NaN
119
+ 2019-12-31 NaN NaN NaN 3.040774e+12 NaN
120
+ 2020-03-31 NaN 1.326280e+11 NaN NaN NaN
121
+ 2020-06-30 NaN NaN 8.359900e+10 NaN NaN
122
+ 2020-12-31 NaN NaN NaN 2.736540e+12 NaN
123
+ 2021-03-31 NaN 1.428330e+11 NaN NaN NaN
124
+ 2021-06-30 NaN NaN 9.089500e+10 NaN NaN
125
+
126
+ となります。…が、1332.Tはエラーではないので1333.T,1414.T,1605.Tと同様にデータが取得できるはずなのです。
127
+ ちなみに上記実行後に上記コードの
128
+ dummy=list(tickers.tickers.values())[**0**].balance_sheet.T["Total Stockholder Equity"]
129
+
130
+ dummy=list(tickers.tickers.values())[**1**].balance_sheet.T["Total Stockholder Equity"]
131
+ とダミー作成用に作成使用するインデックスを変えると。
132
+ 1332.T 1333.T 1414.T 1605.T ^N225
133
+
134
+ 2018-03-31 NaN NaN NaN 2.916679e+12 NaN
135
+ 2018-06-30 NaN NaN 7.409500e+10 NaN NaN
136
+ 2019-03-31 NaN NaN NaN 3.006479e+12 NaN
137
+ 2019-06-30 NaN NaN 7.806600e+10 NaN NaN
138
+ 2019-12-31 NaN NaN NaN 3.040774e+12 NaN
139
+ 2020-03-31 NaN NaN NaN NaN NaN
140
+ 2020-06-30 NaN NaN 8.359900e+10 NaN NaN
141
+ 2020-12-31 NaN NaN NaN 2.736540e+12 NaN
142
+ 2021-03-31 NaN NaN NaN NaN NaN
143
+ 2021-06-30 NaN NaN 9.089500e+10 NaN NaN
144
+
145
+ と1332.Tはエラーのままで追加で1333.Tまでエラー扱いになります。
146
+ (同様にインデックスを2,3と変えれば1414.Tもエラー扱い。1605.Tもエラー扱いになっていきます。)
147
+
148
+ ちなみに、tikersの中身を再度入れなおすと元の結果1に戻ります。
149
+
150
+ 根本的にダミー作成のためにリストを作成して(適当な)該当tickersの.balance_sheet.T["Total Stockholder Equity"]を引っ張るだけで
151
+ for i in tickers.tickers:以降の.balance_sheet.T["Total Stockholder Equity"]に影響を与える意味が分かりません。。。。
152
+
153
+ 理由と対策わかられる方、ご教示の程宜しくお願い致します。

1

エラー追記

2021/09/03 20:42

投稿

yutakao
yutakao

スコア10

title CHANGED
File without changes
body CHANGED
@@ -29,6 +29,57 @@
29
29
 
30
30
  以降が上手く動作できません。
31
31
 
32
+ エラー内容追記
33
+ ```ここに言語を入力
34
+ KeyError Traceback (most recent call last)
35
+ ~\anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
36
+ 3080 try:
37
+ -> 3081 return self._engine.get_loc(casted_key)
38
+ 3082 except KeyError as err:
39
+
40
+ pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()
41
+
42
+ pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()
43
+
44
+ pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
45
+
46
+ pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
47
+
48
+ KeyError: 'Net Income'
49
+
50
+ The above exception was the direct cause of the following exception:
51
+
52
+ KeyError Traceback (most recent call last)
53
+ <ipython-input-76-21ebd2ac4cd6> in <module>
54
+ 9 try:
55
+ ---> 10 earnings.append(tickers.tickers[i].financials.T["Net Income"])
56
+ 11 except:
57
+
58
+ ~\anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
59
+ 3023 return self._getitem_multilevel(key)
60
+ -> 3024 indexer = self.columns.get_loc(key)
61
+ 3025 if is_integer(indexer):
62
+
63
+ ~\anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
64
+ 3082 except KeyError as err:
65
+ -> 3083 raise KeyError(key) from err
66
+ 3084
67
+
68
+ KeyError: 'Net Income'
69
+
70
+ During handling of the above exception, another exception occurred:
71
+
72
+ NameError Traceback (most recent call last)
73
+ <ipython-input-76-21ebd2ac4cd6> in <module>
74
+ 10 earnings.append(tickers.tickers[i].financials.T["Net Income"])
75
+ 11 except:
76
+ ---> 12 earnings.append(dummy) # エラー発生時はダミーを入れる
77
+ 13
78
+ 14
79
+
80
+ NameError: name 'dummy' is not defined
81
+
82
+ ```
32
83
 
33
84
  > dummy = tickers.tickers[0].financials.T["Net Income"]
34
85
  > dummy[:] = np.nan