ひとメモ

Pythonとか株とか

ニートに株がオススメの理由

ニートだけど株始めたら毎朝起きるのが楽しみになった

こんにちは。ニートです。
少し前から株取引を始めたのですが、それがとても楽しかったのでオススメしてみたいと思います。

早起きできる(起きる理由ができる)

ニートには仕事もなければ学校もなく、毎朝きちんと起きる理由がありません。
なのでついダラダラと夜更かしをして昼過ぎに目を覚まし、「自分はなんてダメ人間なんだ…」と思ったりしませんか?私はしょっちゅうしてました。

日本株取引は原則9時~15時(11時半~12時半までは休み)に行われます。
その1時間前の8時から、今この銘柄に何円でどれくらいの注文が来ているかわかる板というものを見ることができます。
なので大体その頃までには朝ごはんを食べて用意を済ませPCの前に座っていたいので、自然と朝7時くらいに起きられるようになりました。

これはいずれ社会復帰することを考えると、良い習慣ですね。そうでなくても健康的です。

社会勉強になる

「こんな会社があるんだー」と色々見たり、Yahoo!ファイナンスで平均年収ランキングを見たりして「へー」と思ったり楽しいです。
上場してるのだから大きな会社のはずですが、知らない会社だらけです。
身近なお店を運営してる会社の決算書を見て、「トリキ儲かってんなー」とか思ったり。
ニュースにも敏感になります。他にも色々。

働きたくなる(!)

ニートにはお金がありません。え?ある?いいっすね。
ある人はまあ別にいいんですが、お金ない人のほうが多いんじゃないかと思います。

私の場合親に甘やかされているので、たまにお金を貰ったりします。今はそれでちまちまと趣味と実(損)益を兼ねて勉強しながら取引してるのですが、やはり選べる銘柄にめっちゃ限りがあります。

普通は100株単位(1000株のことも)で取引されるので、1万円なら手数料を無視して100円以下の銘柄なら買えることになります。
今見たら28銘柄存在しました。ちなみに東証全体の普通株は3550銘柄ありました。1%以下ですね。(2017/8/2現在)

そして、あると言えばあるのですがそういう銘柄はワケありのことも多く、あんまりオススメできません。
私は初めて買った株が21円だったのですが、見事に高値づかみで後日損切りしました。手数料を含めると888円の損でした…。
1株ずつ買えるサービスもあるのですが、手数料が割高になったり取引時間が限られているなどあるので、やはりある程度まとまったお金があった方が良いです。
(1万円以下の少額でちまちま勉強するにはワンタップバイが今のところ一番良さそう。また気が向いたら証券会社の比較を書きます。)

私はメンタル病気持ちというのもあり長く働いてないのですが、働いて50万くらいは種銭を貯めたいなぁと求人を探しています。

社会参加できる

少額とはいえ市場にお金を投入し、証券会社にも手数料を払うということは経済活動に他なりません。人間誰でもできる範囲のことしかできないので、できる範囲のことやりながら胸張って生きましょう。
銀行に預金しているならまだしも、タンス預金なんかしちゃうとデフレで日本がヤバイ。らしいので生活に影響のない範囲でもっと多くの人が投資したらいいのになぁと思います。

(おまけ程度)勝ち組になれる可能性ができる

これはちょっと、「そういうこともあればいいなぁ」くらいのほのかな希望でお願いしますね。あんまり鼻息荒くして無理すると破産しますからね。
ニートの人は普通の社会のレールからは一旦はずれてるわけで、人にもよるとは思うけど「もうこの人生はダメだな…」と思ってたりしませんか?そういう気持ちを抱えたまま生きるのはとても辛いと思います。

株取引でいきなり億万長者になるってのは、まずないです。だけど例えば人間関係が辛くてどうしても長く働けないって人が、家でできる仕事として株取引するのはありかもしれません。
もちろん大損ぶっこいたら辛いと思いますが、辛さの質が違いますよね。言っておきますけど借金抱えるような無茶なことはダメですよ。
それで食べていくってのはまた大変な道だと思うし、どっちみちある程度の種銭を手に入れるのに働く必要はあります。

