python中的加密货币关联,使用字典

2024-09-28 18:49:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个加密货币数据示例,每个单元格都包含一个字典。包含开盘价、收盘价、最高价、最低价、成交量和市值的字典。列是相应的日期,索引是每个加密货币的名称。你知道吗

我不知道如何准备数据,以便我找到不同货币之间的相关性,例如最高价格和成交量之间的相关性。在python(pandas)中如何做到这一点……在这种情况下,我又该如何定义日期范围呢?你知道吗

这里有一个到数据示例、我的编码和数据的打印输出的链接(访问对公众开放):https://drive.google.com/open?id=1mjgq0lEf46OmF4zK8sboXylleNs0zx7I


Tags: 数据名称示例pandas字典定义货币情况
1条回答
网友
1楼 · 发布于 2024-09-28 18:49:56

首先,我建议重新排列数据,使每种货币的OHLCV值都是它们自己的列(例如“btc|U open | btc|U high”等)。这使得生成相关矩阵更加容易。我还建议你在分析中只从一个指标(如收盘价)开始,也许还可以从周期变动(如收盘开盘)开始。回答您的问题:

熊猫可以返回所有列的相关矩阵:

df.corr()

如果只想使用特定列,请从数据框中选择这些列:

df[["col1", "col2"]].corr()

可以使用以下格式返回两列之间的单个相关值:

df["col1"].corr(df["col2"])

如果您想指定一个特定的日期范围,我建议您使用这个question。我相信这将要求您的日期列或索引类型为datetime。如果您不知道如何使用或转换为这种类型,我建议您查阅pandas文档(可能从pandas.to_datetime开始)。你知道吗

今后,我建议在你的帖子中加入一个数据片段。我不认为googledrive是共享数据的合适形式,将数据设置为“request access”肯定是不合适的。你知道吗

编辑:我检查了您的数据并创建了一个较小的子集来测试这个方法。如果数据有缺陷,你可能会发现问题,但当我在你最初的100天和10枚硬币的样本上测试时,我没有发现问题(在转换之后,测向iloc[:100, :10]. 你知道吗

首先,转换数据帧,使列按硬币排列,行按日期排列。你知道吗

df = df.T

接下来,我们连接到一个新的数据帧(result)。或者,连接到原始列并在之后删除列。不幸的是,我想不出一个非迭代的方法。此方法逐列进行,为每个硬币创建一个数据帧,将硬币名称前缀添加到列名,然后将每个数据帧连接到末尾。你知道吗

result = pd.DataFrame()
coins = df.columns.tolist()
for coin in coins:
    coin_data = df[coin]
    split_coin = coin_data.apply(pd.Series).add_prefix(coin+"_")
    result = pd.concat([result, split_coin], axis=1)

相关问题 更多 >