无法从从 API 抓取的数据中消除无效数据点



我想使用本网站(https://min-api.cryptocompare.com/documentation?key=Historical&cat=dataHistoday(的api将所有每日历史OHCLV恢复到硬币发行的日期。我设法从 api 获取所有数据,但由于我设置 allData=true,API 返回所有数据返回最早的时间戳,但是,由于有些硬币没有那么早发行,因此有许多无效数据点的价格都等于 0。

为了摆脱这些数据点,我尝试使用 for 循环来检查数据集并删除所有价格 =0 的数据集。这似乎不起作用,任何人都可以帮助我解决这个问题(仅包括价格不为 0 的数据点(?

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
from requests_html import HTMLSession
def historical_OHLCV():
url = "https://min-api.cryptocompare.com/data/v2/histoday?fsym=SNT&tsym=USD&allData=true"
page = requests.get(url)
data = list(page.json()['Data'].values())[3]
for dic in data:
exam_frame= list(dic.values())[1:6]
if all (int(i)==0 for i in exam_frame):
data.remove(dic)
else:
df = pd.DataFrame(data)
df['timestamp'] = [datetime.datetime.fromtimestamp(d) for d in df.time]
return df
allData = historical_OHLCV()
RenderJSON(allData)
print (allData)

我当前的输出如下所示

也许寻找您不希望为零的列,例如收盘价

import requests
import pandas as pd
r = requests.get('https://min-api.cryptocompare.com/data/v2/histoday?fsym=SNT&tsym=USD&allData=true').json()
data = r['Data']['Data']
df = pd.DataFrame([item for item in data if float(item['close'])!=0])
print(df)

这与使用卷到相匹配,这可能是更合乎逻辑的选择

df = pd.DataFrame([item for item in data if float(item['volumeto'])!=0])

最新更新