でも希望があるっていいよね!一緒に頑張りましょう~


人生で初めて株を買いました 7/14取引記録

「株始めました」って、「LOVEはじめました」に似てる

Python使って何かしたいと思いつつも、何もできてないので最近興味のある株取引について書いてみようと思います。

なけなしの1万円

「まず働いて小金を貯めるぞー!」と一瞬思ったものの、派遣会社の電話面接の時点で心が折れました。あと落ちました。
何でも病気のせいにするのもアレですが、私は双極性障害で学歴・職歴がズタボロなのでまあ雇われないんですよね。なので障害者手帳を取って、作業所的なところで働こうと思ってますが、諸々の手続きに時間がかかるのでその間は勉強しておきます。
29歳無職にはまとまった種銭がないので、お財布にかろうじてあった1万円を勉強代として使います。元は親から貰ったお金ですが…。

バーチャル取引も楽しいけど

トレダビを7/6から始めて、ちびちびと利確できたり損切りしたりとやって、今評価損も含めて92,851円マイナスになってます。トレダビは1千万円から始まるので、0.92%くらいの損かな。
実際に取引を始めるまで、なるべくたくさん失敗しておきたいからまあいいかなって感じです。

でもバーチャルだと現実には持ってない金額を動かすし、どうしてもただのゲーム感覚なんですよね。
現実で9万円強も損したらかなりのうつ期に入ってると思うし。社会勉強にはなって楽しいけど。
というわけで現物のお金で取引するのにも慣れておきたくて低位株(安い株)を買うことにしました。

1万円で買える銘柄はかなり限られる

大体100株か1000株で1単元なので、手数料無視して100円(1000株1単元なら10円)までの株を買える事になります。かつPERが低めであるとか、自己資本比率が高めかとか、本を見ながら良さそうな銘柄を探すわけです。
単元数以下の株を買うサービスもあるけど、手数料が割高なのでうまみなさそう。

そして見つけた銘柄がランド(8918)

不動産系の会社です。7/13の終値が18円。
7/13の15時に決算短信が出たところで、売上高が前年同期比で305%とあと太陽光発電の新しい事業にも取り組んでいきますいい感じやでみたいなことが書いてあったので、「これはめっちゃ上がっちゃうんちゃーん?」と思いました。ストップ高ってやつ?とか思ってました。

ただヤフーの掲示板見てると、せいぜい25円くらいまでしか上がらんみたいな意見が散見されて、前と同じで寄り天(始値が一番高くて後は下がる)だ、と言ってる人もいました。
そこで改めて過去のチャートを眺めた感じ、確かに寄り天の恐れもあるなと思ったので、始値から4円上がったら成行注文(カブドットコムにはこういう注文方法がありました)にする事にしました。
そこまで上がらなければ落ちるだけだから買わないでおこうという判断です。

いざ購入

やっぱり少額であっても現実のお金を使うとなると緊張しますね。夜は中々寝付けず、朝もいつもよりかなり早く目が覚めました。
8時になったら気配値(いくらでどれくらいの数量の注文が入ってるか)が見れます。9時が近付くにつれてどんどん大きくなる数字…。今思えば売り優勢な感じだったのですが、「これ買えないのでは?(その後どんどん上がるのでは)」と思って、始値+4円で注文入れてたのを始値+2円に、その後更に不安になって始値+1円まで条件を緩めてしまいました。

そして9時。始値は21円でした。
始まったー!と思ったらすぐ約定。23円まで上がりましたが、どんどん落ちて終値は17円。
400円の評価損ですね。あと手数料が96円。

来週に期待、でなければ塩漬け

今日の出来高がかなり多くなったので注目を浴びて、来週もしかしたら少し上がるかもしれないです。そうでなくてもしばらく持ち続けたら、上がるかも?上がったらいいなー。

反省点

買うこと優先になってしまった。

どんどん値を上げていく流れじゃなければ買わない方がいいと思って始値+4円で成行注文と決めたのに、ついつい買いたい欲に負けてしまった。結果、買えたけど下がってしまった。
後場ほとんどの時間を18円から19円で推移してたので、焦ってさえなければ18円で買えただろうなー。買うべきかどうかは別として。

