Python/Basic

[Python] glob함수 사용

Ddolgom 2022. 11. 7. 10:37
반응형

Python에서 데이터 분석을 위해서 데이터들을 가져오게 된다.

 

정형데이터나 비정형 데이터와는 상관없이 파일의 양이 많은 경우가 대부분이다.

 

판다스를 사용하기 위해서 excel파일이나 csv파일을 불러오는 예시를 보자.

df = pd.read_excel('/content/data_01/data_day_2019.xlsx') # excel 불러오기
df
df = pd.read_csv('/content/data_01/data_day_2019.csv') # csv 파일 read
df

변수명인 df를 참조하고, pd.read_csv나 pd.read_excel을 입력하고 괄호안에 파일 경로를 입력해준다. ('파일이 있는 경로 입력') 

 

물론 pd를 쓰려면 판다스 라이브러리를 import 해 놓은 상태여야 한다.

import pandas as pd  # 사전에 입력

파일이 한개이면 모르겠으나, 만약 저런 csv파일이나 excel 파일이 100개 이상 또는 1000개 이상이면 어떻게 다 일일이 입력할수 있을까?

 

그래서 나온것이 glob 모듈의 glob 함수다. 

 

glob 함수는 사용자가 제시한 조건에 맞는 파일명을 리스트 형식으로 반환한다. (파일 목록을 한번에 가져 올 수 있다.)

 

import glob # glob 모듈 호출
glob.glob('data_01/data_day_*.xlsx') glob 모듈안에 있는 glob함수 사용
glob.glob('data_01/data_day_*.xlsx') 같은 경우에는 day_1, day_2 같은 파일들이 있는데, day_*는 모든 파일을 불러온느 역할을 한다.
 
실행 결과 (파일이 4개 밖에 없다.)

 

오름차순 또는 내림차순으로 정렬이 안되어 있는데, 정렬을 위해서는 sorted()함수를 사용한다.

sorted(glob.glob('data_01/data_day_*.xlsx'))

 

실행결과 오름차순으로 정렬되었다.

 

행과 열이 같은 파일들을 합쳐야 할때도 유용하게 사용될 수 있다.

 

다음은 예시다.

 

import glob # glob 모듈 import

df_list = [] # 모든 파일을 합쳐줄 빈 리스트 생성

for x in sorted(glob.glob('/content/data_01/data_day_*.xlsx')):
    temp = pd.read_excel(x) # 파일을 읽어오기
    df_list.append(temp) # 읽어온 파일들을 빈리스트에 넣어주기 
    
df = pd.concat(df_list, axis = 0) # df 변수에 판다스 concat 함수로 합쳐준다. axis = 0이기 때문에 아랫단에 행으로 붙는다.

df.shape # 제대로 붙었는지 확인하기 (shape로 행과 열을 확인할수 있다.)

출력결과

행이 60208개 인데, glob 모듈과 for문을 활용하여 간단하게 몇줄로 파일을 합치게 되었다.

 

정형 데이터를 다루는 실무에서 많이 쓰이는 부분으로 많이 활용하여 암기가 되면 좋을 부분이다.

반응형