지난 1탄에서는
특정 폴더 안에 있는 파일(목록)만을 불러왔다.
1탄: https://danha23.tistory.com/7
이번에는
특정 폴더 안에있는 특정 파일(목록)을 반복해서 불러오겠다.
먼저, 앞선 단계에서 특정 폴더 내에 있는 모든 파일(목록)들을 불러온 변수에서 파일들을 반복문(for)으로 불러온다.
for f in file_names:
print(f)
불러온 파일들 중에서 '.xlsx' 형식의 데이터를 불러오겠다.
- 만일 csv 파일을 불러오길 원한다면, 'xlsx' 대신 'csv'를 입력하면 된다.
for f in file_names:
if 'xlsx' in f:
print(f)
이제 특정 폴더 내의 특정 파일(목록)들을 불러온 후 파일의 개수를 확인하겠다.
os.path.isfile() 함수를 이용하여 특정 파일들의 갯수를 확인하였다. (3개로 나타남)
- DF : DATA는 path_s 대체 가능 / 데이터를 불러오기 위한 변수 (경로 + 파일명)
- df : 불러온 파일들에 대한 각 데이터
num = 0
for f in file_names:
if 'xlsx' in f:
DF = DATA/f
df = pd.read_excel(DF, sheet_name='통계', engine='openpyxl', header=[5,6], index_col=[0,1,2])
# 폴더 안의 파일 갯수 확인
if os.path.isfile(os.path.join(DATA, f)):
num += 1
마지막으로 총 3개의 데이터를 하나로 합치는 과정을 진행하였다.
해당 데이터는 멀티 인덱스/컬럼으로 되어있기에 stack() 함수를 이용하여 데이터를 재구성하였다.
▶ 참고 : https://danha23.tistory.com/6
그리고 각 데이터 내에는 '년도'와 '월'이 없기에 해당 '년도'와 '월'을 알맞게 넣어주었다.
그 후, 생성한 데이터프레임 df_new 변수에 넣어줌으로써 데이터를 하나로 결합하였다.
최종적으로 생성한 데이터는 csv 파일로 저장하였다.
df_new = pd.DataFrame()
i = 1
for i in range(i, num+1):
df_2 = df.stack(level='연령').reset_index()
df_2 = df_2.drop('level_0', axis = 1)
df_2['연도'] = '2021년'
df_2['월'] = i
df_new = pd.concat([df_new, df_2])
df_new.to_csv("df_new.csv", index = False, encoding = 'euc-kr')
[참고자료]
'분석가 Step 1. 데이터 분석 > Python' 카테고리의 다른 글
지오코딩(Geocoding), 역지오코딩(Geocoding-reverse) 편 (0) | 2023.07.07 |
---|---|
데이터 분석의 기초, 데이터 파악하기 (0) | 2023.06.29 |
데이터 파일 인코딩 확인하기 (0) | 2023.06.22 |
특정 폴더 안의 파일(목록) 가져오기 (0) | 2023.03.16 |
다중인덱스/컬럼(Multi Index/Column) 편 (0) | 2023.03.16 |