Leer filas específicas de CSV en Pandas

Olorunfemi Akinlua 21 junio 2023
  1. Use la asignación en el lugar para leer filas específicas de CSV en Pandas
  2. Use la función consulta para leer filas específicas de CSV en Pandas
  3. Use chunksize para leer filas específicas de CSV en Pandas
  4. Use loc para leer filas específicas de CSV en Pandas
  5. Use iloc para leer filas específicas de CSV en Pandas
Leer filas específicas de CSV en Pandas

No todos los datos a los que tenemos acceso son necesarios cuando se trabaja con datos. A menudo, es posible que necesitemos solo una parte de los datos.

Con Python, podemos trabajar con secciones específicas de datos.

Si trabajamos con archivos CSV, podemos trabajar y leer filas específicas de CSV en Pandas. Este artículo discutirá cómo trabajaremos con filas específicas de CSV en Pandas.

Use la asignación en el lugar para leer filas específicas de CSV en Pandas

No podemos leer filas específicas de CSV durante el proceso de lectura (a través de la función read_csv). Aún así, después de completar la operación de lectura, podemos usar una asignación en el lugar para seleccionar filas específicas del marco de datos que queremos.

Para ilustrar, usaremos un archivo CSV adjunto aquí. Primero, leamos el archivo CSV - leverage.csv.

import pandas as pd

df = pd.read_csv("leverage.csv")

print(df.head())

Producción :

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

Con este marco de datos, ahora podemos seleccionar (o leer) filas específicas. Por ejemplo, si solo queremos filas en las que fyearq esté por encima de 2017, podemos usar una asignación in situ.

df = df[df["fyearq"] > 2017]
print(df.head())

Producción :

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

Use la función consulta para leer filas específicas de CSV en Pandas

En lugar de usar una asignación en el lugar, podemos usar la función consulta, que nos permite pasar una cadena de consulta con una expresión booleana y se selecciona cualquier fila que cumpla con la expresión.

Podemos conseguir el mismo efecto que en el apartado anterior pasando la cadena "fyearq > 2017" a la función query.

df = df.query("fyearq > 2017")
print(df)

Producción :

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
...

Use chunksize para leer filas específicas de CSV en Pandas

Sin embargo, si necesitamos trabajar con el archivo CSV en lotes (debido a elección, restricciones o memoria), podemos usar el parámetro chunksize para leer solo algunas filas. Por lo tanto, dentro de la función read_csv, especificamos el parámetro chunksize y el resultado será un objeto iterador que podemos recorrer para acceder a los fragmentos del conjunto de datos.

Aquí, especificamos que el tamaño de fragmento sea 60, por lo que solo se cargan 60 filas.

chunksize = 60
filename = "leverage.csv"
with pd.read_csv(filename, chunksize=chunksize) as reader:
    for chunk in reader:
        print(chunk)
        print("--------------------------------")

Producción :

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
...

Usamos el --- para indicar que solo se cargan 60 filas a la vez.

Use loc para leer filas específicas de CSV en Pandas

Al igual que la función de consulta o la asignación en el lugar, podemos hacer uso del operador loc para pasar una expresión booleana que definirá las filas específicas que se leen.

df = df.loc[df["fyearq"] > 2017]
print(df)

Producción :

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
...

Use iloc para leer filas específicas de CSV en Pandas

Si necesitamos un conjunto de filas y conocemos sus índices, podemos usar el operador iloc y pasar múltiples índices dentro de un []. Luego, se leen todas las filas con los índices.

Aquí leemos solo las filas con los índices 12, 13 y 45.

df = df.iloc[[12, 13, 45]]
print(df)

Producción :

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

Artículo relacionado - Pandas CSV