twilogからリア充度グラフを作る

先日、友人の結婚パーティでLTをすることになり、
リア充化(奥さんと付き合い始めた)前後で、その友人のTwitterのツイートにどのような変化があったか』
について語って来ました。

メインはこの2つのグラフでした。


Tweet数の推移

リア充度の推移

※ちょっと茶化し過ぎたかと反省したので名前はふせます(´・ω・`)


今回はこのグラフ(主に下側)をどうやって作ったかについて、簡単に説明します。

リア充度について

元ネタは@namikawaさんのブログエントリ、
『俺流、リア充・ネト充の見分け方』
です。
詳細は上記ブログを見てもらうとして、ポイントはここで提唱されている、
リア充ほど休日のtweet率が低くなる』(リア充は休日はリア充活動が忙しくてTwitterなんてやってられん)
という理論です。
これもとに、リア充度=平日ツイートの割合』と定義すると

ぐらいになることがわかりました。

これをベースに、月ごとにリア充度を算出したのが最初に出したグラフです。

データの取得

TwitterAPIは現状の仕様では3200件までしか過去ツイートをさかのぼれません。
なのでデータはtwilogのCSVダウンロード機能で取得することにしました。

※本人しかダウンロードできないです!

データの解析

CSV形式なので簡単に解析ができます。
試しにツイート数やリプライ件数ランキングなど。

$ wc -l mikeda121216.csv 
   15055 mikeda121216.csv
$ perl -nle 'print for /@\w+/g' mikeda121216.csv | sort | uniq -c | sort -rn | head
 740 @xcir
 329 @kuwa_tw
 285 @n0ts
 223 @oranie
 203 @ar1
 178 @ishikawa84g
 124 @mikeda
 124 @iara
 115 @tnmt
 108 @sechiro

月ごとのツイート数、リア充度はスクリプトで集計しました。

$ ruby rj.rb mikeda121216.csv 
2007/12	1	1	100.0
2009/12	12	7	58.333333333333336
2010/1	11	7	63.63636363636363
2010/2	22	16	72.72727272727273
2010/3	94	39	41.48936170212766
2010/4	79	44	55.69620253164557
2010/5	339	223	65.78171091445428
2010/6	415	263	63.373493975903614
2010/7	361	211	58.448753462603875
2010/8	556	342	61.510791366906474
2010/9	492	353	71.7479674796748
2010/10	435	153	35.172413793103445
2010/11	577	309	53.552859618717505
2010/12	469	281	59.914712153518124
2011/1	329	155	47.11246200607903
2011/2	283	147	51.9434628975265
2011/3	342	190	55.55555555555556
2011/4	477	204	42.76729559748428
2011/5	644	407	63.19875776397515
2011/6	381	203	53.28083989501312
2011/7	610	301	49.34426229508197
2011/8	769	480	62.418725617685304
2011/9	479	302	63.04801670146138
2011/10	395	233	58.9873417721519
2011/11	685	447	65.25547445255475
2011/12	592	357	60.304054054054056
2012/1	556	365	65.64748201438849
2012/2	528	335	63.446969696969695
2012/3	623	346	55.53772070626003
2012/4	444	213	47.972972972972975
2012/5	689	407	59.0711175616836
2012/6	406	234	57.635467980295566
2012/7	372	190	51.075268817204304
2012/8	340	250	73.52941176470588
2012/9	312	161	51.6025641025641
2012/10	373	229	61.394101876675606
2012/11	367	187	50.95367847411444
2012/12	152	79	51.973684210526315

左から

  • 総ツイート数
  • 平日ツイート数
  • リア充度(平日ツイート数/総ツイート数)

です。
スクリプトソースコードはこんな感じです。

#!/usr/bin/ruby

require 'csv'
require 'pp'

counts = {}

CSV.parse(ARGF) do |rows|
  /^(..)(..)(..)/ =~ rows[1]
  year, month, day = "20#{$1}".to_i, $2.to_i, $3.to_i
  wday = Date.new(year, month, day).wday

  counts[year] ||= {}
  counts[year][month] ||= {:all => 0, :weekday => 0}

  counts[year][month][:all] += 1
  counts[year][month][:weekday] += 1 unless wday == 0 || wday == 6
end

counts.sort.each do |year, monthly_counts|
  monthly_counts.sort.each do |month, count|
    weekday_rate = 100 * count[:weekday].to_f / count[:all]
    puts ["#{year}/#{month}", count[:all], count[:weekday], weekday_rate].join("\t")
  end
end

祭日、月ごとの平日/休日比率の違いを考慮していないのがちょっとダメですね。


ほんとは
・感情解析
・顔文字、「おっぱい」など特定フレーズの使用頻度
なども分析したかったのですが、それは次のだれかの結婚式にまわします(・∀・)ニヤニヤ