読者です 読者をやめる 読者になる 読者になる

ひとメモ

Pythonを勉強して主にラズパイで何かするブログ

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

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

こんにちは。石巻貝の口は口内炎に似ていると思う、ひと(@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

 


Pythonで自分のツイートをグラフにして分析してみよう!(改訂版)

 こんにちは、彼氏いない歴9年のひと(@hito_waft)です。

以前こんな記事を書きました。 

hwhw.hatenablog.com

出てくるグラフは同じなんですが、もっといい感じのプログラムで簡単にツイートをグラフにできるようになったので記事にしておきます。

 

この記事を読んでできること

f:id:hwhw:20170330020229p:image

 上のグラフを見てください。私はロックバンドのサカナクションと[Alexandros]が好きなのですが、それぞれのボーカル、山口一郎さんと世界一かっこいい川上洋平さんについてツイートした回数を月ごとの集計でグラフにしたものです。(名前が入ってるツイートだけ)

 2011年の9月頃からサカナの一郎さんのファンになり、2012年の9月頃から[Alexandros]の洋平さんのファンになり、その後は完全に[Alexandros]派になった様子が見て取れます。

 大きな波が来てるのはたぶんライブに行った時か何かでしょう。

こんな感じのグラフを簡単に作ることができます。楽しいよ。

 

前提

Python実行環境は整っているものとします。pandasとmatplotlibがないならインストールしておいてください。

 あらかじめ全ツイート履歴をダウンロードして解凍しておいてください。そのうちのCSVファイルを使います。

 

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

gist.github.com

 すぐ使う人向け、使い方解説

12行目のhoge/tweets.csvとなってるところを自分が保存したツイート履歴のCSVファイルのパスに置き換えます。

19行目では{"key1":"value1", "key2":"value2", ...}の形式で、ツイートから抜き出したい単語を指定します。keyのところにはグラフの凡例に出す名前を入れます。※日本語だと文字化けするのでローマ字で。valueのところには抜き出したい単語そのものを入れます。ここでは日本語で大丈夫。表記揺れがあるものを同時に抜き出したい場合、|(パイプ)で区切ります。猫、ネコ、ねこ等を一緒に抜き出せます。(例では洋平|ようぺ)

 そして実行!するとグラフが出てきます。色々言葉を変えて楽しみましょう。

 

詳しく解説

In[1]のブロックでは使うライブラリをインポートしています。

 

In[2]ではCSVファイルを読み込んでいます。その際parse_dates= オプションでタイムスタンプを日時情報として扱えるようにしています。

次の行でタイムスタンプをデータフレームのインデックスにし、その次の行でツイートした内容が入っている"text"以外の列(個々のツイートのID等)をなくしています。この段階ではツイート内容にタイムスタンプインデックスがついただけのデータフレームになっています。

 

In[3]ではディクショナリ形式でキーワードを指定しています。for文ではその指定したキーワードをitemsメソッドで同時に取得し、keyを列の名前としてデータフレームに列を追加しています。その中身はvalueで指定したキーワードがtextに含まれるか含まれないかの真偽値シリーズです。

ここまできたら、ツイートの内容は邪魔になるので(残っていると文字列なのでsumできない)dropメソッドで落としておきます。axis=1というのは列を扱うというオプションです。指定しなければ行(axis=0)に対して操作が行われます。

 

In[4]ではインデックスにしたタイムスタンプを月毎にまとめ、それぞれの列の値も合計しています。真偽値はTrueが1、Falseが0として扱われるのでそのままsumメソッドで合計できます。そしてプロット。グラフができました。やったね。

 

 

全部この本(Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理)を読んでできるようになりました。

Amazonではそんなに評価高くなかったので、どうかなーと思ったのですが、めちゃめちゃ役に立ちました。pandasの作者さんが書いたそうな。pandas愛を感じます。Twitterのデータ取得は認証がいるようになったので、できませんでしたが、それ以外は特に問題なく動きました。

こういう本を一冊通読しておくのは自分の能力の底上げになりますね。情報の一つ一つはググれば出てくるかもしれませんが、それで行ったり来たりする時間の無駄を考えると、読んで良かったなと思います。

今まで入れるだけ入れてたけど使い方がよくわからなかった、IPythonやjupyter notebookをこの本を見てから使うようになったのですが、もうね、めっっっっっちゃ便利です。特に私のように試行錯誤を繰り返す初心者には心強い味方になってくれるでしょう。みんなも使うといいよ。

 

どんな化粧品を使ってもニキビが治らない?だったらコレ!

f:id:hwhw:20170423234603j:image

こんにちは!

化粧品のおすすめっぽいタイトルでしたが、違います。私のおすすめはただ一つ、皮膚科へ行きましょう!ということです。

そんなもん散々言われとるかわかっとるわい、と思われるかもしれません。それはそうと、ちょっとこれを見てください。

https://www.dermatol.or.jp/uploads/uploads/files/guideline/acne guideline.pdf

尋常性痤瘡(ニキビ)の治療ガイドラインです。5年で改訂らしいので、2016年版が最新です。(2017年現在)

 

ガイドラインの内容は?

治療ガイドラインなので、お医者さんがより良い治療をするために読むものですね。ですが、私たちにも役立ちます。2ページ目の推奨度の分類を見てください。ざっくり言うと、より科学的に効果があると認められている治療法が推奨度が高いということです。当たり前っちゃ当たり前ですね。

C1以上であれば推奨される治療で、Aに近付くほどよりおすすめの治療ということがいえます。

 

それを踏まえて6ページの表を見てみましょう。まずビタミン薬内服が有効か?という項目では、推奨度C2となっていますね。あれ?ニキビにはビタミンってあちこちで言われてるけどそうなんですね。(もしお医者さんに処方された場合は指示に従ってください。あくまでもガイドラインなので個人差があるはずです。)

 次に、痤瘡用基礎化粧品の使用が有効か?という項目があります。こちらは推奨度C1となっています。こちらは一応選択肢の一つとして推奨されるようです。

 では表の他の部分も眺めてみてください。推奨度A(強く推奨されている)がいくつか見つかります。これは処方薬ですね。医者に行かないと手に入れることができません。

 

統計が大事

この推奨度が何によって決まっているのかというと、エビデンス(証拠)のレベルです。これもガイドラインの中に説明がありますが、すごく簡単に言うと統計的に答えが導かれている物はそうでないものより信用できるということです。さらにその研究をいくつもまとめて分析したものが、もっとも質の高いエビデンスとして扱われます。

 

ニキビ用化粧品もいいけれど…

私も色々なニキビ用化粧品を試してきました。効いた!と思ったものも、全然効かない…と思ったものもあります。

そもそも、自分の肌の調子は季節の変化(花粉や気温)、月経の周期等により変化するものです。しかもニキビの原因は人それぞれ。

なので、その化粧品が本当に効いているのか、あるいはただの体調の変化で肌の調子が良くなったのかは統計の知識を持って調べてみなければわかりません。

化粧品が悪いとはいいません。大抵の場合、化粧品の開発でも限られた範囲(薬事法)でもより良いもの作ろう、と研究者の方々が頑張っているのだと思います。ですが、より効果があると学術的に認められているものがあるのだから、まずそれを使ってみるのが一番良いでしょう。治ったらなんぼでもパッケージが綺麗だとか、香りが良いとかの好きな化粧品を使えばいいのです。まずは治療が先決!

残念ながら皮膚科に行って、薬を塗れば3日でニキビが治りました!というようなものではなく、しばらく通院を継続することが必要な場合がほとんどだと思います。継続するためには、何よりも信頼できるお医者さんを見つけることが一番大事です。なので皮膚科に行きましょう。大丈夫、きっと綺麗な肌になりますよ。

 

 

 〈おまけ〉

この記事を書いたのは、実は「統計学が最強の学問である」という本を読んで感銘を受けたからです。

「統計って聞いたことはあるけど、具体的にどういうことをしてるのかよくわからない…」という状態でしたが、本を読んで「なるほど統計学って最強だな!」となりました。今後の人生の指針に。

 

Raspberry Pi 3を二ヶ月弱使ってみての雑感

ラズベリーパイ(以下ラズパイ)とは

ラズパイの使い方は人それぞれです。1万円以内で買える小型のLinuxパソコンとしても使えるし、今流行りのIoTに使うことも。元々子供のSTEM(Science, Technology, Engineering and Mathematics)教育用らしいです。なので色々プログラミング言語が入ってたりします。普通のPCと違うのは、GPIO(General Purpose Input/Output)ピンというものが付いているところです。汎用インプット・アウトプットピンですね。このピンを通して電気を流し、自分で作った外部の機器等を操作したりセンサーからの情報を読み取ったりできます。楽しい。

 

元々入ってるソフト

OSは自分で入れます。ラズパイ向けのRaspbianというやつが良いでしょう。以下Raspbianに元々入ってるソフトで、私が触ったやつ。

 使い心地

Python、Scratch、Sonic Pi、Minecraftは特に問題なく動作しました。

Minecraftは普通のと違って敵が出てこないみたいです。あんまりやってないから知らないけど。

Chromiumはちょっと重め。

Libre Officeの表計算ソフト(エクセルみたいなの)は、私の全ツイート(80000程度のツイートデータ)を読み込んだらめちゃ重くなったので使い物になりませんでした。

Mathematicaはそもそもあんまり使い方がわかってないのですが、本気で使うにはラズパイでは重すぎると思います。でも何となく楽しいことができそうな雰囲気があります。

 

ラズパイって何ができるの?

人それぞれですが、私は今のところこんな感じの流れで遊んでいます。

  1. IoTやりたい。電子工作!とりあえずLチカ!
  2. Scratchおもろいやん!
  3. Sonic Piたーのしー!
  4. Pythonでツイート分析(最近ずっとこれ)
 
 電子工作

私は「何かロボとか作りたい…」と思って行った本屋さんで存在を知りました。なので最初はどちらかというと電子工作寄りの目的でした。電子部品売ってるお店に人生で初めて足を踏み入れたのですが、あのワクワクったらなかったです。行ったことない人は、行ってみるといいと思います。東京ならアキバ、大阪なら日本橋

で、買ってきてしばらくは電子工作界の'hello,world!'ことLチカ(LEDをチカチカ点滅させる)をやったりしてました。楽しい。でも電子工作やるなら何らかのセンサーがあった方が絶対楽しいと思います。私はまだ買ってないので、今は電子工作よりPythonの勉強してます。

Scratch

ブロックを積み重ねてアニメーションとかゲームとか簡単に作れます。直感的に操作できるので、子供でも楽しく遊べそうです。プログラミングの基礎もしっかり勉強できます。しかも出来上がった作品の公開がとても簡単。公式サイトにアップできます。私もごくシンプルなゲーム(のようなもの)を作って公開しましたが、外国の人がコメントくれて嬉しかったです。子供がいるならかなりオススメ。

Sonic Pi

丁寧なチュートリアルがあるので、それっぽい音楽が簡単に作れます。サカナクション好きなら楽しめそう。何となく。

Python

今はPythonで遊んでます。他の言語と比べてかなり取っつきやすいと思います。今流行りのデータ分析にもオススメってあちこちに書いてたし。

 

思うこと

何かインストール中に別の作業(Pythonで書いたコードを動かしたり)すると、フリーズしてしまうことが何度かありました。値段が値段なので、仕方ないなと思ってます。あと、電子工作で遊ぶならGPIOピンの部分だけふたが開くタイプのケースを買いましょう。私はうっかりと違うのを買ったので、何か繋げる時はふた全開です。

 なんだかんだラズパイを買ってから、色々と勉強する気になったので本当に買ってよかったです。ラズパイ ゼロというもっと安くて小さいやつ(税込702円だとか)も最近日本でも買えるようになったみたいなので、みんなも買って遊びましょう。それでは!

 

おすすめの本↓ 

はっさく剥くならムッキーちゃん

みなさん、はっさくは好きですか?私は大好きです。冬の温州みかんが終わり、寂しくなった心の隙間を埋めてくれるのが??そう、はっさくですよね。

はっさくライフの向上に、この間めっちゃいいものを買ったので紹介します。ムッキーちゃんです。

f:id:hwhw:20170315000505j:image

 

超時短便利グッズ

 大きめの柑橘が家族みんな大好きなのですが、みかんと違って少し皮を剥くのに手間がかかりますよね?中の薄皮まで剥かないといけないし。なので面倒な時はちょっと食べるのを躊躇してしまうほどでした。

そこでムッキーちゃんの登場です。まず外の分厚い皮を、プラスチック製の鋭い刃が何なく切り目を入れてくれます。切り目が入っているだけで、段違いの剥きやすさ!爪が多少伸びてようが、逆に深爪気味だろうが関係ありません。

もうこの段階で、「はあ〜、ええもん買ったわい…」と大満足です。しかしそれだけで終わりではありません。薄皮もめっちゃ楽に剥けるようになっているのです。

今度は金属の刃に向けて、すっと一房ずつ滑らせます。するとまっすぐ皮に切り目が入り、ささっと薄皮も剥くことができるではありませんか!これはね、実際にやらないとその凄さが実感できないと思いますが、私は大興奮でした。今までの労力は何やったんや?と。しかも楽しい。興奮のあまり一度に2つ剥きましたが、今まで2人がかりで1個分剥くのにかかっていたのと同じ時間で楽々剥けてしまいました。しかもバラバラにならず綺麗に剥けます。350円くらいしましたが、それ以上の価値はあるとはっきり言えます。

これで今後ははっさくが安い時も遠慮なくたくさん買えます。グレープフルーツも今までは半分に切って、周りに汁を飛び散らせながらスプーンで食べていましたが、これがあれば綺麗に楽に食べることができるでしょう。私は手に入れたのです。文明の利器を!ああ今、私は猿から人間に進化したんだ!そう感じました。

猿から人間になりたい人は、ぜひ使ってみてください。

 

公式動画もありました


ムッキーちゃん (公式動画)

 

剥いた外皮の使い道

よく洗ってお風呂に入れると、とても良い香り!光毒性があるかもしれないので、朝風呂にはしない方がいいかも。あと敏感肌の人も要注意です。