Created
October 29, 2014 09:55
-
-
Save yassu/8f99ca64a91820126d9b to your computer and use it in GitHub Desktop.
analyse_twit
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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