Heim  >  Artikel  >  Backend-Entwicklung  >  Wie lese ich mit Pandas Daten direkt von einer URL?

Wie lese ich mit Pandas Daten direkt von einer URL?

DDD
DDDOriginal
2024-11-04 10:40:30358Durchsuche

How to Read Data Directly from a URL Using Pandas?

Das Read-All-URL-Rätsel

Eine häufige Aufgabe bei der Datenanalyse besteht darin, Daten von einer URL zu laden. Pandas, eine beliebte Python-Bibliothek zur Datenbearbeitung, bietet eine read_csv-Funktion, die es ermöglicht, Daten aus einer CSV-Datei zu lesen, die sich in einem Dateipfad oder als dateiähnliches Objekt befindet. Der Versuch, eine URL direkt an read_csv zu übergeben, kann jedoch zu einem Fehler führen.

Den Fehler verstehen

Um diesen Fehler zu veranschaulichen, betrachten wir das Beispiel in der Frage:

<code class="python">import pandas as pd
import requests

url = "https://github.com/cs109/2014_data/blob/master/countries.csv"
s = requests.get(url).content
c = pd.read_csv(s)</code>

Dieser Code versucht, die CSV-Datei mithilfe der Anforderungsbibliothek von der angegebenen URL abzurufen und den abgerufenen Inhalt dann als dateiähnliches Objekt an zu übergeben read_csv. Dies führt jedoch zu einem Fehler:

Expected file path name or file-like object, got <class 'bytes'> type

Problem lösen

Um diesen Fehler zu beheben, müssen wir sicherstellen, dass wir ein dateiähnliches Objekt an read_csv übergeben. In Python gibt es zwei Haupttypen dateiähnlicher Objekte: Textdateien und Binärdateien. Das in der Frage bereitgestellte Beispiel übergibt ein von der URL abgerufenes Byte-Array, bei dem es sich um eine Binärdatei handelt. Read_csv erwartet ein Textdateiobjekt, das durch Dekodierung des Byte-Arrays erhalten werden kann:

<code class="python">import pandas as pd

url = "https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv"
c = pd.read_csv(url, encoding="utf-8")</code>

Indem wir die Kodierung als „utf-8“ angeben, interpretieren wir das Byte-Array als Textdatei. Dadurch kann read_csv die Daten erfolgreich von der URL laden.

Verbesserte Einfachheit mit Pandas 0.19.2

In der neuesten Version von Pandas (0.19.2) ist eine einfachere Lösung verfügbar. Pandas ermöglicht jetzt das direkte Lesen von URLs:

<code class="python">import pandas as pd

url = "https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv"
c = pd.read_csv(url)</code>

Dadurch entfallen zusätzliche Vorgänge wie das Abrufen des Inhalts und dessen Dekodierung, was den Prozess einfacher macht.

Das obige ist der detaillierte Inhalt vonWie lese ich mit Pandas Daten direkt von einer URL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn