Lesen Sie bestimmte Zeilen aus CSV in Pandas
- Verwenden Sie die In-Place-Zuweisung, um bestimmte Zeilen aus CSV in Pandas zu lesen
-
Verwenden Sie die
query
-Funktion, um bestimmte Zeilen aus CSV in Pandas zu lesen -
Verwenden Sie
chunksize
, um bestimmte Zeilen aus CSV in Pandas zu lesen -
Verwenden Sie
loc
, um bestimmte Zeilen aus CSV in Pandas zu lesen -
Verwenden Sie
iloc
, um bestimmte Zeilen aus CSV in Pandas zu lesen
Nicht alle Daten, auf die wir Zugriff haben, werden bei der Arbeit mit Daten benötigt. Oft benötigen wir nur einen Teil der Daten.
Mit Python können wir mit bestimmten Datenabschnitten arbeiten.
Wenn wir mit CSV-Dateien arbeiten, können wir in Pandas bestimmte Zeilen aus CSV bearbeiten und lesen. In diesem Artikel wird erläutert, wie wir mit bestimmten Zeilen aus CSV in Pandas arbeiten werden.
Verwenden Sie die In-Place-Zuweisung, um bestimmte Zeilen aus CSV in Pandas zu lesen
Wir können während des Lesevorgangs (über die Funktion read_csv
) keine bestimmten Zeilen aus CSV lesen. Nach Abschluss des Lesevorgangs können wir jedoch eine direkte Zuweisung verwenden, um bestimmte Zeilen aus dem gewünschten Datenrahmen auszuwählen.
Zur Veranschaulichung verwenden wir eine hier angehängte CSV-Datei. Lesen wir zuerst die CSV-Datei - leverage.csv
.
import pandas as pd
df = pd.read_csv("leverage.csv")
print(df.head())
Ausgang:
gvkey datadate fyearq fqtr indfmt consol popsrc datafmt curcdq datacqtr \
0 1300 20150331 2015 1 INDL C D STD USD 2015Q1
1 1300 20150630 2015 2 INDL C D STD USD 2015Q2
2 1300 20150930 2015 3 INDL C D STD USD 2015Q3
3 1300 20151231 2015 4 INDL C D STD USD 2015Q4
4 1300 20160331 2016 1 INDL C D STD USD 2016Q1
datafqtr atq cshoq dlttq lctq costat prccq
0 2015Q1 45357.0 781.707 5661.0 15432.0 A 104.31
1 2015Q2 46412.0 781.762 5562.0 15574.0 A 101.97
2 2015Q3 46625.0 770.691 5599.0 16367.0 A 94.69
3 2015Q4 49316.0 770.400 5554.0 18371.0 A 103.57
4 2016Q1 50365.0 762.115 9700.0 15659.0 A 112.05
Mit diesem Datenrahmen können wir nun bestimmte Zeilen auswählen (oder lesen). Wenn wir beispielsweise nur Zeilen wollen, in denen fyearq
über 2017
liegt, können wir eine direkte Zuweisung verwenden.
df = df[df["fyearq"] > 2017]
print(df.head())
Ausgang:
gvkey datadate fyearq fqtr indfmt consol popsrc datafmt curcdq \
59 1690 20171231 2018 1 INDL C D STD USD
107 2111 20171231 2018 1 INDL C D STD USD
179 2663 20171031 2018 1 INDL C D STD USD
335 3980 20171231 2018 1 INDL C D STD USD
670 6547 20171231 2018 1 INDL C D STD USD
datacqtr datafqtr atq cshoq dlttq lctq costat prccq
59 2017Q4 2018Q1 406794.0 5081.651 103922.0 115788.0 A 169.23
107 2017Q4 2018Q1 55363.0 266.242 22095.0 4895.0 A 214.06
179 2017Q3 2018Q1 7746.0 301.000 2269.0 2583.0 A 47.37
335 2017Q4 2018Q1 97734.0 1500.000 20082.0 19875.0 A 107.51
670 2017Q4 2018Q1 6701.1 48.340 2030.0 1211.3 A 75.15
Verwenden Sie die query
-Funktion, um bestimmte Zeilen aus CSV in Pandas zu lesen
Anstatt eine direkte Zuweisung zu verwenden, können wir die query
-Funktion verwenden, die es uns ermöglicht, eine Abfragezeichenfolge mit einem booleschen Ausdruck zu übergeben, und es werden die Zeilen ausgewählt, die den Ausdruck erfüllen.
Den gleichen Effekt wie im letzten Abschnitt erreichen wir, indem wir der Funktion query
den String "fyearq > 2017"
übergeben.
df = df.query("fyearq > 2017")
print(df)
Ausgang:
gvkey datadate fyearq fqtr indfmt consol popsrc datafmt curcdq \
59 1690 20171231 2018 1 INDL C D STD USD
107 2111 20171231 2018 1 INDL C D STD USD
179 2663 20171031 2018 1 INDL C D STD USD
335 3980 20171231 2018 1 INDL C D STD USD
670 6547 20171231 2018 1 INDL C D STD USD
...
Verwenden Sie chunksize
, um bestimmte Zeilen aus CSV in Pandas zu lesen
Wenn wir jedoch mit der CSV-Datei in Stapeln arbeiten müssen (aufgrund von Wahlmöglichkeiten, Einschränkungen oder Speicher), können wir den Parameter chunksize
verwenden, um nur einige Zeilen zu lesen. Daher geben wir innerhalb der Funktion read_csv
den Parameter chunksize
an, und das Ergebnis ist ein Iteratorobjekt, das wir durchlaufen können, um auf die Chunks des Datensatzes zuzugreifen.
Hier haben wir angegeben, dass die chunksize
60 ist, also werden nur 60 Zeilen geladen.
chunksize = 60
filename = "leverage.csv"
with pd.read_csv(filename, chunksize=chunksize) as reader:
for chunk in reader:
print(chunk)
print("--------------------------------")
Ausgang:
gvkey datadate fyearq fqtr indfmt consol popsrc datafmt curcdq \
0 1300 20150331 2015 1 INDL C D STD USD
1 1300 20150630 2015 2 INDL C D STD USD
2 1300 20150930 2015 3 INDL C D STD USD
3 1300 20151231 2015 4 INDL C D STD USD
...
57 1690 20170630 2017 3 INDL C D STD USD
58 1690 20170930 2017 4 INDL C D STD USD
59 1690 20171231 2018 1 INDL C D STD USD
--------------------------------
gvkey datadate fyearq fqtr indfmt consol popsrc datafmt curcdq \
60 1837 20150331 2015 1 INDL C D STD USD
61 1837 20150630 2015 2 INDL C D STD USD
62 1837 20150930 2015 3 INDL C D STD USD
...
Wir haben das ---
verwendet, um anzuzeigen, dass nur 60 Zeilen gleichzeitig geladen werden.
Verwenden Sie loc
, um bestimmte Zeilen aus CSV in Pandas zu lesen
Genau wie bei der query
-Funktion oder der direkten Zuweisung können wir den loc
-Operator verwenden, um einen booleschen Ausdruck zu übergeben, der die spezifischen gelesenen Zeilen definiert.
df = df.loc[df["fyearq"] > 2017]
print(df)
Ausgang:
gvkey datadate fyearq fqtr indfmt consol popsrc datafmt curcdq \
59 1690 20171231 2018 1 INDL C D STD USD
107 2111 20171231 2018 1 INDL C D STD USD
179 2663 20171031 2018 1 INDL C D STD USD
335 3980 20171231 2018 1 INDL C D STD USD
670 6547 20171231 2018 1 INDL C D STD USD
...
Verwenden Sie iloc
, um bestimmte Zeilen aus CSV in Pandas zu lesen
Wenn wir eine Reihe von Zeilen benötigen und ihre Indizes kennen, können wir den Operator iloc
verwenden und mehrere Indizes innerhalb eines []
übergeben. Dann werden alle Zeilen mit den Indizes gelesen.
Hier lesen wir nur die Zeilen mit den Indizes 12
, 13
und 45
.
df = df.iloc[[12, 13, 45]]
print(df)
Ausgang:
gvkey datadate fyearq fqtr indfmt consol popsrc datafmt curcdq \
12 1440 20150331 2015 1 INDL C D STD USD
13 1440 20150630 2015 2 INDL C D STD USD
45 1487 20170630 2017 2 INDL C D STD USD
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn