企業の金融データアナリストとして日々株式の履歴データを分析していますが、以前は CSV を手動でダウンロードして Excel で整理する…… という非効率な作業をしていました。データが多くなるとすぐに混乱し、列名の不揃いや日付形式のエラー、手作業によるミスが頻発していました。
そこでたどり着いたのがAPI による自動取得 + Python による整理の手法です。一度コードを作ってしまえば、あとは実行するだけでデータ取得から整形、可視化、指標計算まで一括で完了。企業分析でも個人の投資分析でも、圧倒的に効率が上がります。
今回は実務で使えるコードをそのまま公開し、株式履歴データの取得・整理・一括取得・収益率計算・グラフ化までの流れを初心者でもわかりやすく解説します。
なぜ CSV 手動取得をやめたのか?データ整理の悩み
私が手動作業を辞めた理由は、この 3 つです。
- 複数の銘柄・期間をダウンロードするとデータが混乱しやすい
- 列名や日付形式がバラバラで、整理に時間がかかる
- 毎回同じ作業の繰り返しで自動化ができない
API を使ったデータ取得に切り替えてからは、指定した期間・銘柄のデータが、常に同じ形式で 取得できるようになり、分析に集中できるようになりました。
データ取得前に決めておくこと
私が実務で必ず決めてからコードを書くのは以下の 4 点です。
- 対象銘柄(シンボル)
- データ取得期間(過去 1 年程度が使いやすい)
- データ頻度(日足・週足など)
- 必要な項目(日時・始値・高値・安値・終値・出来高)
これを決めておくと、コードが使い回せて、分析のブレがなくなります。
実践①:単一銘柄の株式データを API で取得
今回はAllTick APIを使ってデータを取得します。フォーマットが安定していて、Python での取り扱いが非常に簡単です。
以下のコードをそのままコピーして実行できます。
import requests
import pandas as pd
url = "https://apis.alltick.co/stock/history"
params = {
"symbol": "600519.SH",
"interval": "1d",
"start_date": "2025-03-01",
"end_date": "2026-03-01"
}
resp = requests.get(url, params=params)
data = resp.json()["data"]
df = pd.DataFrame(data)
print(df.head())
取得できるデータ:日時・始値・高値・安値・終値・出来高Pandas の DataFrame に直接変換されるので、すぐに分析に使えます。
実践②:データ整形&グラフ可視化でトレンドを確認
データを取得したら、まず型を整えることが重要です。日時と終値を正しい形式に変換してから、グラフを描きます。
import matplotlib.pyplot as plt
df['time'] = pd.to_datetime(df['time'])
df['close'] = df['close'].astype(float)
plt.figure(figsize=(12,6))
plt.plot(df['time'], df['close'])
plt.title("600519.SH 終値トレンド")
plt.xlabel("日付")
plt.ylabel("終値")
plt.grid(True)
plt.show()
これで株価の推移が一目でわかるようになり、異常値やトレンドをすぐに発見できます。
実践③:複数銘柄を一括取得・まとめて分析
企業分析や投資判断では複数銘柄を同時に分析することが多いです。ループ処理を使って、一括でデータを取得しましょう。
symbols = ["600519.SH", "000001.SZ"]
all_data = []
for s in symbols:
params["symbol"] = s
resp = requests.get(url, params=params)
df_s = pd.DataFrame(resp.json()["data"])
df_s['symbol'] = s
all_data.append(df_s)
df_all = pd.concat(all_data)
print(df_all.head())
複数銘柄のデータが 1 つのテーブルにまとまるので、比較分析が超簡単になります。
実践④:日次収益率(騰落率)を自動計算
株式分析で必ず使う騰落率も、たった 1 行で計算可能です。
df_all.sort_values(['symbol','time'], inplace=True)
df_all['pct_change'] = df_all.groupby('symbol')['close'].pct_change()
print(df_all.head())
これでリスク計測・トレンド判断・戦略の検証がすぐにできるようになります。
実務で使える小技(コピペで使える)
私が日々の分析で使っている、効率アップのコツです。
- データが多いときは期間を分けて取得すると安定
- 一度取得したデータはCSV や Parquet で保存して再利用
- 複数銘柄は必ず銘柄名(symbol) をつける
- 日時は最初に datetime 型に変換するとエラーが減る
まとめ:API を使えばデータ整理が一瞬で終わる
CSV を手動でダウンロードする作業からAPI 自動取得に切り替えるだけで、データ整理の時間が大幅に削減され、本来の「分析」に集中できるようになります。
今回のコードは
- データ取得
- 整形・可視化
- 一括取得
- 騰落率計算
まで完全に動作する実務レベルのコードです。Python が少しわかる方なら、すぐに自分の分析に使えるようになります。
これから株式データ分析を効率化したい方は、ぜひ試してみてください😊