Skip to content

Commit

Permalink
Επεξεργασία
Browse files Browse the repository at this point in the history
  • Loading branch information
Protonotarios committed Dec 17, 2016
1 parent 50c1845 commit 5071ed2
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 11 deletions.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Συναίσθημα σε σχέση με το χρόνο

Για να δούμε πώς διακυμαίνεται το συναίσθημα σε σχέση με το χρόνο πρέπει να
υπολογίσουμε το μέσο συναίσθημα κάθε ημέρας.

Ανοίγουμε το αρχείο `final_tweets.csv` στο Calc και για κάθε χρήστη εισάγουμε
μια νέα στήλη στα δεξιά στην οποία θα βάλουμε το μέσο όρο ανά tweet της ημέρας,
διαιρώντας το αθροιστικό συναίσθημα της ημέρας με τον αριθμό των tweets αυτής
της ημέρας. Επειδή κάποιες μέρες δεν υπάρχουν tweets πρέπει να αποφύγουμε τη
διαίρεση με το μηδέν με μια απλή συνάρτηση `IF`.

Για παράδειγμα, το σύνολο των tweets κάθε ημέρας του Αδώνιδος Γεωργιάδη
βρίσκονται στη στήλη `B` ενώ το αθροιστικό συναίσθημα αυτής της ημέρας βρίσκεται
στη στήλη `E`. Οπότε εισάγουμε μια νέα στήλη `F` δεξιότερα και στο πρώτο κελί
`F2` βάζουμε τον τύπο:

```
=IF(B2;E2/B2;0)
```

και αναπαράγουμε τον τύπο μέχρι την τελευταία γραμμή.

Κάνουμε το ίδιο για τους υπόλοιπους χρήστες.

Στη συνέχεια δημιουργούμε ένα διάγραμμα με τρεις σειρές δεδομένων, μία για κάθε
χρήστη χρησιμοποιώντας τα περιεχόμενα των κελιών με το μέσο συναίσθημα, ενώ ως
περιοχή ετικετών βάζουμε τη στήλη `A` με τις ημερομηνίες.

Το αποτέλεσμα είναι το ακόλουθο:

![στιγμιότυπο οθόνης από το Calc](Μέσο συναίσθημα ανά ημέρα.png)

25 changes: 14 additions & 11 deletions get-tweets.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,11 @@
# Ορισμός μέγιστης και ελάχιστης ημερομηνία στη σημερινή
min_date = max_date = datetime.now().date()

# Απλώς ένα διαχωριστικό για τις εκτυπώσεις
hr = '-'*40+'\n'

def get_all_tweets(screen_name):
global min_date
global min_date, hr

# Το Twitter επιτρέπει μέσω του API τη λήψη μόνο των τελευταίων 3240 tweets ενός χρήστη

Expand Down Expand Up @@ -58,8 +61,8 @@ def get_all_tweets(screen_name):
print 'Λήψη της επόμενης διακοσάδας tweets μέχρι πριν το %s' % (oldest)

# Όλα τα αιτήματα που ακολουθούν χρησιμοποιούν την παράμετρο max_id για την αποφυγή διπλοτύπων
new_tweets = api.user_timeline(screen_name = screen_name,count=200,max_id=oldest)
#new_tweets = api.user_timeline(screen_name = screen_name,count=200,max_id='300') # Προσωρινή εντολή - Θα διαγραφεί μετά
#new_tweets = api.user_timeline(screen_name = screen_name,count=200,max_id=oldest)
new_tweets = api.user_timeline(screen_name = screen_name,count=200,max_id='300') # Προσωρινή εντολή - Θα διαγραφεί μετά

# Αποθήκευση των πιο πρόσφατων tweets
alltweets.extend(new_tweets)
Expand All @@ -74,11 +77,14 @@ def get_all_tweets(screen_name):
# Τα πεδία που δύναται να περιέχουν Ελληνικά πρέπει να κωδικοποιηθούν σε UTF-8
# Μετατροπή των tweets σε διδιάστατο πίνακα ο οποίος μετά θα γραφτεί στο csv

print hr,'Ανάλυση των tweets (συναισθήματος, URL κ.ά.)...'
outtweets = []
partial_out_tweets = []
for tweet in alltweets:
tweet_date = tweet.created_at.date()
tweet_text = tweet.text.encode('utf-8')

# Ανάλυση συναισθήματος
# Μετατροπή του tweet σε greeklish μικρά και σπάσιμό του σε λέξεις
# για εύκολη σύγκριση με τις λέξεις του λεξικού
words = unidecode(tweet_text.decode('utf-8')).lower().split()
Expand Down Expand Up @@ -113,12 +119,12 @@ def get_all_tweets(screen_name):


if __name__ == '__main__':
print '\033[92mΣΥΛΛΕΚΤΗΣ ΔΕΔΟΜΕΝΩΝ TWITTER 0.2\033[0m\nΒοήθεια: http://get-tweets.rtfd.io'
for account in config['accounts']:
print 'Έναρξη λήψης tweets για το λογαριασμό %s' % (account)
print hr,'Έναρξη λήψης tweets για το λογαριασμό %s' % (account)
get_all_tweets(account)
print 'Η λήψη tweets για το λογαριασμό %s ολοκληρώθηκε' % (account)
print '-------------------------------'
print 'Η λήψη tweets για όλους τους λογαριασμούς ολοκληρώθηκε'
print hr,'Η λήψη tweets για όλους τους λογαριασμούς ολοκληρώθηκε'

# Δημιουργία του συνολικού csv
with open('combined_tweets.csv', 'wb') as f:
Expand All @@ -127,13 +133,11 @@ def get_all_tweets(screen_name):
writer.writerow(['Ημερομηνία δημιουργίας','Αριθμός retweets','Αριθμός αγαπημένων','Συναίσθημα','Περιέχει URL','Χρήστης'])
# Εγγραφή των tweets
writer.writerows(combined_out_tweets)
print '-------------------------------'
print 'Τα συνδυασμένα δεδομένα εγγράφηκαν στο αρχείο combined_tweets.csv'
print hr,'Τα συνδυασμένα δεδομένα εγγράφηκαν στο αρχείο combined_tweets.csv'
date_delta = max_date - min_date
print 'Εύρος ημερομηνιών: από', min_date, 'μέχρι σήμερα (',date_delta,')'

print '-------------------------------'
print 'Άθροιση δεδομένων...'
print hr,'Άθροιση δεδομένων...'
final_tweets = []
test_date = min_date
while test_date <= max_date:
Expand Down Expand Up @@ -161,7 +165,6 @@ def get_all_tweets(screen_name):

final_tweets.append(current_line)
test_date += timedelta(days=1)
print '...Η άθροιση δεδομένων ολοκληρώθηκε'

# Δημιουργία του τελικού csv
with open('final_tweets.csv', 'wb') as f:
Expand Down
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ pages:
- Αρχική σελίδα: index.md
- Παράδειγμα χρήσης: Παράδειγμα/README.md
- Ανάλυση δεδομένων: Παράδειγμα/README2.md
- Συναίσθημα σε σχέση με το χρόνο: Παράδειγμα/Συναίσθημα σε σχέση με το χρόνο.md
- Κατέβασμα: download.md
- Credits: credits.md
- License: LICENSE.md
Expand Down

0 comments on commit 5071ed2

Please sign in to comment.