Pythonで株価データを扱うとき、「CSVに出力してExcelで開きたい」と思ったことありませんか?
この記事では、yfinance
ライブラリを使って株価の時系列データを取得し、それをCSVファイルとして保存する方法を紹介します。
さらに、「保存先がわからない!」というよくある悩みも解決。保存場所の確認方法や明示的な保存の仕方も解説するので、初心者の方でも安心です。
✅ この記事でわかること:
- Pythonとyfinanceを使って株価データをCSV保存する方法
- 保存先の確認と指定方法、ファイル名の工夫まで
- グラフを画像ファイルとして保存する方法も紹介
🎯 対象となる読者:
- Pythonで株価データを扱いたい初心者
- yfinanceで取得したデータをExcelやスプレッドシートで扱いたい人
- CSV保存や画像保存の基本的な書き方を確認したい人
🔧 活用できるシーン:
- 株価分析や投資ログの記録をとりたいとき
- ExcelやJupyter Notebookで株価を管理・共有したいとき
- 自動化や定期実行の下準備として活用したいとき
1. 使用するライブラリについて
本記事では、yfinanceで株価データを保存するために使用するPythonライブラリについて解説します。
yfinanceの基本的な使い方は、以下の関連記事で詳しく解説していますので、必要に応じてご覧ください。
- Pythonで簡単に株価取得!yfinanceの活用法
- 【初心者向け】Pythonで投資データを取得!yfinanceの使い方と株価分析
- Pythonで株価を比較!yfinance×Jupyterでグラフ作成
2. 株価データを取得する:シンプルな例で理解しよう
2.1. 株価データ取得
まずは、実際に株価データを取得してみましょう。 ここではApple社(ティッカーシンボル:AAPL)の株価データを例に使います。
import yfinance as yf
ticker = "AAPL" # 銘柄コード
start_date = "2023-01-01"
end_date = "2023-12-31"
# データ取得
data = yf.download(ticker, start=start_date, end=end_date)
このコードでは、2023年の1年間の株価データ(日足)を取得しています。data
には、以下のような情報が含まれます:
Open
(始値)High
(高値)Low
(安値)Close
(終値)Adj Close
(調整後終値)Volume
(出来高)
取得されたデータはpandas.DataFrame
として格納されており、表形式で扱いやすくなっています。
2.2 銘柄コードは自由に変更可能!
たとえば、Google(GOOGL)やトヨタ(7203.T)など、好きな銘柄に切り替えて使うこともできます。
data = yf.download("GOOGL", start="2023-01-01", end="2023-12-31")
また、株価のローソク足チャートを作成・保存したい場合は、以下の記事で紹介しているコードが便利です。
【初心者向け】Pythonで投資データを取得!yfinanceの使い方と株価分析
3. 株価データをCSVファイルとして保存する方法
株価データをyfinanceで取得しCSVとして保存する方法を具体的に見ていきましょう。 CSVはExcelやGoogleスプレッドシートでも簡単に開ける汎用的なファイル形式で、データの保存・加工・共有にとても便利です。
3.1. 基本の保存方法
pandas
のDataFrameには、to_csv()
というメソッドがあり、これを使えば簡単にCSVファイルに変換して保存できます。
# CSVファイルとして保存(ファイル名のみ指定)
data.to_csv("aapl.csv")
このコードを実行すると、”aapl.csv”というファイル名でCSVが保存されます。 ただし、**保存先が指定されていない場合は「カレントディレクトリ」**に保存されます。
3.2. カレントディレクトリとは?
Pythonスクリプトが現在作業しているフォルダのことを「カレントディレクトリ」と呼びます。 これを確認するには以下のコードを使います:
import os
print(os.getcwd()) # 現在の作業ディレクトリを表示
出力されたパスの中に、先ほど保存したCSVファイルがあるはずです。
補足:ファイルが見つからない時の対処法
ファイル名だけで保存した場合、Jupyter Notebookでは実行ファイルと同じ階層、 Pythonスクリプト(.py)ではターミナルで起動した位置に保存されるので注意しましょう。
3.3. 保存場所を明示的に指定する方法
ファイルをどこに保存するかを自分で決めたい場合は、パス(保存先)を明示的に指定するのがおすすめです。
# 絶対パスで指定
save_path = "C:/Users/yourname/Documents/aapl.csv"
data.to_csv(save_path)
print("保存しました:", save_path)
または、相対パスでも指定できます:
# 相対パスで保存(同じフォルダ内の"data"フォルダに保存)
data.to_csv("./data/aapl.csv")
補足:指定したフォルダが存在しない場合はエラーになるので、あらかじめフォルダを作っておくか、Pythonで自動作成するコードを加えると便利です。
import os
os.makedirs("./data", exist_ok=True)
このように、yfinanceで保存するCSVファイルの管理も、保存先とファイル名を意識すれば作業効率がぐんとアップします。 次章では、保存したCSVの中身や構成についても簡単に確認してみましょう。
3.4. ファイル名の重複を避ける:保存日時を追加する方法
同じ名前で保存すると、ファイルが上書きされてしまう可能性があります。そんな時は、ファイル名に保存日時を含めることで重複を防げます。
import datetime
# 現在の日時を取得してファイル名に追加
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M")
filename = f"aapl_{timestamp}.csv"
data.to_csv(filename)
print("保存しました:", filename)
フォルダを作って相対パスで保存することもできます:
import os
import datetime
# フォルダ作成
os.makedirs("data", exist_ok=True)
# 日時付きファイル名で保存
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M")
filepath = f"data/aapl_{timestamp}.csv"
data.to_csv(filepath)
print("保存しました:", filepath)
このように、CSV出力はとてもシンプルですが、「保存先を意識する」「ファイル名を工夫する」だけで、作業効率がぐんとアップします。 次章では、保存したCSVの中身や構成についても簡単に確認してみましょう。
3.5. コード全文(まとめ)
以下は本記事で使用したコードの全体です。Jupyter NotebookやPythonスクリプトとしてそのまま実行できます。
🧾コード全文
import yfinance as yf
import os
import datetime
# 株価データを取得
ticker = "AAPL"
start_date = "2023-01-01"
end_date = "2023-12-31"
data = yf.download(ticker, start=start_date, end=end_date)
# カレントディレクトリの確認
print("現在のカレントディレクトリ:", os.getcwd())
# 保存フォルダの作成(なければ自動で作成)
save_dir = "data"
os.makedirs(save_dir, exist_ok=True)
# 日時付きファイル名を生成
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M")
filename = f"aapl_{timestamp}.csv"
filepath = os.path.join(save_dir, filename)
# CSVファイルとして保存
data.to_csv(filepath)
print("保存しました:", filepath)
🖨️出力メッセージ
現在のカレントディレクトリ: C:\Users\PC_User
保存しました: data\aapl_20250323_1858.csv
💡 補足:環境によって保存先パス(特にCドライブのユーザー名部分など)は異なります。自分の環境に合わせて適宜読み替えてください。
3.6. 保存したCSVファイルの中身を確認してみよう
実際に保存したCSVファイル(aapl_20250323_1858.csv
)をJupyter Notebookで開くと、次のように表示されます。

