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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

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

Q&A

2回答

1819閲覧

FileNotFoundError: [Errno 2] No such file or directory: 'eqall2.csv'がわからない

skp_1212

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

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

0グッド

0クリップ

投稿2021/10/21 13:22

コード全文を記載しますが、
FileNotFoundError: [Errno 2] No such file or directory: 'eqall2.csv'というエラー文がでています。
これは単に空の「eqall2.csv」を事前に用意しておけば良いのでしょうか?

import pandas as pd
pd.options.display.max_columns = None
pd.options.display.max_rows = None
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import seaborn as sns
sns.set()
sns.set(font=["Yu Gothic", "Hiragino Maru Gothic Pro"])
import warnings
warnings.filterwarnings("ignore")
from sklearn.model_selection import train_test_split
from dateutil.relativedelta import relativedelta
import os
import glob
from datetime import datetime

os.chdir("/Users/yousukesano/Desktop")
df = pd.DataFrame(columns = [])

for i in glob.glob("地震リスト"):
tmp = pd.read_csv(i)
df = pd.concat([df, tmp])
df.sample(100)

df = df.reset_index(drop = True)
df.head()
df.shape
df1 = df.dropna()
df1.shape

df1.to_csv("eqall.csv")
df1 = pd.read_csv("eqall2.csv",parse_dates=True, index_col=0)
df1.head()
df1.shape

df1["地震の発生日"][0]
df1["地震の発生時刻"][0]

まずは文字列としてdateとtimeを結合

date = df1["地震の発生日"][0]
time = df1["地震の発生時刻"][0]
str_datetime = f"{date} {time}"
str_datetime

datetime型に変換する

from datetime import datetime as dt
datetime = dt.strptime(str_datetime, "%Y/%m/%d %H:%M:%S")
datetime

datetimes = []

for index, datum in df1.iterrows():
date = datum["地震の発生日"]
time = datum["地震の発生時刻"]
str_datetime = f"{date} {time}"
datetime = dt.strptime(str_datetime, "%Y/%m/%d %H:%M:%S")
datetimes.append(datetime) # datetimesというリストに格納する

datetimes[:3]
df1["ds"] = datetimes # 新しいdsというカラムに格納する
df1.head()
df2 = df1.rename(columns={'深さ.1': '深さ', '最大震度.2':'最大震度'})
df2.head()

目的変数をyというカラムに変更する必要がある

df3 = df2.rename(columns={"M":"y"})
df3.head()
df3.dtypes

#学習データとテストデータに分ける
#2020年〜2021年8月8日までをテストデータとする
df_test = df3[df3['ds'] > dt(2020,1,1,0,0)]
df_test.head()
df_train = df3[df3["ds"] <= dt(2020,1,1,0,0)]
df_train.tail()

print("学習データ:",df_train.shape)
print("テストデータ:",df_test.shape)
df3.isnull().sum()
df3.dtypes

from fbprophet import Prophet
from fbprophet.plot import add_changepoints_to_plot

model = Prophet( growth='linear',
changepoints=None,
n_changepoints=25,
changepoint_range=0.8,
yearly_seasonality='auto',
weekly_seasonality='auto',
daily_seasonality='auto',
holidays=None,
seasonality_mode='multiplicative',
seasonality_prior_scale=20.0,
holidays_prior_scale=10.0,
changepoint_prior_scale=0.05,
mcmc_samples=0,
interval_width=0.8,
uncertainty_samples=1000,
stan_backend=None,)

model.fit(df_train)

将来の予測したいデータを用意する必要がある 箱を用意

future = model.make_future_dataframe(800*24, freq="h")

future.tail()

予測してみる

forecast = model.predict(future)

model.plot(forecast)
plt.xlim(dt(1919,5,1), dt(2021,12,31))
plt.show()

model.plot(forecast)
plt.xlim(dt(2010,5,1), dt(2030,5,31))
plt.show()

model.plot_components(forecast)
plt.show()

テストデータ

df_test = df3[df3['ds'] > dt(2020,1,1,0,0)]
df_test.head()

