Lesen Sie bestimmte Zeilen aus CSV in Pandas

Olorunfemi Akinlua 21 Juni 2023
  1. Verwenden Sie die In-Place-Zuweisung, um bestimmte Zeilen aus CSV in Pandas zu lesen
  2. Verwenden Sie die query-Funktion, um bestimmte Zeilen aus CSV in Pandas zu lesen
  3. Verwenden Sie chunksize, um bestimmte Zeilen aus CSV in Pandas zu lesen
  4. Verwenden Sie loc, um bestimmte Zeilen aus CSV in Pandas zu lesen
  5. Verwenden Sie iloc, um bestimmte Zeilen aus CSV in Pandas zu lesen
Lesen Sie bestimmte Zeilen aus CSV in Pandas

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 Akinlua avatar Olorunfemi Akinlua avatar

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

Verwandter Artikel - Pandas CSV