情報不足

安く株を大量に持ってて、それを売りさばきたい会社(?)があるらしい。それで融資を受けたとかなんとか。
あまりに大量だから、最後まできっちり売り切れるように株価があげ過ぎないようにしてるのかもしれない。それでももう少し高めになっても良さそうなもんだけど、ちょっとよくわからない。
その会社が持ってる株が残り少なくなってきたら上げてくるのかもしれない。

それはともかく、それを知ったのが注文約定してからというのが問題で、それを知るきっかけは昨日のうちにあったのに上がる上がると思って重要視せず調べもしなかった。

そもそもその会社を別に好きじゃない

不動産のことよくわからない。あと自然災害増えてるし、地方に限定された不動産系の会社って、分散投資の1銘柄ならいざ知らず単独で持つ銘柄としてはリスク高いのでは?わからん。今持ってるのはリスクというほどの金額じゃないからいいけど。
やっぱり株価が多少下がっても、この会社が好きだから応援したいと思えるような株を持ちたい。
現状で買える低位株では中々難しいかもしれないけど、見つからないなら無理に買わないようにしたい。

手数料がかかった

今回はカブドットコム証券を使って96円かかった。時間分散して95円100円105円みたいに3回に分けて注文して全て約定したら288円もかかってまう。
当面は1日に10万円以上の取引する予定ないので、1日10万円以下なら手数料無料の松井証券を使う。
松井証券の口座開く手続きはしたから来週には使えるだろうに、ここでも今すぐ買いたい欲に負けてしまった。

うつ期を抜けました。そのきっかけ

久しぶりにうつ期を抜けました

私は双極性障害です。
人生で何度も何度もうつ状態躁状態を繰り返しています。(↓以前ツイートから作ったグラフ。大きな波があるのがわかります。)

私の場合、躁はあんまり酷くないのでまだマシな方です。でも辛いもんは辛い。

6月の頭くらいに、ここしばらく(2〜3ヶ月くらい?)悩まされたうつ期から抜けました。やったー!
そのきっかけがかなりはっきりしていて、他の人の役にも立つかもしれないなと思ったので書き残しておきます。

どこかのブログでオススメされていた一冊の本

きっかけは一冊の本でした。同じく双極性障害を持ってる方のブログだったと思いますが、とてもいい本だと紹介されていました。それがこちら→斉藤一人の絶対成功する千回の法則
うーん、ちょっとうさんくさいタイトル…笑
有名ですよね、斎藤一人さん。私はこの本で初めて読みました。
結果的に、これを読んで書いてあることを実行して即日(!)うつ期から抜け出せたので、読んで良かったと思います。

どんな内容なの?

もしこういう自己啓発系の本がお好きなら、そこまで目新しいことは書いてないです。
やる事は簡単、「幸せだなぁ」と声に出して何度も何度もつぶやくだけ! 心を込めていう必要はないそうです。だからあなたがもし「自分はなんて不幸なんだろう」と思っていても大丈夫。
重要なのはその回数です。口癖のようにしょっちゅう言います。それが千回を越えた頃から変わってくるとのことでしたが、私はそこまでいかんでもラクになれました。
私は実家暮らしなので、家族に聞かれて怪しまれないよう自分だけに聞こえるか聞こえないかくらいの音量でつぶやいています。

この本を読んだ日、ソファに寝転んで「ほーん、なるほどね」などと思いながらブツブツブツブツと「幸せやなぁ」と言い、しばらくして寝落ちして、目覚めたら何だかとてもスッキリした気持ちに!

オススメですが

一応言っておくと、そもそもこういう本を読もうと思える時点で、またそれを実行できる時点で私の調子はかなり元に戻ってきていたのだとは思います。そしてこういうアファメーション、自己催眠的なものが好きという下地があって初めて劇的な効果があったとも言えます。
でもとにかく私はうつ状態の、焦りだけがあって何も楽しいと思えなくてイライラして死にたくて…、そんな気持ちを抜け出せたら何でも良かったし、今回うつ期を抜けるのに助けられたのは間違いありません。

