우선 터널에다가 " openpyxl " 를 깔아줘야 한다.

- pip install openpyxl

그 이후에 파이썬 코드 "to_excel"을 사용하면 된다.

그전에 list 를 DataFrame 으로 변경해주거야 한다!

import pandas as pd
import numpy as np

df = pd.DataFrame.from_records(rent_id)
df.to_excel('test.xlsx')

 이렇게하면 저장이 가능하다.

'drive_time': 40008.0, 'geo_data': [{'velocity': '0.7'}, {'velocity': '0.6'}, {'velocity': '0.0'}, {'velocity': '0.0'}, {'velocity': '0.0'}, {'velocity': '2.2'}, {'velocity': '4.2'}, {'velocity': '1.8'}, {'velocity': '9.0'}, {'velocity': '5.6'}, {'velocity': '3.9'}, {'velocity': '6.5'}, {'velocity': '10.5'}, {'velocity': '10.2'}, {'velocity': '6.6'}, {'velocity': '1.6'}, {'velocity': '2.7'}, {'velocity': '6.3'}], 'rent_id': 229}

이런 형태의 배열로 되어있음

{}, [] 형태로 {} 되어있으면 .key, .items 로 for문을 돌려서 값을 읽어올수 있으나

둘이 겹쳐져 있는 json 타입의 형태는 entry 로 해서 그 값들을 가지고 활용해야 함

import json
from pprint import pprint

with open('20190801.json', encoding='utf-8') as data_file:    
    data = json.load(data_file)

pprint(data[50])

print(data[0]['rent_id'])
print(data[0]['drive_time'])
float(data[0]['geo_data'][26]['velocity'])

rent_id=[]

for entry in data :
    line=[]
    for key in entry['geo_data'] :
        line.append(float(key['velocity']))
    rent_id.append(line)

print(rent_id)

import matplotlib.pyplot as plt

plt.plot(rent_id[0])
plt.show()

 

이후에는 이 읽은 데이터를 다시 파일로 변환해서 저장하고

그걸로 이미지를 합쳐서 그릴 수 있어야함

골빈해커의 3분 딥러닝에서 공부한 내용입니다.

#비지도학습 Autoencoder
#텐서플로, numpy, matplotlib의 라이브러리 임포트
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

#MNIST 모듈 임포트
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

#########
#옵셥설정#
#########

learning_rate = 0.01 #최적화 함수에서 사용할 학습률
training_epoch = 20  #전체 데이터를 학습할 총 횟수
batch_size = 100     #미니배치로 한번에 학습할 데이터(이미지)의 갯수
n_hidden = 256       #은닉층의 뉴런 개수
n_input = 28*28      #이미지 크기 28*28 = 784

#########
#모델구성#
#########

X = tf.placeholder(tf.float32, [None, n_input])

#인코더
W_encode = tf.Variable(tf.random_normal([n_input, n_hidden]))  #n_hidden개의 뉴런을 가진 은닉층 만듬
b_encode = tf.Variable(tf.random_normal([n_hidden])) 
encoder = tf.nn.sigmoid(tf.add(tf.matmul(X,W_encode),b_encode)) #sigmoid 활성화 함수 적용

#디코더 (n_input과 n_hidden을 인코더와 반대로 입력)
W_decode = tf.Variable(tf.random_normal([n_hidden, n_input]))
b_decode = tf.Variable(tf.random_normal([n_input]))
decoder = tf.nn.sigmoid(tf.add(tf.matmul(encoder,W_decode),b_decode))

#########
#모델학습#
#########

#손실함수(두 값의 거리차이) = X(평가하기 위한 실측값) - 디코더의 결과값
cost = tf.reduce_mean(tf.pow(X-decoder,2))

#최적화 함수
optimizer = tf.train.RMSPropOptimizer(learning_rate).minimize(cost)

#학습진행
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)

total_batch = int(mnist.train.num_examples / batch_size)

for epoch in range(training_epoch):
    total_cost = 0
    
    for i in range(total_batch):
        batch_xs, batch_ys = mnist.train.next_batch(batch_size)
        _, cost_val = sess.run([optimizer, cost], feed_dict={X:batch_xs})
        total_cost += cost_val
        
    print('Epoct:', '%04d' % (epoch + 1), 'Avg. cost = ', '{:.4f}'.format(total_cost/total_batch))

print('최적화 완료!')


#########
#결과확인#
#########

#10개의 확인 이미지 추출
sample_size = 10
samples = sess.run(decoder, feed_dict={X:mnist.test.images[:sample_size]})

fig, ax = plt.subplots(2, sample_size, figsize=(sample_size, 2))

for i in range(sample_size):
    ax[0][i].set_axis_off()
    ax[1][i].set_axis_off()
    ax[0][i].imshow(np.reshape(mnist.test.images[i], (28,28))) #imshow : 이미지 출력함수
    ax[1][i].imshow(np.reshape(samples[i], (28,28)))

plt.show()

 

tsv 파일이란,

csv파일과 비슷하지만 ,(쉼표)가 아닌 탭으로 뛰어진 파일이다.

쉼표를 사용해야만하는 데이터가 있으면 탭으로 뛰어서 보내는 것도 방법이기에!

아래와 같이 한다면 열수있음!

import pandas as pd
dataset = pd.read_csv("파일이름.tsv",delimiter='\t')
print(dataset)

 

1. image crop

from PIL import Image

area = (가로시작점, 세로시작점, 가로범위, 세로범위)

crop_image = img.crop(area)

im.save # 저장하기

 

2. opveCV 활용

import cv2

src=cv2.imread("Image/pawns.jpg", cv2.IMREAD_COLOR)

dst=src.copy()

dst=src[100:600, 200:700] %높이, 너비

 

3. trim 활용

import cv2 #cv2 임포트

def im_trim (img): #함수로 만든다

x = 845;

y = 325; #자르고 싶은 지점의 x좌표와 y좌표 지정

w = 180; h = 235; #x로부터 width, y로부터 height를 지정

img_trim = img[y:y+h, x:x+w] #trim한 결과를 img_trim에 담는다

cv2.imwrite('org_trim.jpg',img_trim) #org_trim.jpg 라는 이름으로 저장

return img_trim #필요에 따라 결과물을 리턴

org_image = cv2.imread('test.jpg') #test.jpg 라는 파일을 읽어온다

trim_image = im_trim(org_image) #trim_image 변수에 결과물을 넣는다

출처: https://pikabu.tistory.com/42 [피카부]

 

4. numpy 슬라이싱

import cv2 img = cv2.imread("lenna.png")

crop_img = img[200:400, 100:300] # Crop from x, y, w, h -> 100, 200, 300, 400

# NOTE: its img[y: y + h, x: x + w] and *not* img[x: x + w, y: y + h]

cv2.imshow("cropped", crop_img)

cv2.waitKey(0)

+ Recent posts