본문 바로가기
코딩 공부/python

온체인 데이터를 이용한 지표 웹사이트 쉽게 만들기(2)

by Camel_coding_food 2023. 2. 6.
반응형

종종 암호화폐 숭배자 분들이 저한테 설명할때 이렇게 보일때가 있습니다.

 

저번에 온체인 데이터를 가져오는 것까지 했습니다.

 

그래프 먼저 그려볼까요?

 


저번 코드는 1초단위 데이터를 가져와

우리가 원하는 단위의 데이터로 변환했는데,

더 나은 방법이 있어 코드를 수정해봤습니다.

import requests
import matplotlib.pyplot as plt
import pandas as pd
import datetime

url = "https://api.blockchain.info/charts/n-transactions?format=json&timespan=30days"

response = requests.get(url)
data = response.json()

dates = []
volumes = []	#날짜와 거래량 데이터를 넣을 빈 리스트를 준비합니다.
for point in data['values']:
    dates.append(datetime.datetime.fromtimestamp(point['x']).strftime('%Y-%m-%d'))
    volumes.append(point['y'])
    #가져온 데이터 안의 날짜 정보를 %Y-%m-%d형태로 가공하여, 그래프 x축에 사용할 날짜 리스트에 넣습니다

df = pd.DataFrame({'date': dates, 'volume': volumes})
df['volume'] = df['volume'].astype(int)
#데이터프레임을 만들어 각 x축과 y축에 데이터를 넣은 후, 거래량 데이터를 int 형식으로 바꿔줍니다.

df.set_index('date', inplace=True)
df.plot(kind='line', figsize=(12, 6), color='blue')
plt.xlabel("Date")
plt.ylabel("Transaction Volume (BTC)")
plt.title("Bitcoin On-Chain Transaction Volume")
plt.show()			#그래프를 그려줍니다.

완성했습니다.

 

출력해봅시다.

 

이렇게 나오네요.

제가 사용한 데이터의 출처 사이트로 가봅시다.

 

https://www.blockchain.com/explorer/charts/n-transactions

 

Blockchain.com | Charts - Unknown Chart

The most trusted source for data on the bitcoin blockchain.

www.blockchain.com

파란색 선이 트렌젝션 양입니다.

제가 출력한 그래프와 똑같이 나오는걸 알 수 있습니다.

 

이제 비트코인 네트워크 가치(시가총액)를 구해봅시다.

 


ChatGPT의 도움을 받아봅시다.

 

"비트코인 시가총액을 구하는 파이썬 코드를 짜줘"

API키가 필요한 코드네요.

 

더 까다로운 주문을 해봅시다.

coingecko 거래소는 API키가 없어도 된다네요.

 

AI가 만들어준 코드입니다.

import requests

url = "https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=bitcoin"

response = requests.get(url)
data = response.json()

market_cap = data[0]['market_cap']
print("Bitcoin market cap: ${:,.2f}".format(market_cap))

코드를 실행해보면 2023년 2월 5일 20:37기준으로

$451,039,245,662.00이 나옵니다.

 

 


 

30일간의 비트코인 개수 그래프도 그려봅시다.

import requests
import matplotlib.pyplot as plt
import pandas as pd
import datetime

url = "https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=usd&days=30"
response = requests.get(url)
data = response.json()


market_cap_data = [(datetime.datetime.fromtimestamp(item[0]/1000).strftime('%Y-%m-%d'), item[1]) for item in data['prices']]


df = pd.DataFrame(market_cap_data, columns=['Date', 'Market Cap'])

# 일별 데이터를 모아 평균을 내준 후, 데이터프레임의 인덱스를 1,2,3...으로 초기화해줍니다
df = df.groupby('Date').mean().reset_index()

print(df)
# plot the data using Matplotlib
plt.plot(df['Date'], df['Market Cap'])
plt.xlabel('Date')
plt.ylabel('Market Cap (in USD)')
plt.title('Bitcoin Market Cap for the Last 30 Days (averaged by day)')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

이 코드도 ChatGPT가 작성해준 코드입니다.

한동안 증가했네요.

 

 

두 코드를 합쳐서 비트코인 NVT그래프를 그려봅시다.

 


.....

 

코드를 실행해보신 분들은 아시겠지만

바로 위 코드는 잘못된 코드입니다.

 

 

ChatGPT에게 bitcoin Market Cap, 즉 비트코인 시가총액을 

그래프로 보여달라고 했지만,

저 코드는 비트코인 가격을 출력해주는 코드입니다.

 

 

AI가 만든 밈이라고 합니다. 웃기죠?

 

인간인 제가 AI를 이겼습니다.

.

.

라고 할 수는 없지만

현존하는 AI 기술의 한계를 보여주는 듯 합니다.

 

 

각 웹서비스가 제공하는 API를 실시간으로 파악할 수 없어,

CoinGecko에서 시가총액을 json형태로 제공해주는 API가 있음에도 불구하고

수없이 요구해도 위의 오류 코드와 비슷한 코드만 내놓더군요.

 

 

다음 게시물에서 제가 한번 짜보겠습니다.

 

다음 게시물에서는 API 문서를 읽는법과

해당 API를 코드에 사용해보겠습니다.

 

 

 

 

추신: 혹시 Django 기초 책이나 무료강의를 추천해주실 수 있으신분은 꼭 댓글 달아주시면 좋겠습니다.

최근에 공부하기 시작했는데 어려워서요.

반응형

댓글