2020年1月からの予測データを採ってくる

forecast.head()

インデックスのリセット

forecast_2020 = forecast[forecast["ds"] >= dt(2020,1,1)].reset_index(drop=True)

forecast_2020["yhat"].head() # yhat = 予測値のこと

結果を入力する空のデータフレームを用意する

results = pd.DataFrame()

実測値

results["t"] = df_test["y"]

予測値

results["y"] = forecast_2020["yhat"]

results["diff"] = results["t"]-results["y"]

results.head()

np.mean(abs((results["y"]-results["t"])/results["y"])*100)

ここでは約15%はずれていますという評価になる

df3.y.max() # cap予測値の最大値の目安として実測値の最大値を確認してみる

df_train["cap"] = 12 #実測値の最大値から5700程度であれば予測最大値は入るだろうとしている
df_train.head()

model2 = Prophet(
growth = "logistic",
yearly_seasonality=True,
weekly_seasonality=True,
daily_seasonality=True,
changepoints=None,
n_changepoints=25,
changepoint_range=0.8,
holidays=None,
seasonality_mode='multiplicative',
seasonality_prior_scale=20.0,
holidays_prior_scale=10.0,
changepoint_prior_scale=0.05,
mcmc_samples=0,
interval_width=0.8,
uncertainty_samples=1000,
stan_backend=None

) #shift+tabでパラメータの説明があらわれる

model2.fit(df_train)
future["cap"] = 12
future.head()
forecast2 = model2.predict(future)
model2.plot(forecast)
plt.xlim(dt(1919,4,1), dt(2022,8,8))
plt.show()

forecast_2020r = forecast2[forecast2["ds"] >= dt(2020,1,1)].reset_index(drop=True)
forecast_2020r.head()

forecast_2020r["yhat"].head() # yhat = 予測値のこと

結果を入力する空のデータフレームを用意する

results2 = pd.DataFrame()

実測値

results2["t"] = df_test["y"]

予測値

results2["y"] = forecast_2020r["yhat"]

results2["diff"] = results2["t"]-results2["y"]

results2.head()

np.mean(abs((results2["y"]-results2["t"])/results2["y"])*100)

ここでは約14%はずれていますという評価になる。若干精度は向上している

model2.plot_components(forecast)
plt.show()

df4 = df3.set_index("ds",drop=True)
df4.head(2)

import statsmodels.api as sm

plt.rc("figure", figsize = (12,6))
res = sm.graphics.tsa.plot_acf(df4["y"],lags = 3000)

x 軸がどの程度ずらしているかをあらわし、y軸に相関の強さを表している

fig = plt.subplots(figsize = (18,6))
sns.lineplot(data = df4)

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

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

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

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

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

y_waiwai

2021/10/21 21:30

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

2021/10/21 23:05

エラーが出てる行のすぐ上で、 df1.to_csv("eqall.csv") と、「eqall.csv」というファイル名のCSVファイルを保存してますが、そのCSVファイルと、謎の「eqall2.csv」は、別のものなんですかね ファイル名はよく似てますけど もし同じものなら、こんな回りくどいこと普通はしないから、別のものなんでしょうね
guest

回答2

0

FileNotFoundError: [Errno 2] No such file or directory: 'eqall2.csv'というエラー文がでています。

これは単に空の「eqall2.csv」を事前に用意しておけば良いのでしょうか?

eqall2.csv というファイルがない、というエラーです
どういうことをしたいかわかりませんが、まずは実際にやってみればいいでしょう。
また別のエラーが出ることになるとは思いますが。

で、そのコードはどこから持ってきたもんなんでしょうか。
どういうファイルを用意しなければならないか、ってのはその持ってきたところに書いてありませんか?

投稿2021/10/21 21:33

y_waiwai

総合スコア87774

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

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

0

  • これは単に空の「eqall2.csv」を事前に用意しておけば良いのでしょうか?

df1 = pd.read_csv("eqall2.csv",parse_dates=True, index_col=0)

しているのですから、中身が必要でしょう。

投稿2021/10/21 13:52

ppaul

総合スコア24666

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問