๐Ÿ“ˆ3D Graph2

Gyeomiiยท2022๋…„ 7์›” 18์ผ
0

DDITPython

๋ชฉ๋ก ๋ณด๊ธฐ
18/18
post-thumbnail

์ฃผ์‹๋ฐ์ดํ„ฐ๋กœ ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ

์ฃผ์‹ ์ข…๋ชฉ ๊ฐœ์ˆ˜

๊ฐ€๊ฒฉ ๋ณ€๋™ ๋ฐ์ดํ„ฐ ์ˆ˜

  • DB์— ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ ํ–ˆ๋‹ค.
  • ์ด 895์ข…๋ชฉ์ด ์žˆ๊ณ  ๊ฐ ์ข…๋ชฉ๋™ 3952๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค.

๋ฐฉ๋ฒ•1

Dao์ƒ์„ฑ

์ปฌ๋Ÿผ๋ช…(์ข…๋ชฉ๋ช…) ๊ฐ€์ ธ์˜ค๋Š” ์ฟผ๋ฆฌ ์ž‘์„ฑ

def selectPrice(self,s_code):
	ret=[]
  sql = f"select {s_code} from stock_sync_0121"
  self.cur.execute(sql)
  rows = self.cur.fetchall()
	  for r in rows:
	    ret.append(r[s_code])
	return ret

์ข…๋ชฉ๋ณ„ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๋Š” ์ฟผ๋ฆฌ ์ž‘์„ฑ

 def selectCode(self):
	 ret=[]
   sql = f"""
				SELECT COLUMN_NAME
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_NAME = 'stock_sync_0121'
				"""
   self.cur.execute(sql)
   rows = self.cur.fetchall()
	   for r in rows:
	     ret.append(r['COLUMN_NAME'])
       ret.remove('in_time')
   return ret

์ „์ฒด ์ฝ”๋“œ

import pymysql

class StockSyncDao:
    def __init__(self):
        self.conn = pymysql.connect(host='localhost', port=3305,
                       user='root', password='python',
                       db='_stock_old', charset='utf8')
        self.cur = self.conn.cursor(pymysql.cursors.DictCursor)
    
    def selectPrice(self,s_code):
        ret=[]
        sql = f"select {s_code} from stock_sync_0121"
        self.cur.execute(sql)
        rows = self.cur.fetchall()
        for r in rows:
            ret.append(r[s_code])
        return ret
    
    def selectCode(self):
        ret=[]
        sql = f""" SELECT COLUMN_NAME
                    FROM INFORMATION_SCHEMA.COLUMNS
                    WHERE TABLE_NAME = 'stock_sync_0121' """
        self.cur.execute(sql)
        rows = self.cur.fetchall()
        for r in rows:
            ret.append(r['COLUMN_NAME'])
        ret.remove('in_time')
        return ret
    
    def __del__(self):
        self.cur.close()
        self.conn.close()
        
if __name__ == '__main__':
    # dao = StockSyncDao()
    # list = dao.selectCode()
    # print(list)

์ฃผ์‹ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์™€์„œ ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ

import matplotlib.pyplot as plt
from day16.stocksyncdao import StockSyncDao
import numpy as np

sd = StockSyncDao()

arr_code = sd.selectCode()

arr_price = []

for i in arr_code:
    arr_price.append(sd.selectPrice(i))

length = len(arr_price[0])

x = np.zeros(length)

y = []

for i in range(length):
    y.append(i)

fig = plt.figure()
ax = fig.add_subplot(1,1,1, projection='3d')

for idx, z in enumerate(arr_price):
    z_n = np.array(z)
    percentage = z_n/z_n[0]
    ax.plot(x + idx, y, percentage)

plt.show()
  • x์ถ• : ํ•œ ์ข…๋ชฉ์˜ ์ „์ฒด ๊ฐ€๊ฒฉ์˜ ๊ฐฏ์ˆ˜ ๋งŒํผ 0์„ ์ฐ์Œ
  • y์ถ• : ์ „์ฒด๊ฐ€๊ฒฉ ๊ฐฏ์ˆ˜์˜ ๋ฒ”์œ„๋งŒํผ 0๋ถ€ํ„ฐ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚จ ๊ฐ’์„ ๋„ฃ์Œ
  • z์ถ• : ๊ฐ€๊ฒฉ์˜ ๋ณ€ํ™”
  • for๋ฌธ์˜ ๊ฐฏ์ˆ˜ : ์‹ค์ œ ์ข…๋ชฉ ์ˆ˜

๊ฒฐ๊ณผ

๋ฐฉ๋ฒ• 2

Dao

import numpy as np
import pymysql

class DaoStockSink:
    def __init__(self):
        self.conn = pymysql.connect(host='localhost', user='root', password='python',port=3305,
                       db='_stock_old', charset='utf8')
 
        self.curs = self.conn.cursor()

    def selects(self):
        sql = f"""
            select * from stock_sync_0121
        """
        self.curs.execute(sql)
        rows = self.curs.fetchall()
        
        row_c = []
        for r in rows:
            len_r = len(r)
            row_c.append(r[:len_r-1])
        
        rows_n = np.array(row_c)
        rows_t = np.transpose(rows_n)
        return rows_t

    
    def __del__(self):
        self.curs.close()
        self.conn.close()
        
if __name__ == '__main__':
    dss = DaoStockSink()
    list = dss.selects()
    print("len",len(list))
    for idx,tu in enumerate(list):
        print(idx,tu)

๊ทธ๋ž˜ํ”„๊ฐ€์ ธ์˜ค๊ธฐ

import matplotlib.pyplot as plt

import numpy as np
from day16_2.daostocksink import DaoStockSink

dss = DaoStockSink()

    
arrzs = dss.selects()    
    
mylen = len(arrzs[0])  
print("mylen",mylen)  

arrx = np.zeros(mylen)
arry = list(range(mylen))

fig = plt.figure()
ax = fig.add_subplot(1,1,1, projection='3d')

for idx,arrz in enumerate(arrzs):
    ax.plot(arrx+idx,arry,arrz/arrz[0])

plt.show()

profile
๊น€์„ฑ๊ฒธ

0๊ฐœ์˜ ๋Œ“๊ธ€