Faker

파이썬을 활용한 JSON 파일 입출력 예제 with faker

강의 홍보

개요

  • JSON은 (JavaScript Object Notataion)의 약자이며, 주로 API 호출 시에 사용한다.
  • JSON 데이터를 개별적인 파일 형태로 저장하기도 한다.
  • json 라이브러리를 활용하여 입출력을 진행하고, pandas 라이브러리를 통해서도 직접 불러오도록 한다.

JSON 파일 쓰기 전체 코드

from faker import Faker
import json
output=open('data.json','w')
fake=Faker()
all_df={}
all_df['records']=[]
for x in range(1000):
	data={"name":fake.name(),
          "age":fake.random_int(min=18, max=80, step=1),
          "street":fake.street_address(),
          "city":fake.city(),
          "state":fake.state(),
          "zip":fake.zipcode(),
          "lng":float(fake.longitude()),
          "lat":float(fake.latitude())}
	all_df['records'].append(data)	
json.dump(all_df,output)
  • faker 라이브러리 설명은 파이썬을 활용한 파일 입출력 예제 with faker 에서 확인한다.
  • all_df는 빈(empty) 딕셔너리 형태로 저장한다.
  • all_df["records"] 라는 이름의 key 값에 각 레코드들의 배열을 담도록 하였다.
  • json.dump 로 표현하도록 한다.
  • 이제 파일을 실행하여 json을 내보낸뒤 결과물을 확인하도록 한다.
(venv) $ python3 ch01_writejson.py
(venv) $ ls
... data.json
  • data.json 파일을 열어서 확인하면 아래와 같이 깔끔하게 정렬된 json 데이터를 확인할 수 있을 것이다.

writejson_01.png

파이썬을 활용한 CSV 파일 입출력 예제 with faker

강의 홍보

사전 작업

  • 우선 임시 데이터를 기록할 라이브러리인 faker 를 설치한다.
  • 흔히 쓰이는 필드들을 함수 하나로 쉽게 만들 수 있도록 지원한다.
(venv) $ pip3 install faker

데이터 생성하기 전체 코드

  • 필자는 [writecsv.py](http://writecsv.py) 형태로 저장하였다.
  • 먼저 한줄 씩 설명하면 다음과 같다.
from faker import Faker
import csv
output=open('mydata.csv', mode = 'w')
fake=Faker()
header=['name','age','street','city','state','zip','lng','lat']
mywriter=csv.writer(output)
mywriter.writerow(header)
for r in range(1000):
    mywriter.writerow([fake.name(),fake.random_int(min=18, max=80, step=1), fake.street_address(), fake.city(),fake.state(),fake.zipcode(),fake.longitude(),fake.latitude()])
output.close()
  • from faker import Faker 는 라이브러리를 불러오는 것이다.
  • import csv.csv 파일로 만들어주는 함수를 제공한다.
  • 이제 하나씩 살펴보도록 한다.
output=open('mydata.csv','w')
  • 파일을 쓰기 모드로 연다는 뜻이며, w 파일 쓰기 모드로 지정한다.
  • 읽기 전용 모드로 사용하려면 r ,
  • 기존 내용에 덧붙여 쓴다면, a,
  • 읽기와 쓰기가 모두 가능한 파일 모드는 r+ ,
  • 마지막으로 텍스트가 아닌 파일을 다룰 때는 b 붙인다. 예를 들면, 데이터를 바이트 단위로 기록하려면 mode = "wb" 로 지정한다.

fake = Faker()
  • fakeFaker() 클래스의 객체를 생성했다는 것을 의미한다.

header=['name','age','street','city','state','zip','lng','lat']
  • header라는 리스트 객체를 만들고, 그 안에 각종 데이터가 들어갈 컬럼명을 추가했다.

mywriter=csv.writer(output)
mywriter.writerow(header)
for r in range(1000):
    mywriter.writerow([fake.name(),fake.random_int(min=18, max=80, step=1), fake.street_address(), fake.city(),fake.state(),fake.zipcode(),fake.longitude(),fake.latitude()])
output.close()
  • csv.writer 객체를 생성하여 mywriter로 지정한다.
  • 그리고, header를 writerow()로 추가하면, 일종의 컬럼값이 우선 만들어진다.
  • 그 후에, 데이터 행을 파일에 기록하는 코드를 fake 내 함수를 반복문으로 활용하여 만든 것이다.
  • 모든 작업이 완료가 되었으면 output.close() 로 종료 한다.

(venv) $ python3 ch01_loadcsv.py
(venv) $ ls
ch01_loadcsv.py data.csv
  • 파일을 실행하면 위와 같이 데이터가 만들어진 것을 볼 수 있다.
  • 실제 아래와 같이 나온 것을 확인할 수 있다.

loadcsv_01.png