もしかしたらこうやってオススメしても、誰にでも良い結果が出るわけじゃないかもしれません。でももしたった一人にでも、ラクになるきっかけを見つけてもらえたらないいなーと思います。
胡散臭いけど、別に金もかからんし他人に聞こえないようにしたら恥ずかしくもないので是非やってみてね。

ちなみに…

本を読んで良かったなーとは思うものの、時代錯誤な男女観?みたいなものが「うーん…」という感じでした…笑
古い本だから仕方ないかな?

そういうの無理そうな人は↓とか読めばいいんじゃないかなぁ。とにかく大事なのは頭の中で考えるだけじゃなくて声に出すことな気がします。コトダマってやつね。 「¥ 潜在意識でお金を得る ¥」初代スレより 【199メソッド】 | 引き寄せの法則 【LOAの部屋】

あと、辛いのにまだ病院行ってない人は、病院行ってしっかり治療しましょうね。まずは服薬が大事。
大丈夫やで〜


Pythonで作ったTwitterのbotをHerokuで動かす

目次

botを作ったはいいけど、それを常に動かしておく方法がわからない…。」→Herokuで解決!

Twitterbotを作るのは割と簡単なのですが、それを常に動かしておく方法が少しわかりにくいです。
なので今回はHerokuを使った定期投稿のやり方を説明していきます。
この記事ではコードやAPIキーの取得方法などの細かい説明を省いているので、わからなければ過去記事を参照してください。

hwhw.hatenablog.com

環境によって細かいところが違うので、詳しくはHerokuの公式のチュートリアルを見てください。英語ですがわかりやすいです。
Getting Started on Heroku with Python | Heroku Dev Center

Herokuにデプロイするまでの準備

Herokuのアカウントを準備する

Cloud Application Platform | Heroku
上のリンクへ行き、Herokuのアカウントを取得しておきます。制限はありますが、無料で使えます。ただしアカウントの認証にクレジットカードの登録が必要になります。

HerokuのCLIコマンドラインインターフェース)をインストールする

ほとんどの作業はターミナルを使用して進めます。そのためにまずCLIをインストールします。

公式のチュートリアルを見て進めてください。
(ラズパイの場合ですが、OSはLinux系のRaspbianなのでUbuntu/Debian系のやり方で進められるかなと思ったら無理だったので、standalone用のやり方でインストールしたらうまくいきました。
以下のようにOSはlinux, archはarmに置き換えて指定しました。forbiddenエラーみたいなのが出たらsudoで実行します。 )

wget https://cli-assets.heroku.com/branches/stable/heroku-linux-arm.tar.gz  
mkdir -p /usr/local/lib /usr/local/bin  
tar -xvzf heroku-linux-arm.tar.gz -C /usr/local/lib  
ln -s /usr/local/lib/heroku/bin/heroku /usr/local/bin/heroku

インストールできたらheroku loginでログインしておきます。

作業用フォルダを作る

ターミナルで作業用フォルダを作って、そこに移動しておきます。

mkdir 作りたいフォルダ名
cd 上で作ったフォルダ名

用意するファイル

作ったフォルダの中に、以下のファイルを入れておきます。
それぞれの中身は順番に説明します。  

  • Procfile
  • runtime.txt
  • requirements.txt
  • index.py
  • tweet.py

Procfile

Herokuにこれを動かせばいいんだよと指示するファイル。拡張子なし。

web: python index.py

runtime.txt

Pythonのバージョンを書いておくファイル。

python-3.6.1

requirements.txt

必要なモジュールを書いておくファイル。ここに書いておくと、pipからインストールしてくれます。
virtualenvの仮想環境で必要なモジュールをインストールして、pip freeze > requirements.txtとしておくと簡単。
サンプルのbotではこんな感じ。

bottle==0.12.9
certifi==2017.4.17
chardet==3.0.3
idna==2.5
oauthlib==2.0.2
requests==2.17.3
requests-oauthlib==0.8.0
urllib3==1.21.1

index.py

botとは直接関係ないけど、動作を安定させるための(?)ダミープログラム。

