質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

891閲覧

サイトにあるソースコードをコピペして利用したいのですが、エラーが出て進まなくて困っています。

naoki0831

総合スコア2

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/08/23 16:48

前提・実現したいこと

https://pannakotta.hatenablog.jp/entry/python/programing/machinelearning
こちらのサイトに書いてあるソースコードを試したいのですが、エラーが出て進まなくて困っています。ご協力願いたいです。

発生している問題・エラーメッセージ

KeyError Traceback (most recent call last)
<ipython-input-3-e28144a32619> in <module>
14 data1=DataFrame(pd.read_csv("data.csv")) #気温データを読み込む
15
---> 16 data2=data1[["2018","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017"]]
17 print("データ型確認{}\n".format(data2.dtypes))
18 data2.corr() #相関係数を調べる

~\anaconda3\lib\site-packages\pandas\core\frame.py in getitem(self, key)
3028 if is_iterator(key):
3029 key = list(key)
-> 3030 indexer = self.loc._get_listlike_indexer(key, axis=1, raise_missing=True)[1]
3031
3032 # take() does not accept boolean indexers

~\anaconda3\lib\site-packages\pandas\core\indexing.py in _get_listlike_indexer(self, key, axis, raise_missing)
1264 keyarr, indexer, new_indexer = ax._reindex_non_unique(keyarr)
1265
-> 1266 self._validate_read_indexer(keyarr, indexer, axis, raise_missing=raise_missing)
1267 return keyarr, indexer
1268

~\anaconda3\lib\site-packages\pandas\core\indexing.py in _validate_read_indexer(self, key, indexer, axis, raise_missing)
1306 if missing == len(indexer):
1307 axis_name = self.obj._get_axis_name(axis)
-> 1308 raise KeyError(f"None of [{key}] are in the [{axis_name}]")
1309
1310 ax = self.obj._get_axis(axis)

KeyError: "None of [Index(['2018', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014',\n '2015', '2016', '2017'],\n dtype='object')] are in the [columns]"

該当のソースコード

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import scipy as sp
from matplotlib import pyplot
from pandas import Series,DataFrame
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn import linear_model
import seaborn as sns
import sklearn

data1=DataFrame(pd.read_csv("assign5_temp1.csv")) #気温データを読み込む

data2=data1[["2018","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017"]]
print("データ型確認{}\n".format(data2.dtypes))
data2.corr() #相関係数を調べる

sns.pairplot(data2) #相関行列を作成
plt.grid(True)

l=pd.date_range("1-1-1",periods=365,freq="d")
plt.plot(l,X,alpha=0.7)
plt.plot(l,data2["2018"],color="black") #棒グラフを作成
plt.legend(X)

試したこと

コードに出てくるcssファイルは用意し、ファイル名も統一させましたがこのようなエラーメッセージが出ました。

補足情報(FW/ツールのバージョンなど)

Python 3.9.6
jupyter notebook

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/08/24 00:53

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
meg_

2021/08/24 01:17

作成者はtwitterで質問を受け付けているようですが、そちらには問い合わせしましたか?(本人に聞くのが一番だと思いますので)
Daregada

2021/08/24 01:23

エラーメッセージでは、 > 14 data1=DataFrame(pd.read_csv("data.csv")) #気温データを読み込む なのに、ソースコードでは、 > data1=DataFrame(pd.read_csv("assign5_temp1.csv")) #気温データを読み込む となっています。実際に使っているコードではどちらなのか、それは用意したファイルの名前と一致しているのかチェックしてみては。
guest

回答1

0

ベストアンサー

実際に気象庁からデータをダウンロードすると、data.csvというファイル名で、ShiftJISエンコーディングのCSVをダウンロードできます。先頭3行には、処理のさいに読み飛ばすべき情報(ダウンロードした時刻など)が書かれています。

その後、

しかし、このままだと分析しにくいので、データの整理していきたいと思います。

(略)

最終的にここまで整理すると後に楽になります。

と文章と図(気温1)で説明が書かれていますね。

ダウンロードしたデータを元に、「2018 2007 2008 ...」と1年ごとに列を作り、日付の行ごとに複数年のデータ(平均気温の値)が並んでいます。記事には明示されていませんが、(後のコードを見る限り)エンコーディングもUTF-8に変更されているはずです。

この後に載っているソースコードは、この「整理後のデータ」に対しての処理を行なうものです。つまり、assign5_temp1.csvというCSVファイルは、記事中の「気温1」の図に相当するデータがCSVで書かれているはずです。

このため、気象庁からダウンロードしたデータをそのまま読ませても正常に処理されません。
実際に、

KeyError: "None of [Index(['2018', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014',\n '2015', '2016', '2017'],\n dtype='object')] are in the [columns]"

が発生していますが、これは、提示されているコードが「2018」などのカラムインデックスを持つデータを想定していることを示しています。

ですから、「記事の作者に頼んで整理後のデータを頂く」とか、「ダウンロードしたCSVファイルから、図に相当するデータを整形する」などの対応が必要です。なお、整形をプログラムで行なうのであれば、別の質問を立ててください。

投稿2021/08/24 01:55

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naoki0831

2021/08/24 08:52

回答ありがとうございます!なるほどデータを整理しないと動かないのですね。助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問