

CSVファイルをpandasで読み込んでリストの作成と平均のまとめを行った結果、エラーになってしまい、ファイルに原因があるのか、コードに原因があるのかが分かりません。  
解決策があればご意見、よろしくお願いします。

**コード**

[code]

    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))
    
[/code]

**エラーメッセージ**

[code]

    Traceback (most recent call last):
      File "/Users/fujiokamasaya/Desktop/python.test/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 4411, in get_value
        return libindex.get_value_at(s, key)
      File "pandas/_libs/index.pyx", line 44, in pandas._libs.index.get_value_at
      File "pandas/_libs/index.pyx", line 45, in pandas._libs.index.get_value_at
      File "pandas/_libs/util.pxd", line 98, in pandas._libs.util.get_value_at
      File "pandas/_libs/util.pxd", line 83, in pandas._libs.util.validate_indexer
    TypeError: 'str' object cannot be interpreted as an integer
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/Users/fujiokamasaya/PycharmProjects/project/tenki.1.py", line 10, in <module>
        m,  d,v = (int(row['月']), int(row['日']), float(row['気温']))
      File "/Users/fujiokamasaya/Desktop/python.test/lib/python3.7/site-packages/pandas/core/series.py", line 871, in __getitem__
        result = self.index.get_value(self, key)
      File "/Users/fujiokamasaya/Desktop/python.test/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 4419, in get_value
        raise e1
      File "/Users/fujiokamasaya/Desktop/python.test/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 4405, in get_value
        return self._engine.get_value(s, k, tz=getattr(series.dtype, "tz", None))
      File "pandas/_libs/index.pyx", line 80, in pandas._libs.index.IndexEngine.get_value
      File "pandas/_libs/index.pyx", line 90, in pandas._libs.index.IndexEngine.get_value
      File "pandas/_libs/index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
      File "pandas/_libs/hashtable_class_helper.pxi", line 1618, in pandas._libs.hashtable.PyObjectHashTable.get_item
      File "pandas/_libs/hashtable_class_helper.pxi", line 1626, in pandas._libs.hashtable.PyObjectHashTable.get_item
    KeyError: '月'
    
[/code]

**CSVファイルの内容**

[code]

    年, 月, 日, 気温, 品質, 均質, 
    2010,1,5,7.4,8,1
    2010,1,6,4.6,8,1
    2010,1,7,4.5,8,1
    2010,1,8,5.5,8,1
    2010,1,9,5.8,8,1
    2010,1,10,7.3,8,1
    2010,1,11,7.0,8,1
    2010,1,12,6.8,8,1
    2010,1,13,2.5,8,1
    2010,1,14,2.3,8,1
    2010,1,15,4.6,8,1
    2010,1,16,3.9,8,1
    2010,1,17,3.9,8,1
    2010,1,18,5.4,8,1
    2010,1,19,7.9,8,1
    2010,1,20,9.9,8,1
    2010,1,21,10.3,8,1
    2010,1,22,6.5,8,1
    
[/code]


CC BY-SA 4.0
2020-02-23T14:20:29.890
63303
2020-05-19T22:08:20.943
2020-02-24T07:58:01.563
3060
37890
question
python python3 pandas csv
CSVファイルを読み込んでデータを処理する時のエラーについて


ファイルに原因があるのではないかと予想されます。  
csvに`月`カラムがあるかご確認ください。

@metropolis さんのコメントの通り、csvのヘッダにスペースが入っているのが原因のようです。  
[公式ドキュメント(英語)](https://pandas.pydata.org/pandas-
docs/stable/reference/api/pandas.read_csv.html)や[解説ブログ](https://pandas.pydata.org/pandas-
docs/stable/reference/api/pandas.read_csv.html)を参考に`skipinitialspace`を有効にしてください。

うまく行くcsv

[code]

    月,日,気温
    1,2,3
    1,2,6
    # 1/2 : 4.5
    
[/code]

同様のエラーになるcsvその1

[code]

    すっぽん,日,気温
    1,2,3
    1,2,6
    
[/code]

同様のエラーになるcsvその2

[code]

     月, 日, 気温
    1,2,3
    1,2,6
    
[/code]

検証コード

[code]

    import pandas as pd
    
    # エラーになる
    #df = pd.read_csv("kion10y.csv", encoding="utf-8")
    # エラーにならない
    df = pd.read_csv("kion10y.csv", encoding="utf-8", skipinitialspace=True)
    
    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))
    
[/code]


CC BY-SA 4.0
2020-02-23T14:47:48.247
63304
2020-02-24T06:12:22.467
2020-02-24T06:12:22.467
9820
9820
63303
answer


ヘッダの月から均質まで、前にスペースが入ってます。

[code]

    年, 月, 日, 気温, 品質, 均質, 
    
[/code]

スペースを削除してみてください。

[code]

    年,月,日,気温,品質,均質,
    
[/code]


CC BY-SA 4.0
2020-02-24T06:38:31.037
63319
2020-02-24T07:57:18.473
2020-02-24T07:57:18.473
3060
24490
63303
answer