#coding:utf-8
import os
from bottle import route, run

@route("/")
def hello_world():
        return "hello world"

run(host="0.0.0.0", port=int(os.environ.get("PORT",5000)))

tweet.py

botの本体プログラム。これは後述するherokuのスケジューラで定期実行します。

# coding: utf-8 

from requests_oauthlib import OAuth1Session
import json
import os
import random
import datetime

twitter = OAuth1Session(os.environ["CONSUMER_KEY"],  os.environ["CONSUMER_SECRET"], os.environ["ACCESS_TOKEN"], os.environ["ACCESS_TOKEN_SECRET"])

tweets = ["文言1","文言2","文言3"]

randomtweet = tweets[random.randrange(len(tweets))]

timestamp = datetime.datetime.today() + datetime.timedelta(hours=9)
timestamp = str(timestamp.strftime("%Y/%m/%d %H:%M"))

params = {"status": randomtweet + " " + timestamp}
req = twitter.post("https://api.twitter.com/1.1/statuses/update.json", params = params)

デプロイする

Gitを使います。

heroku create
git add .
git commit -m "first commit"
git push heroku master

TwitterAPIキーはセキュリティ上、プログラムに直接書かずに環境変数に設定します。***部分を自分のbotAPIキーに置き換えてください。クオーテーションマークはいりません。

heroku config:set CONSUMER_KEY=*** CONSUMER_SECRET=*** ACCESS_TOKEN_KEY=*** ACCESS_TOKEN_SECRET=***

まず手動で動くか確認

heroku run python tweet.py

動いたら次へ。

スケジューラを設定する

これを設定して初めてbotが自動で動くようになります。

$ heroku addons:create scheduler:standard
$ heroku addons:open scheduler

開いたらAdd new jobを押します。
すると新しいタスクができるので、$の後にpython tweet.pyと入力し、頻度などを設定しsaveすれば終わりです。やったね。

botの内容を変更する時は

ローカルで変更してから、あげ直します。
botのフォルダに移動してから下記のような感じでOK。詳しくはgitでぐぐーる。

git add 変更を加えたファイル
git commit -m "変更内容を簡潔にコメント"
git push heroku master

参考サイト

簡単!Herokuで動くTwitter botをPythonで実装する - Qiita
Getting Started on Heroku with Python | Heroku Dev Center
Gitを使ったバージョン管理【Gitの基本】 | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ

おまけ(自分用メモ:virtualenvの使い方)

virtualenv hoge
source hoge/bin/activate

広告
2週間無料で見放題!DMM見放題chライト

最近口内炎があんまりできない

口内炎が最近できてないことに気付いて調べてみた

こんにちは。石巻貝の口は口内炎に似ていると思う、ひと(@hito_waft)です。
昔はしょっちゅう口内炎ができて痛い思いをしていたのですが、「最近はあんまりできないな?」と思ったので、Twitterでいつ頃からできてないのか見てみました。

グラフにするとこの通り


どこかで「フロスや歯間ブラシを使い始めてから口内炎ができなくなった!」という話を見たので、もしかしてそれが関係あるのかと調べました。
それぞれの単語が含まれるツイートを月ごとに集計してグラフにしています。

ただし口内炎ができた時は「口内炎痛い」などとツイートするのに対し、フロスや歯間ブラシは使い始めてからは毎日使っているので、いちいちツイートしません。なので使い始めた時期を特定するためにだけ見ています。

これを見ると、確かに2014年頃から口内炎ができていないようです。(「ツイートしてないだけでは?」と思うかもしれませんが、私は口内炎ができたら大体いつも痛い痛いと騒ぎます)
一方関係があるかと思ったフロスや歯間ブラシは特に関係なさそうです。歯ぐきの調子は良いですが(^з^)-♪

2014年から何が変わったか?

「じゃあ、何で口内炎できなくなったのかなー」と2014年の事を考えてみました。すると私にとってかなり大きなできごとがあったことがわかりました。
それは… メンタルクリニックへの通院開始!です。(私は双極性障害持ちです)

