Skip to content

Instantly share code, notes, and snippets.

@yassu
Created October 29, 2014 09:55
Show Gist options
  • Save yassu/8f99ca64a91820126d9b to your computer and use it in GitHub Desktop.
Save yassu/8f99ca64a91820126d9b to your computer and use it in GitHub Desktop.
analyse_twit
from datetime import datetime
from math import sqrt
from json import load as _json_load
import numpy as np
from scipy import stats # for regression line
import pylab
def get_datetime(s_date):
year, month ,day = s_date.split('/')
year = int(year)
month = int(month)
day = int(day)
return datetime(year, month ,day)
def get_numbers(twits):
datetime_twits = {}
for date, number in twits.items():
datetime_twits[get_datetime(date)] = number
twits = datetime_twits
numbers = []
for date in sorted(twits.keys()):
numbers.append(twits[date])
return numbers
def parser(f):
twits = _json_load(f)
return get_numbers(twits)
def statics_repr(numbers):
sloop, intercept, *_ = stats.linregress(range(len(numbers)), numbers)
s = 'average: {}\n'.format(np.average(numbers))
s += 'variance: {}\n'.format(sqrt(np.var(numbers)))
s += 'regression line: {} * x + {}\n'.format(sloop, intercept)
s += 'correlation coefficient: {}\n'.format(np.corrcoef(numbers,
range(len(numbers)))[0][1])
return s
def plot(numbers):
# plot from origin
origin = pylab.arange(1), pylab.arange(1)
pylab.plot(*origin)
# plot line graph
x = pylab.arange(0, len(numbers))
y = numbers
pylab.plot(x, y)
# plot regression line
sloop, intercept, *_ = stats.linregress(range(len(numbers)), numbers)
x = pylab.arange(0, len(numbers))
y = sloop * x + intercept
pylab.plot(x,y)
pylab.show()
if __name__ == '__main__':
from sys import argv
filename = argv[1]
numbers = parser(open(filename))
print(statics_repr(numbers))
plot(numbers)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment