「俺たちの好きな花狩まい」特集
みなさん、こんばんは。
さっそくですがタイトルの「花狩まい」さん、みなさんご存じですよね?
今年デビューのAV女優さんで当年23歳、可愛らしいルックスで横軸は女子高生からシンママOLまで、縦軸は清楚系から被虐系からの小悪魔系までの幅広い役柄をこなし、さらには「漫画を描く」「スロットを打つ」という裏属性もある女優さんなんですが…あ、ご存じない?
だいたいここまでのことはWikipediaに書いてあるんで、花狩まい - Wikipedia そっちを見てもらえば基本的な内容はカバーできてるわけなんですが、そんなことをわざわざ数か月ぶりのはてなブログに書くわけがない。彼女の人気なんですが、たぶんすげえハマる人にはハマるし、そうでもない人はそうでもないっていう傾向があると思うんです。その人気の秘密をちょっと探ってみたので紹介したいと思います。
花狩まいさんの人気の秘密、それは「おっぱいと乳首と(腹部)が刺さる人に刺さりまくる(し、刺さらない人は逆の反応を示す)」っていうところ。まあ、あたし、刺さった方の人なんですけど、あたしにいわせりゃ、まいちゃんのスケベ乳首をDisってるやつはただの青二才なんですよ。まあ、今回の記事はエロ目的でもエロアフィ目的でもなくただのテストケースなので、画像は各自、DMMで確認していただければよろしいかと思います。
この花狩さんのおっぱいと乳首問題、なんとか可視化できないのかなとおもって、スクレイピングしてきたDMMのユーザーレビューで★4以上つけてるレビューをテキストマイニングしてみたんです。
で、抽出したのは、上記のレビューのうち、各レビュー本文の、名詞・動詞・形容詞・副詞・形容動詞にあたるもの。でこのうち上位10語は「ある」とか「いる」とかだったのでストップワードとして除外して以下の結果を得ました。python3.9、形態素分析はsudachipyでいちばん単語の切れ目を広くとらえるやつ、可視化はnlplotをつかってます。
続きを読むmatplotlibが思ったよりははるかに簡単だった件。
0 はじめに
久しぶりに書きます。最初は経緯と方法についてなので、純粋にmatplotlibの使い方について読みたい方は4から読んでいただければ。とはいうものの、データもってくるためのスクレイピングってどうやってやるの、とか、ボリンジャーバンドをpythonで計算するにはどうするの、とか疑問は尽きないと思うんだけど、それはまた別の機会に。
年末ずっとやっていたのが、「東証の適時開示サイトを5分おきに見に行って、『業績予想の変更』がXBRLで出てたら拾ってきて、XBRLの中身が良かったら株の発注する。」っていう取り組み。結果、うまくいったときもあったんだけど、うまくいかないときのほうが多かった。原因はたぶん、①秒の世界で負けていた。②同時間帯に出されたXBRLを上から順に一個ずつ、XBRL読ませる→内容よかったら証券サイトに行って価格チェックして買えたら買う、っていう構成のため、同時に出された有益情報もゴミも取捨選択できなかった、③時系列を全く無視して、つけている株価の1%ぐらいを上乗せして買っているので、売値も買値も適当になってしまった、というところに敗因があるのかな。
で、せっかく動いてるんだから東証動いてる間だけでも稼動させようかなとも思ったんだけど、いかんせん前述③の値動きを拾えてないところに敗因があったんだろうから、これもやめ。まったく新しい戦略に切り替えることに。それは、ニュースで失敗したんだから、ニュースを全く無視して株動かそうっていうもの。具体的には純粋にテクニカルだけで、ニュース性のある動きはまったく無視して、1週間ぐらいの期間で現物の売り買いしようっていう戦略を一週間前に思いついた。で、ついてはチャートかな、と思った次第。
1 matplotlibって何?
pythonでグラフ描画するライブラリです。
丁寧に説明すると、pythonっていうプログラミングする言語があるんだけど、それでグラフを書くためのツールです。
全てタダです。エクセルもいりません。
2 データの入手
さて、元データの入手なんだけど、ちゃんと検討してなくてグレーなところがあるので省略。少なくともヤフーファイナンスじゃないけど、サーバーの強そうな某サイトからのスクレイピング。直近2ヶ月分ぐらいの終値を取得してくることに。
3 指標からの粗選定
日々の終値を拾ってきて、①直近3日で25日移動平均が上昇していること(トレンドの判定)、②5日前より直前の5日移動平均が上昇していること(トレンドの判定)、③25日移動平均と5日移動平均を比べてまだ5日移動平均のほうが低いか(時期の判定)、④終値がボリンジャーバンド2σ以内か(時期の判定)、⑤たぶんここまでいけば当たり前だけど、終値は最終5日移動平均より高いか(時期の判定)、っていう条件でPythonで計算して、残ったものだけをリスト化。2ヶ月分の終値データだけのCSV(チャート作成用)と、①~⑤の検討項目だけのCSV(買い判定用)を作成。たぶん市況によっても変わってくるだろうけど、3%ぐらいまでふるいに掛けられる。
で、ボリンジャーバンド2σ以上の株価っていうのも今テスト中なんだけど、こっちのほうが成績がよかったら、というか1日単位だったらこっちのほうが強そうだなぁ。
4 素人がはじめて使うmatplotlib1:pip install matplotlib
この説明は省略。Pythonで初めて使うライブラリインストールするときのあれ。
ちなみにあたし一切対話型って一切やってない。たぶんmatplotlibに関してはshowとかでその場で開けるんでしょうから、ジュピターブック(つづり分からんぐらい知らない)とか使うといいんじゃないんでしょうか、やってないけど。
5 素人がはじめて使うmatplotlib2:そもそもどんなデータを使えるの?
調べ始めて、まずこれがわかんなくって困ったんだけど、結論は、「配列でもいいし、PandasのDataFrameでもいいしSeriesでもいい。初めて使ったんでよくわからなかったけどNumpyの配列でもいい」みたい。実際今、日付入れないで単純に日時の終値データを並べてる一行もののDataframeをグラフにしてるんだけど、この手の順番が決まってるものだったらy軸に持ってくるデータさえあればいいみたい。
選定用のコードだと、CSVをDataframeに読み込んでるんだけど、評価用のコードだとNumpy配列を読み込んでた。(手探りでやりすぎて、自分が何やってるのかよくわかってない。)
6 素人がはじめて使うmatplotlib3:え、そんな行数でいいんすか?
ちゃんとしている人のちゃんとしている解説を読んでいると、「サイズを決めましょう。単位はインチです。」とかっていう話になって、「ほほう、そうしないと先に進めないんだな」という気になるんだけど、設定しなくても勝手に作ってくれる。(サイズだけは設定したけど。)
前述の4のデータのところでデータを読み込んだ、配列だかデータフレームだかの変数が「data」で、その部分の設定は無視するとたぶん3行で最低限のグラフがかける。
①一行目:インポートします。
import matplotlib.pyplot as plt
書いてる人がポンコツなので写経です。なぜ「.pyplot」をつけるのかはちゃんとしたところで読んで頂ければ。
②二行目:プロットします。
plt.plot(data)
凡例入れたり線種線色変えたり、とか考えなければ、最低限これ。繰り返しになるけど、dataのところは前述4のとおりでなんでもよいし、一度作ってしまえばあとは見栄えの問題でどうにでもいじれるので、初めての人でなにやったらいいのかわかんなければとりあえずplt.plot(”グラフ化したい数値の配列等”)を入れればいい。
③三行目:表示します。
対話型の人:plt.show()
対話型じゃない人:plt.savefig("test.png")
これで表示されたり、test.pngがつくれたり。「対話型じゃない人」用情報が薄かったのでたぶんみんなジュピターブックなんだと思います。
って具合にほら3行で終わり。
7 素人がはじめて使うmatplotlib4:ループでまわすときはclose入れよう。
ここが一番言いたかったこと。どこにも書いてなかったので2時間ぐらい止まってたんだけど、ループでまわすときは
plt.clf()
plt.close()
を最後に入れるっていうのが重要。そうしないと、どんどんグラフに線が書き込まれていくことになるので。
8 結果
3行でできるとか言いながら、タイトル入れて、凡例入れて、ほかの線もガシガシ描画したのが以下のグラフ。でも最初の図さえできちゃって、あと「Pandas 移動平均」とか「pandas ボリンジャーバンド」とかでぐぐって線引けば、こんな感じになるです。
画像でチャートつくることで、チャート流し見して、「よく見たら下げトレンドだった」とか排除できるので、効率的に銘柄選びが進められる。
でも、いまのところ、チャート見る側の眼がそんなにたいしたことないので、全部の答えあわせが必要な段階。
最終的には、チャートの画像診断をpythonでやろうかなという陰謀も遠い未来にあるんだけれど、まだまだあたしにはAIは無理かな。
SQL操作をいろいろ貼り付けてみるよ。
① ‘latlon2‘全列に任意の座標を入力する。
UPDATE `miseichiran` SET latlon2 = ST_POINTFROMTEXT('POINT(35.858470 139.656676)');
② ’latlon2’全列をNULLに戻す。
UPDATE `miseichiran` SET latlon2 = NULL;
③ distanceが一定数以下を順番に上位30件。
SELECT * FROM `miseichiran`
WHERE distance <= 0.1
ORDER BY distance ASC
LIMIT 0,30;
と、ここまでやったけど、st_distanceでパラメータが使えなかったり、練習用のXAMPP(MariaDB)だと限界があるのかも。データベースはなんとかなりそうだな、と感じ始めたので、データベースは本番環境で調整してみます。
XAMPPがGEOMETRYを読んでくれたよ。
【ここまでの経緯】
① APPSHEETで遊んでいたら、地図表示機能が面白かったので本気になる。
② APPSHEETでありもののデータでいい感じのアプリが出来る。
③ 自慢しようと思ったら、なんと3人以上に配布するとお金がかかることが判明。
④ じゃあいいっすよもうAPPSHEETなんてやめますよ。
⑤ でもちょっと周りの人に自慢してしまっていたのであとに引けなくなった。
⑥ じゃあいいっすよWEBで作ればいいんでしょ。
⑦ 当方20年前にHTMLを書いたことがある&今年からPYTHONで遊び始める程度。
⑧ 泣きながらぐぐり、PHPとMYSQLで思ってた感じのWEBアプリができそうなこと
がわかる。
⑨ 丸1日開発環境作りがうまくいかないまま時間が経ち、途方にくれたところで
XAMPPっていうのがあることを知る。
⑩ XAMPPとの戦い(1)CSVをインポートしてDBを作りはじめる(←今ここ)
【問題の所在】
当方やりたいことと弄りたいデータはあるが知識が皆無。
データベースなんぞ作ったことない。だけども目標は「APPSHEETでやったみたいにグーグルマップでウェーイ」をできるようにするっていうこと。
っていうわけで、まずはPythonフォルダのCSVが火を噴くぜっていう感じで火を噴かせようとしたところで、さっそく引っかかったんですよ。ジオメトリっていうのが読み込めないんすよ、CSVから。
【結論】
2日ぐらい悩んだ挙句、なんの苦労も無く、ヤフー知恵袋のこの記事の通りに(なんとなんの工夫も無くカラム名もパクって!)やったらうまく読めましたよ。カラム名までパクリましたよ。なんにもわかってないままやってやりましたよ。記事自体は2日前にとっくに見つけてましたがね、いや一応あったんですよ、当初は。恥と外聞ってやつが。でも最後なくなるね、あれは。
**************************************************************************
LOAD DATA INFILE 'misetest2.csv'
INTO TABLE miseichiran
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
(gmei,smei,gcode,scode,telnum,address,@latlon)
set latlon=st_pointfromtext(@latlon);
****************************************************************************
というわけで今日の目標は1万行のCSVをMySQLに乗っけるところまでで終わりにしようと思います。いやはずかしいっす、何の意味もわからないままSQL文コピペするって。なにこの@、みたいな。でも目標達成すればそれでいいの。目標は高く、志は低くでいきます。
たぶん15年ぶりぐらいにはてなに書いてみます。
はてなブログを選んでみました。
はてなダイアリー時代に書いていましたが、あまりブログになじまない職に就いて(現在も仕事は継続してますが)、なにかを発信することをやめていました。
コロナ以降、というかちょうどコロナと同じようなタイミングで、40歳になって、「あれ、このままだとなんのスキルもないおじさんになるぞ、ていうかなってるし。」と思ってしまい、じゃあなにかやってみないととおもって、いろいろ挑戦しているところです。
職場内ではそれなりの中堅どころ、このままなんとかやっていけばなんとかなるし、結婚もして子供もいるからかれこれ15年やっている仕事を離れるつもりはないんだけれども、常に新しいことにチャレンジしていかないと、なんだろう、老後困るんじゃないかな。
というわけで、今の職場に後何年いられるかわかりませんが、最低75歳ぐらいまでは何かをして働くんだろうし、働く以上は、それなりに稼げたらいいんじゃないんでしょうか。
つまり、いつかメイクマネーするためにブログっていうのをやってみようと思った、こういうわけです。
書いていて思ったことその1:太字使うとテキストサイトみたいだね。
書いていて思ったことその2:年金のシミュレーションをいつかしてみる。