意外ですねー。そうでもないですか?
病院に通って薬を飲みだして、すぐに効き目が現れたわけではなかったのですが、それまで「自分がクズだからうまく社会に馴染めないんだ…」と思っていたのを、先生に「辛かったな。病気がそうさせてるのであって、自分が悪いんじゃないんやで」と言ってもらい、救われたように感じたのを覚えています。

それでストレスが大幅に減ったのかもしれませんね。はたまた薬飲んでる影響かもしれませんし、ただ私が年齢を重ねたことによるのかもしれません。わかりません。
でも面白いなーと思って記事にしました。口内炎に困ってやってきた人には役立たない記事でしたね。こめんね。


この記事のようなグラフの作り方↓ hwhw.hatenablog.com

口内炎ができた時は、ちょっと怪しいかなくらいの段階ですぐにこれを貼って寝る。すると翌朝口内炎が育っていない!2日か3日貼るとそのまま消えてくれます。以前はめっちゃお世話になりました。 ↓
【指定第2類医薬品】トラフル ダイレクト 12枚 ※セルフメディケーション税制対象商品

無料のはてなブログから違うブログサービスに引越す時、役立つかもしれない方法

無料のはてなブログからよそのブログサービスへの引越しは少し面倒

こんにちは。牛丼より豚丼派のひと(@hito_waft)です。
表題ですが、無料のはてなブログからエクスポートしたファイルを、そのまま別のブログサービスにインポートすると、はてなキーワードのリンクタグも一緒にくっついてきます。無料で使わせてもらってるので文句を言える立場ではないのですが、「さすがによそのブログに引越してまで付いてきていらんわい…」ということで簡単にリンクを外せるプログラムをPythonで書きました。
それをはてなブログに載せるのもどうかと思いますが、某ブログサービスが色々ややこしくて引越しをやめたのでここに書きます。はてなブログいいよね!

コード

# coding: utf-8

# In[1]:
import re

# In[2]:
regex = re.compile(r'<a class="keyword" href=\"(.*?)>(.*?)</a>')


# In[3]:
list = []

with open("/hoge/hoge.txt", "r") as f: 
    for text in f:
        words = re.sub(regex, "\\2", text)
        list.append(words)


# In[4]:
with open("/hoge/hoge_別の名前.txt", "w") as g:
    for out in list:
        g.write(out)
        
print("OK")

使い方

  1. In[3]の/hoge/hoge.txt部分をはてなブログのエクスポートファイルのパスに書き換えます。
  2. In[4]の/hoge/hoge_別の名前.txt部分には、はてなキーワードのリンクを消した後のテキストを格納するファイルのパスを置きます。先にファイルを作らなくてもプログラムを実行した時に勝手に作ってくれるので大丈夫。元のファイルにしてもいいんですが、もし予期せぬ出力のトラブルがあると面倒なので別のファイルを指定しています。間違えて関係ない他のファイルに上書きしてしまわないように気をつけてください!何か起こっても私は責任を取れません…
  3. 出力したテキストファイルを、中身を念のため確認してからインポートしてください。

詳しく説明

  • In[1]では正規表現を使うためのreモジュールをインポートしています。
  • In[2]では使用する正規表現コンパイルしています。はてなキーワードへのリンクは
    <a class="keyword" href="http://d.hatena.ne.jp/keyword/csv">csv</a>こんな感じになっています。(CSVへのリンク例)
    なので、<a class="keyword" href="ここはそれぞれ違う">hoge</a>という形のリンクを、hrefの中身が違っていてもきちんと抜き出せるように正規表現で指定しているわけです。正規表現についてはかなり奥が深いので、詳しくは公式ドキュメントなどを見てください。
    ちなみにここで使っている変数名regexは英語で正規表現という意味です。だからreモジュール。たぶん。
  • In[3]では、まず変換したテキストを入れる空のリストを作っています。続いてエクスポートしたファイルをwith文(こうすると後でclose()しなくて良い)を使ってf(as fの部分)という名前で開きます。その中の不要なリンクをre.subを使って置き換えています。words = re.sub(正規表現, ここに指定した文字列で置き換える, 対象のテキスト)の形で指定しています。
    第一引数の部分は直接正規表現を指定してもいいのですが、何度も同じ表現を繰り返し使う場合はコンパイルしておいた方が実行速度が速いそうです。あと見た目もスッキリわかりやすいですね。第二引数は上のコードの中では正規表現の中に(.*?)というグループが2つあるのでその2つ目という感じです。それをlistに追加しています。何度も言うようですが正確に知りたい人は公式ドキュメントなどを見てください。
  • In[4]でそれを新しくファイルに書き込んで終わりです。何となく、終わったら画面にOKと出力されるようにしました。インポートする前に出力がおかしくなっていないか一応確認してください。

