Pandas의 CSV에서 특정 행 읽기

Olorunfemi Akinlua 2023년6월21일
  1. 제자리 할당을 사용하여 Pandas의 CSV에서 특정 행 읽기
  2. query 기능을 사용하여 Pandas의 CSV에서 특정 행 읽기
  3. chunksize를 사용하여 Pandas의 CSV에서 특정 행 읽기
  4. loc을 사용하여 Pandas의 CSV에서 특정 행 읽기
  5. iloc을 사용하여 Pandas의 CSV에서 특정 행 읽기
Pandas의 CSV에서 특정 행 읽기

데이터로 작업할 때 액세스할 수 있는 모든 데이터가 필요한 것은 아닙니다. 종종 데이터의 일부만 필요할 수도 있습니다.

Python을 사용하면 특정 데이터 섹션으로 작업할 수 있습니다.

CSV 파일로 작업하는 경우 Pandas의 CSV에서 특정 행을 작업하고 읽을 수 있습니다. 이 기사에서는 Pandas에서 CSV의 특정 행으로 작업하는 방법에 대해 설명합니다.

제자리 할당을 사용하여 Pandas의 CSV에서 특정 행 읽기

read_csv 기능을 통해 읽기 프로세스 중에 CSV에서 특정 행을 읽을 수 없습니다. 그래도 읽기 작업을 완료한 후에는 제자리 할당을 사용하여 원하는 데이터 프레임에서 특정 행을 선택할 수 있습니다.

설명을 위해 여기에 첨부된 CSV 파일을 사용하겠습니다. 먼저 CSV 파일인 leverage.csv를 읽어 봅시다.

import pandas as pd

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

print(df.head())

출력:

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

이 데이터 프레임을 사용하여 이제 특정 행을 선택하거나 읽을 수 있습니다. 예를 들어 fyearq2017 위에 있는 행만 원하는 경우 내부 할당을 사용할 수 있습니다.

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

출력:

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

query 기능을 사용하여 Pandas의 CSV에서 특정 행 읽기

내부 할당을 사용하는 대신 쿼리 함수를 사용할 수 있습니다. 이 기능을 사용하면 부울 식과 함께 쿼리 문자열을 전달할 수 있고 식을 충족하는 행이 선택됩니다.

"fyearq > 2017" 문자열을 query 함수에 전달하여 마지막 섹션에서와 동일한 효과를 얻을 수 있습니다.

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

출력:

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

chunksize를 사용하여 Pandas의 CSV에서 특정 행 읽기

그러나 CSV 파일을 일괄 처리해야 하는 경우(선택, 제약 또는 메모리로 인해) chunksize 매개변수를 사용하여 일부 행만 읽을 수 있습니다. 따라서 read_csv 함수 내에서 chunksize 매개변수를 지정하고 그 결과는 데이터세트의 청크에 액세스하기 위해 반복할 수 있는 반복자 객체입니다.

여기에서 chunksize를 60으로 지정했으므로 60개의 행만 로드됩니다.

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

출력:

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

---를 사용하여 한 번에 60개의 행만 로드됨을 나타냅니다.

loc을 사용하여 Pandas의 CSV에서 특정 행 읽기

query 함수 또는 제자리 할당과 마찬가지로 loc 연산자를 사용하여 읽을 특정 행을 정의하는 부울 식을 전달할 수 있습니다.

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

출력:

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

iloc을 사용하여 Pandas의 CSV에서 특정 행 읽기

일련의 행이 필요하고 해당 인덱스를 알고 있는 경우 iloc 연산자를 사용하고 [] 내에서 여러 인덱스를 전달할 수 있습니다. 그런 다음 인덱스가 있는 모든 행을 읽습니다.

여기에서는 색인 12, 1345가 있는 행만 읽습니다.

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

출력:

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

관련 문장 - Pandas CSV