import pandas as pd #PANDASでCSVを読み込む df = pd.read_csv("kion10y.csv", encoding="utf-8") # 日ごとに気温をリストにまとめる md = {} for i, row in df.iterrows(): m, d, v = (int(row["月"]), int(row["日"]), float(row["気温"])) key = str(m) + "/" + str(d) if not(key in md): md[key] = [] md[key] += [v] # 日付ごとに平均を求める avs = {} for key in md: v = avs[key] = sum(md[key]) / len(md[key]) print("{0} : {1}".format(key, v)) ```### 前提・実現したいこと Pythonで東京都10年間の平均気温を出すプログラムを作っています。 東京都の10年間の平均気温のCSVファイルをpandasで読み込んでから 平均気温を計算して出力したい内容です。 しかし、エラーが出ております。 コード ■■コードを実行したら以下のエラーメッセージが発生しました。 ### 発生している問題・エラーメッセージ TypeError Traceback (most recent call last) C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_value(self, series, key) 4410 try: -> 4411 return libindex.get_value_at(s, key) 4412 except IndexError: pandas\_libs\index.pyx in pandas._libs.index.get_value_at() pandas\_libs\index.pyx in pandas._libs.index.get_value_at() pandas\_libs\util.pxd in pandas._libs.util.get_value_at() pandas\_libs\util.pxd in pandas._libs.util.validate_indexer() TypeError: 'str' object cannot be interpreted as an integer During handling of the above exception, another exception occurred: KeyError Traceback (most recent call last) <ipython-input-23-b048decced88> in <module> 7 md = {} 8 for i, row in df.iterrows(): ----> 9 m, d, v = (int(row["月"]), int(row["日"]), float(row["気温"])) 10 key = str(m) + "/" + str(d) 11 if not(key in md): md[key] = [] C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\series.py in __getitem__(self, key) 869 key = com.apply_if_callable(key, self) 870 try: --> 871 result = self.index.get_value(self, key) 872 873 if not is_scalar(result): C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_value(self, series, key) 4417 raise InvalidIndexError(key) 4418 else: -> 4419 raise e1 4420 except Exception: 4421 raise e1 C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_value(self, series, key) 4403 k = self._convert_scalar_indexer(k, kind="getitem") 4404 try: -> 4405 return self._engine.get_value(s, k, tz=getattr(series.dtype, "tz", None)) 4406 except KeyError as e1: 4407 if len(self) > 0 and (self.holds_integer() or self.is_boolean()): pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_value() pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_value() pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc() pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item() pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item() KeyError: '月' ### 試したこと CSVデータの再読み込み、コードのチェックをしましたが、解消されません。 ### 補足情報(FW/ツールのバージョンなど) Python3.8
このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
・コードは「コードの挿入」で記入してください。
・"kion10y.csv"の内容を先頭10行程度載せてください。
y_waiwai様
ご確認いただきありがとうございます。
codeの枠内にコードを入力させていただきました。
meg_様
ご確認いただきありがとうございます。
コードは挿入から記載いたしました。
kino10y.csvの先頭を以下に記載いたします。
年, 月, 日, 気温, 品質, 均質
2006/1/1,3.6,8,1
2006/1/2,4.0,8,1
2006/1/3,3.7,8,1
2006/1/4,4.0,8,1
2006/1/5,3.6,8,1
2006/1/6,2.1,8,1
2006/1/7,2.8,8,1
2006/1/8,4.2,8,1
2006/1/9,3.7,8,1
2006/1/10,4.3,8,1
2006/1/11,6.1,8,1
2006/1/12,6.1,8,1
2006/1/13,4.0,8,1
2006/1/14,6.6,8,1
2006/1/15,10.7,8,1
2006/1/16,9.0,8,1
2006/1/17,8.0,8,1
2006/1/18,5.6,8,1
2006/1/19,4.2,8,1
回答2件
あなたの回答
tips
プレビュー