参考

https://docs.python.jp/3/library/re.html(公式ドキュメント)
http://qiita.com/ao_love/items/6b5299b06214348c03a1
http://www.aipacommander.com/entry/2014/06/17/184220
http://springstar.hatenadiary.jp/entry/2017/01/22/キーワードリンクを消してすっきり。(はてなブ


広告

Pythonを使ってツイートをグラフにしてみよう!(月によって違いはあるのか?編)

こんにちは。昔はたけのこ派だったけど、最近は中立派のひと(@hito_waft)です。

前回自分のツイートから単語を抜き出して、簡単にグラフ化する方法を紹介しました。

hwhw.hatenablog.com 

前回は全ての期間を対象にグラフを作りましたが、今回は月によって単語の出現頻度に変化があるのか調べてみたいと思います。今回使うライブラリはpandas、numpy、matplotlibの三つです。なければpip3 installしておいてください。

(2017/4/12:追記あり)

 

今回作るグラフの例

こちらをご覧ください。

f:id:hwhw:20170406110349p:image

私が愛してやまない[Alexandros]の川上洋平さんについて言及したツイートの数を、月毎に平均したグラフです。6月から8月にかけてツイートが増えていることがわかります。これはたぶん、夏フェスなどでメディアへの露出が増え、それを見てかっこいいかっこいいとわめいていたのだと思います。

このように、全期間で作ったグラフだけ見ていてもわかりにくい季節の傾向などが可視化できるようになります。使い方はあなた次第。

 

早速コードを見てみましょう

gist.github.com

 

とりあえず使って見る人向け手順
  • 13行目の"/hoge/tweets.csv"となってるところを、自分が保存した全ツイート履歴のCSVファイルのパスに書き換えます。
  • 続いて20行目にキーワードを入れます。前回はいくつか同時にグラフを出すことができましたが、今回はややこしいので一度に一つだけ。{"label":"keyword"}の形式でlabelの所には凡例に出す名前を入れます。ここは文字化けするのでローマ字で。keywordにはツイートから抜き出したい単語を入れます。表記揺れ(猫、ネコ、ねこ等)は|(縦棒)で区切って入力します。例では"洋平|ようぺ"となっていますね。

そして実行するとグラフが出ます。色々キーワードを変えて遊んでみましょう。

 

もう少し詳しく解説

In[3]ブロックまではほぼ前回の記事と同じなので割愛します。気になったら前の記事を参照してください。

In[4]ではまずgraghという名の空リストを作っています。ここにグラフ用のデータを入れていきます。

forループでは、データフレームのインデックスの中で1月なら1月のデータだけ(2010-01,2011-01,2012-01...)を抜き出してmean()で平均を出し、graphリストに追加しています。それを1月から12月まで12回繰り返しています。

これでデータはできましたが、リストのままではグラフにできないようなので、これをpandasのデータフレームに直しておきます。ついでに簡易なラベル(1〜12)を付けています。

そして棒グラフでプロット。kind="bar"の所を"line"に変えれば折れ線グラフになったりします。このグラフの設定は色々細かくできるようですが、私はあんまり調べてないので興味のある人は自分で調べて試してみてください。

 

追記:コメントアウトしてある部分を外すと、キーワードを含むツイートそのものを出力するようにしています。数が多いと省略されますが、雰囲気くらいはつかめます。

 

おまけ:こんな可愛い星空みたいなグラフもできました。一つ一つの星は、実はかなりネガティブな言葉をツイートした数ですが…笑

f:id:hwhw:20170406145915p:image