json 활용하기 딕셔너리 대용량 데이터파일만들기

gyeorrr·2023년 8월 8일
0

json

내가 아는 json 모듈의 사용방식은, 다른파일을 불러오거나,읽을 때 사용됨
파일을 읽을수도, 수정도 가능함

나는 openpyxl , json 두가지 모듈을 이용해서 엑셀에 있는 데이터파일들을 딕셔너리 형태로 정리해볼것이다

엑셀 데이터 형식

(해당 데이터는 임의로 작성한것임)

내가 원하는 딕셔너리 형태

{이름 : 곽세신 생년월일 : 990626 주소 : 경북 ••• 1번지 },

우선 openpyxl로 파일을 불러와야한다

import openpyxl
filename = "파일주소"
book = openpyxl.load_workbook(filename)

sheet = book.worksheets[0]

data = []

여기까지 해설을 하자면 >>>
book = openpyxl.load_workbook(filenmae) 해당엑셀파일을 book 이라는 파라미터(변수)로 저장(초기화)

sheet = book.worksheets[0] 해당엑셀파일 worksheets[시트번호]를 sheet에 저장

data = [] 엑셀의 데이터를 담을곳

본격적으로 엑셀데이터 불러오기

for row in sheet.rows:
	data.append([
    row[1].value,
    row[2].value,
    row[3].value,
   ])

반복문을 이용 row 는 엑셀의 '열'을 뜻함 엑셀에서의 1열은 파이썬에서는 0열이다
엑셀 데이터는 B열에서 시작되므로 row[1],row[2],row[3] 이런식으로 흘러간다
하면 데이터는 data에 저장됨

>>>
[['name', 'birth', 'address'],
['곽세신', 990626, '경북 상주시 외남면 흔평리 1번지'], 
['양태예', 981223, '경북 상주시 외남면 흔평리 2번지'], 
['황우경', 980525, '경북 상주시 외남면 흔평리 3번지'],

이런식으로 저장된다 이제 데이터를 딕셔너리 형태로 정리해보자

반복문으로 데이터를 딕셔너리 형태로 정리해보기

dict1 = []
for i in range(len(data):
	dict1.append(({"이름":data[i][0],"주민번호":data[i][1],"주소지":data[i][2]}))
print(dict1)

>>>[{'이름': 'name', '주민번호': 'birth', '주소지': 'address'},
 {'이름': '곽세신', '주민번호': 990626, '주소지': '경북 상주시 외남면 흔평리 1번지'},
 {'이름': '양태예', '주민번호': 981223, '주소지': '경북 상주시 외남면 흔평리 2번지'},

해설
for i in range(len(data): data의 길이 만큼 반복 (data의 길이는 대괄호안에 들어있는 게 1로 카운트됨
dict1.append(({"이름":data[i][0],"주민번호":data[i][1],"주소지":data[i][2]})) i는 해당데이터의 인덱싱 [0][1][2]는 i인덱싱의 인덱싱

json을 이용해서 데이터 저장하기

딕셔너리 형태로 정리된 데이터들을 다른파일에 정리해뒀다가 필요할 때 불러와서 쓸 수 있다면 효율적일 것이다

import json

# 파일만들기
with open("파일이름".json","w") as f:
	json.dump(dict1,f,indent="t" ensure_ascii=False)
    
# 파일불러오기
withe open("파일경로","r") as f:
	data = json.load(f)

딕셔너리를 사용하는 것 보다 클래스를 사용하는 게 더 효율적이라고 하지만 아직 배우지않아서 다음시간에 배워서 응용해보도록 하겠다

1개의 댓글

comment-user-thumbnail
2023년 8월 8일

감사합니다. 이런 정보를 나눠주셔서 좋아요.

답글 달기