上図のように、日付をインデックスとし、AAPL(Apple)の各指標データ(始値・高値・安値・終値・出来高)が表形式で保存されています。
この形式なら、Excelで開いたり、pandasで再度読み込んで分析に使うのも簡単です。
4. 画像として保存する
CSVと同様に、グラフ画像を保存することも可能です。
CSVファイルだけでなく、株価の推移を可視化したグラフを画像ファイルとして保存することも可能です。ここでは、matplotlib
を使ってシンプルな折れ線グラフを描き、それをPNG形式で保存する方法を紹介します。
4.1. グラフの作成と保存手順
import matplotlib.pyplot as plt
# 終値をプロット
data["Close"].plot(title=f"{ticker} Close Price")
plt.xlabel("Date")
plt.ylabel("Price")
plt.tight_layout()
# グラフをPNGファイルとして保存
plt.savefig("aapl_close_price.png")
print("グラフ画像を保存しました")
実行結果として、以下のようなグラフが charts/
フォルダに保存されます:

線グラフのタイトルや軸ラベルも自動で付いており、そのまま資料やレポートに活用できます。
このコードでは、Apple(AAPL)の終値(Close)を折れ線グラフで描き、aapl_close_price.png
という名前で保存しています。
補足:
plt.tight_layout()
を入れることで、ラベルやタイトルが見切れるのを防ぐことができます。
4.2. 保存先にも注意しよう
ここでも、ファイル名だけを指定するとカレントディレクトリに画像が保存されます。 保存先が分からなくなりがちなので、明示的に保存パスを指定するのがおすすめです。
# 保存先を明示的に指定(相対パス+フォルダ作成)
import os
os.makedirs("charts", exist_ok=True)
plt.savefig("charts/aapl_close_price.png")
print("グラフ画像を charts フォルダに保存しました")
こうすることで、プロジェクト内にcharts/
というフォルダを作り、その中に画像を保存できます。
4.3. 画像の保存フォーマットは選べる!
plt.savefig()
は拡張子を変えるだけでPNG、JPG、PDF、SVGなどさまざまな形式に対応しています。
plt.savefig("charts/aapl_chart.jpg") # JPG形式
plt.savefig("charts/aapl_chart.pdf") # PDF形式
グラフをレポートに貼り付けたいときや、Webにアップする画像が欲しいときに非常に便利です。
次章では、記事全体のまとめとして、CSV・画像保存のポイントを振り返ります。
5. まとめ
この記事では、Pythonのyfinance
ライブラリを使って株価データを取得し、CSVファイルや画像ファイルとして保存する方法を紹介しました。
5.1. 本記事のポイント
yfinance
を使えば、簡単に株価データを取得できるto_csv()
を使ってCSVとして保存できるが、保存先は自分で指定するのが安全- 保存先がわからない場合は、
os.getcwd()
でカレントディレクトリを確認 - グラフ画像(.pngなど)も
matplotlib
のsavefig()
で保存可能 - CSVに出力しておけば、Excelやスプレッドシートでの分析やグラフ化が簡単
5.2. 今後のステップ
yfinanceで保存したCSVや画像データを活用して、次のようなステップに発展させることもできます:
- 複数銘柄のデータ取得
- データベースへの格納(SQLiteなど)
- 自動化やスケジューリング(cron、タスクスケジューラ)
5.3. 関連記事
最後までお読みいただき、ありがとうございました! 「こんな出力もできる?」などあれば、コメント欄でぜひ教えてください📩
コメント