Google Spreadsheet-CSV in einen Pandas-Datenrahmen übernehmen
Lud ich eine Datei in Google spreadsheets (auf einem öffentlich zugänglichen Beispiel IPython-Notebook, mit Daten) war ich mit der Datei in seiner ursprünglichen form gelesen werden konnte in ein Pandas Dataframe. Also ich benutze jetzt folgenden code zum Lesen der Tabelle funktioniert gut, aber nur als string, und ich bin nicht mit etwas Glück zu versuchen, um es wieder in einen dataframe (Sie können die Daten)
import requests
r = requests.get('https://docs.google.com/spreadsheet/ccc?key=0Ak1ecr7i0wotdGJmTURJRnZLYlV3M2daNTRubTdwTXc&output=csv')
data = r.content
Die Daten, die endet auf der Suche wie: (1. Zeile die überschriften)
',City,region,Res_Comm,mkt_type,Quradate,National_exp,Alabama_exp,Sales_exp,Inventory_exp,Price_exp,Credit_exp\n0,Dothan,South_Central-Montgomery-Auburn-Wiregrass-Dothan,Residential,Rural,1/15/2010,2,2,3,2,3,3\n10,Foley,South_Mobile-Baldwin,Residential,Suburban_Urban,1/15/2010,4,4,4,4,4,3\n12,Birmingham,North_Central-Birmingham-Tuscaloosa-Anniston,Commercial,Suburban_Urban,1/15/2010,2,2,3,2,2,3\n
Den einheimischen pandas code, bringt in der disk-resident-Datei sieht wie folgt aus:
df = pd.io.parsers.read_csv('/home/tom/Dropbox/Projects/annonallanswerswithmaster1012013.csv',index_col=0,parse_dates=['Quradate'])
Eine "saubere" Lösung wäre es hilfreich, viele bieten eine einfache Möglichkeit zur Freigabe von Datensätzen für Pandas verwenden! Ich habe versucht eine Reihe von alternativen mit keinen Erfolg und ich bin mir ziemlich sicher, dass ich ' m fehlt etwas, das offensichtlich wieder.
Nur ein Update Hinweis: Das neue Google-Tabelle hat eine andere URL-Muster verwenden Sie Einfach diese statt der URL im obigen Beispiel und oder der weiter unten zu beantworten und Sie sollten in Ordnung sein, hier ist ein Beispiel:
https://docs.google.com/spreadsheets/d/177_dFZ0i-duGxLiyg6tnwNDKruAYE-_Dd8vAQziipJQ/export?format=csv&id
siehe Lösung unten von @Max Ghenis, die nur pd.read_csv, keine Notwendigkeit für StringIO oder Anfragen...
InformationsquelleAutor der Frage dartdog | 2013-10-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
read_csv()
auf eineStringIO
Objekt:InformationsquelleAutor der Antwort TomAugspurger
Scheint für mich arbeiten, ohne das
StringIO
:BTW, einschließlich der
?gid=
ermöglicht das importieren von verschiedenen Blättern, finden Sie die Gruppen-id in der URL.InformationsquelleAutor der Antwort Max Ghenis
Mein Ansatz ist ein bisschen anders. Ich habe nur pandas.Dataframe (), aber offensichtlich benötigt, um installieren und importieren gspread. Und es hat funktioniert!
InformationsquelleAutor der Antwort Abhery Guha
Öffnen Sie den gewünschten Blatts in Ihrem browser. Stellen Sie sicher, es ist zumindest sichtbar durch jemand mit dem link. Kopieren und einfügen der URL. Du wirst etwas wie
https://docs.google.com/spreadsheets/d/BLAHBLAHBLAH/edit#gid=NUMBER
.Wenden wir uns zunächst, dass in eine CSV-export-URL, wie
https://docs.google.com/spreadsheets/d/BLAHBLAHBLAH/export?format=csv&gid=NUMBER
:Dann geben wir es an pd.read_csvdas kann eine URL sein.
Dieser wird brechen, wenn Google ändert seine API (es scheint undokumentierte), und kann wenig hilfreich, Fehler auftreten, wenn ein Netzwerkfehler Auftritt.
InformationsquelleAutor der Antwort Ken Arnold
Habe ich mit dem folgenden utils und es funktionierte so weit:
Müssen Sie die sheet_name und der Schlüssel. Der Schlüssel ist die Zeichenfolge, die Sie get aus der url in folgendem Pfad:
https://docs.google.com/spreadsheets/d/{key}/edit/
.Können Sie den Wert ändern, der Header, wenn Sie mehr als eine Zeile für die Spalte-Namen, aber ich bin nicht sicher, ob es noch Arbeit mit multi-Header.
Er Bremsen kann, wenn Google wird Ihre APIs ändern.
Bitte beachten Sie, dass Ihre Tabelle muss öffentlich sein, jeder mit dem link auch Lesen kann.
InformationsquelleAutor der Antwort Gianmario Spacagna
Wenn die csv-Datei geteilt wurde über Laufwerk und nicht über die Kalkulationstabelle dann die unten ändern, um die url funktionieren würde
Und der dataframe wäre (wenn Sie lief einfach den oben genannten code)
Finden Sie unter arbeiten code hier.
InformationsquelleAutor der Antwort kaza