2017-06-18 7 views
0

Ich bin auf einer Mission, wo ich Informationen aus dem Internet extrahieren muss (IMDB-Oscar-prämierte Filme) und dann die Daten analysieren.Transformieren/Umformen von Daten zum Analysieren - Python/Pandas

Ich benutze Python-Bibliotheken (Requests, Pandas) auf jupyter

Ab diesem Moment habe ich zog bereits die Daten von der Website und die Daten werden in einer Liste innerhalb einer Liste, wie in diesen image gespeichert .

Meine Frage ist, wie ändere ich die Form, so dass ich bequemer die Daten analysieren werde? Ich würde gerne die Daten in einer Tabellenstruktur empfangen, aber die Länge der Listen ist nicht identisch.

+0

Können Sie Beispieldaten hochladen? (Kein Bild) –

Antwort

0

Sie können die Liste der Listen in ein Wörterbuch umwandeln und dann eine Objektdatenbank wie MongoDB verwenden oder einfach als JSON für weitere Analysen speichern.

myList = [[('Name', 'Moonlight'), ('Genres', ['Drama']), 
      ('Writers', ['Barry Jenkins', 'Tarell Alvin McCraney']), 
      ('Actors', ['Mahershala Ali', 'Shariff Earp', 'Duan Sanderson']), 
      ('Directors', ['Barry Jenkins']), ('Duration', '1h 51min')]] 
l = [tup for item in myList for tup in item] 
d = {col: attr for col, attr in l} 
print(d) 
>>{'Genres': ['Drama'], 'Name': 'Moonlight', 'Directors': ['Barry Jenkins'], 'Writers': ['Barry Jenkins', 'Tarell Alvin McCraney'], 'Actors': ['Mahershala Ali', 'Shariff Earp', 'Duan Sanderson'], 'Duration': '1h 51min'} 

Wenn Sie möchten, dass Ihre Daten tabellarisch werden die Tabellen zweidimensional wie ein RDBMS mit Primär-/Fremdschlüsselbeziehungen visualisieren werden will, weil Listen in Spalten in Pandas zu speichern nicht wirklich gut funktionieren.

movie (mov_id*, name, duration) 
directors (mov_id*, director_name) 
writers (mov_id*, writer_name) 
actors (mov_id*, actor_name) 

Sie werden vier Datenrahmen von diesem Schema haben (einige Tabellen Optimierung könnte weniger Tabellen ergeben), von denen können Sie relationale Algebra tun Pandas auf mit der Arbeit, die Sie getan brauchen.