Pandas의 CSV에서 특정 행 읽기
- 제자리 할당을 사용하여 Pandas의 CSV에서 특정 행 읽기
-
query
기능을 사용하여 Pandas의 CSV에서 특정 행 읽기 -
chunksize
를 사용하여 Pandas의 CSV에서 특정 행 읽기 -
loc
을 사용하여 Pandas의 CSV에서 특정 행 읽기 -
iloc
을 사용하여 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
이 데이터 프레임을 사용하여 이제 특정 행을 선택하거나 읽을 수 있습니다. 예를 들어 fyearq
가 2017
위에 있는 행만 원하는 경우 내부 할당을 사용할 수 있습니다.
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
, 13
및 45
가 있는 행만 읽습니다.
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 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