여러 CSV 파일을 Pandas로 가져오고 하나의 DataFrame으로 연결

Preet Sanghavi 2023년10월10일
  1. 판다는 무엇인가
  2. Pandas를 사용하여 단일 .csv 파일을 읽는 방법
  3. Python에서 여러 CSV 파일 읽기
  4. Python에서 여러 DataFrame 연결
여러 CSV 파일을 Pandas로 가져오고 하나의 DataFrame으로 연결

이 튜토리얼은 여러 .csv 파일을 읽고 모든 DataFrame을 하나로 연결하는 방법에 관한 것입니다.

이 튜토리얼에서는 Pandas를 사용하여 데이터 파일을 읽고 DataFrame을 만들고 결합합니다.

판다는 무엇인가

이 패키지에는 다양한 데이터 파일을 읽고 데이터 조작 기술을 수행하는 다양한 기능이 포함되어 있습니다.

컴퓨터에 pandas 패키지를 설치하려면 명령 프롬프트/터미널을 열고 pip install pandas를 실행해야 합니다.

Pandas를 사용하여 단일 .csv 파일을 읽는 방법

pandas 패키지는 .csv 파일을 읽는 기능을 제공합니다.

>>> import pandas as pd
>>> df = pd.read_csv(filepath_or_buffer)

파일 경로가 주어지면 pandas 함수 read_csv()가 데이터 파일을 읽고 개체를 반환합니다.

>>> type(df)
<class 'pandas.core.frame.DataFrame'>

Python에서 여러 CSV 파일 읽기

pandas 모듈만 사용하여 이 작업을 수행하는 명시적 기능이 없습니다. 그러나 다음을 수행하기 위한 합리적인 방법을 고안할 수 있습니다.

먼저 모든 데이터 파일의 경로가 필요합니다. 모든 파일이 하나의 특정 폴더에 있으면 쉬울 것입니다.

모든 파일의 경로와 이름이 저장될 목록을 만듭니다.

>>> import pandas as pd
>>> import glob
>>> import os
>>> # This is a raw string containing the path of files
>>> path = r'D:\csv files'
>>> all_files = glob.glob(os.path.join(path, '*.csv'))
>>> all_files
['D:\\csv files\\FILE_1.csv', 'D:\\csv files\\FILE_2.csv']

위의 코드에서 파일 경로를 포함하는 목록이 생성됩니다.

glob 모듈

glob 모듈을 사용하여 패턴과 일치하는 파일 또는 경로 이름을 찾으십시오. glob은 표준 Unix 경로 확장 규칙을 따라 패턴을 일치시킵니다.

이 모듈은 이미 Python에 포함되어 있으므로 외부에 설치할 필요가 없습니다. 그러나 이 패키지가 없으면 pip install glob2를 입력하면 됩니다.

디렉토리/파일 및 하위 디렉토리/하위 파일 내에서 경로를 재귀적으로 검색하기 위해 glob 모듈의 함수 glob.glob()glob.iglob()을 활용할 수 있습니다.

통사론:

glob.glob(pathname, *, recursive=False)
glob.iglob(pathname, *, recursive=False)

이 함수는 모든 파일의 경로를 포함하는 목록을 반환합니다.

예를 들어 지정된 경로에서 모든 파일 이름을 검색하려면 경로 끝에 별표 기호 *를 사용하여 glob.glob('') 함수에 문자열로 전달합니다.

>>> for files in glob.glob(r'D:\csv files\*'):
	    print(files)

D:\csv files\FILE_1.csv
D:\csv files\FILE_2.csv
D:\csv files\textFile1.txt
D:\csv files\textFile2.txt

또한 보다 집중된 검색을 수행하려면 별표 기호 뒤에 파일 확장자를 지정하십시오.

>>> for files in glob.glob(r'D:\csv files\*.csv'):
	    print(files)

D:\csv files\FILE_1.csv
D:\csv files\FILE_2.csv

원시 문자열이란 무엇입니까

Python에서 원시 문자열은 리터럴 문자열에 r 또는 R을 추가하여 구성됩니다. 백슬래시(\)는 Python 원시 문자열의 리터럴 문자입니다.

백슬래시가 있는 문자열을 원하지만 이스케이프 문자로 간주하지 않으려는 경우에 유용합니다.

예를 들어:

탭 및 줄 바꿈과 같은 특수 문자를 나타내기 위해 백슬래시(\)를 사용하여 이스케이프 시퀀스의 시작을 나타냅니다.

>>> print("This\tis\nnormal\tstring")
This	is
normal	string

그러나 원시 문자열은 백슬래시(\)를 리터럴 문자로 취급합니다. 예를 들어:

>>> print(r"This\tis\nnormal\tstring")
This\tis\nnormal\tstring

os 모듈

Python의 os 모듈에는 운영 체제를 처리하기 위한 메서드가 포함되어 있습니다. os는 Python용 기본 유틸리티 모듈에 포함되어 있습니다.

이 모듈은 운영 체제에 따라 기능을 사용하는 이식 가능한 방법을 제공합니다. os 모듈의 하위 모듈인 Python의 os.path 모듈은 공통 경로 이름을 조작하는 데 사용됩니다.

Python의 os.path.join() 함수는 하나 이상의 경로 구성 요소를 지능적으로 연결합니다. 마지막 경로 구성 요소를 제외하고 이 접근 방식은 비어 있지 않은 각 부분 뒤에 정확히 하나의 디렉터리 구분 기호 ("/")를 배치하여 서로 다른 경로 구성 요소를 연결합니다.

링크할 최종 경로 구성 요소가 비어 있는 끝에 디렉터리 구분자 ("/")가 추가됩니다.

경로 구성 요소가 절대 경로를 나타내는 경우 이전에 연결된 모든 구성 요소가 삭제되고 결합은 절대 경로를 나타내는 구성 요소로 이동합니다.

통사론:

os.path.join(path, *path)

다른 경로 구성 요소를 병합하려면 os.path.join() 기능을 사용하십시오.

import os

path = "Users"
os.path.join(path, "Desktop", "data.csv")

출력:

'Users\\Desktop\\data.csv'

Python에서 여러 DataFrame 연결

더 나아가 glob.glob() 함수에서 반환된 경로를 사용하여 데이터를 가져오고 데이터 프레임을 만듭니다. 그런 다음 Pandas 데이터 프레임 개체도 목록에 추가합니다.

암호:

dataframes = list()

for dfs in all_files:
    data = pd.read_csv(dfs)
    dataframes.append(data)

데이터 프레임 목록이 생성됩니다.

>>> dataframes
[dataframe1, dataframe2]

데이터 프레임을 연결합니다.

참고: 데이터 프레임을 연결하기 전에 모든 데이터 프레임에 유사한 열이 있어야 합니다.

pd.concat(dataframes, ignore_index=True)

pandas.concat() 메서드는 Pandas 개체 축과 함께 모든 집중적인 연결 작업을 처리하며 다른 축에 있는 인덱스의 논리 작업(합집합 또는 교집합)을 선택적 추가로 설정합니다.

전체 코드:

# importing the required modules
import pandas as pd
import os
import glob

# Path of the files
path = r"D:\csv files"

# joining the path and creating list of paths
all_files = glob.glob(os.path.join(path, "*.csv"))

dataframes = list()

# reading the data and appending the dataframe
for dfs in all_files:
    data = pd.read_csv(dfs)
    dataframes.append(data)

# Concatenating the dataframes
df = pd.concat(dataframes, ignore_index=True)
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

관련 문장 - Python CSV