【pandas】100日チャレンジ : 9日目 株価のアノマリー分析入門

※この記事は2020年11月11日に更新されました。

ポイント

プログラミング学習が義務教育でも取り入れられるようになり、ほぼすべての人が避けては通れない時代に突入してしまいました。

基本的にはローコードやノーコードテクノロジーが発達し、個人で隅々まで覚える必要はないとも言えますが、やはり自在に操れればまさに100人力とも言えます。

Pythonやpandasの技術があなたがやりたい何かに合致した場合、是非100日でサクッと覚えてしまいましょう。

100日でざっくりと基礎を身に着けられるように構成しています。

Pythonコース【.pro】 Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルを学ぶオンライン講座

9日目 CSVファイルから条件付きでデータを抽出

前回はダウの過去データのCSVファイルを読み込み、簡単に操作してデータを閲覧しました。

本日は特定の条件で過去のデータにアクセスする方法を学びましょう。

早速pandasを起動し、importしてください。

【pandas】100日チャレンジ : 8日目 CSVファイルから特定のデータを抽出する (サイト内記事)

【データ分析】株価の過去データをダウンロードする方法 (サイト内記事)

スライスでデータを取得

df[0:10]
ポイント

ちなみに[o]は省略可能ですので、df[:10]でも取得できます。

ナンバリングはゼロからスタートするのを忘れないでおきましょう。

こんな感じで好きな場所をスライスして抽出することができます。

列を指定して抽出

日付の列を5行目まで指定して抽出してみましょう。

df["日付け"][:5]

ただし、この記述だと、シリーズで表示されます。

データフレームで表示させたい場合は、二重でくくります。

複数の列名を指定して抽出

df[["日付け", "出来高"]][:10]

, で区切って指定しましょう。

このように日付けと出来高を抽出できました。

アノマリー分析に最適

ここからは株価のアノマリー分析の際の参考になりますので、丁寧に見ていきましょう。

名称を指定して抽出

df[df["日付け"] == "2020年10月27日"]

3487 行の中から特定の日付だけをダイレクトに抽出できました。

もちろん数年前の日付でも一瞬で抽出できます。

文字列の中から指定した単語に該当する条件で抽出 (部分一致)

例えば先ほどの4月17日のダウの値を複数年に渡ってチェックしたい場合は特定の単語を指定して抜き出すことができます。

containsメソッド

df[df["日付け"].str.contains("4月17日")]
  • contains (特定の単語)
  • startswith (特定の文字や文字列から始まる)
  • endswith (特定の文字や文字列で終わる)

はセットで覚えましょう。

startswithメソッド (前日比マイナスの日を抽出する)

ここでは、ダウの過去データから前日比が「-」で始まる行を抜き出してみましょう。

df[df["前日比%"].str.startswith("-")]

13年間分だと1586日が前日比マイナスとなっていることがわかります。

多様なアノマリー分析活用術 ~ [独立記念日の前日は・・・?]

例えば過去13年間のアメリカの独立記念日の前日のダウ平均だけ見てみましょう。

独立記念日は7月4日ですので、7月3日だけ抽出します。

すると、2018年だけマイナスだったことがわかります。

クリスマスイブもこの通り・・・

まとめ&豆知識

containsメソッドとstartswithメソッドはアノマリー分析では特に頻繁に使用することになるかと思いますので、しっかり覚えておきましょう。

最大値を知るためのmaxメソッド

最後にあまりアノマリーには使いませんが、最大値を知るための記述を覚えておきましょう。

df[df["前日比%"] == df["前日比%"].max()]

過去13年間のダウ前日比最大は3月13日で9.36%でした。

3月13日というと、3月12日のコロナショックの翌日ですね。

みなさんの参考になれば幸いです。