Leer filas específicas de CSV en Pandas
- Use la asignación en el lugar para leer filas específicas de CSV en Pandas
-
Use la función
consulta
para leer filas específicas de CSV en Pandas -
Use
chunksize
para leer filas específicas de CSV en Pandas -
Use
loc
para leer filas específicas de CSV en Pandas -
Use
iloc
para 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 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