数据入口:【每周挑战】比特币10年价格数据可视化和量化分析 - Heywhale.com
本数据集包含 2014 - 2024 的比特币美元价格数据,具体包含比特币每日的开盘价、最高价、最低价、收盘价以及成交量等关键信息。数据说明如下:
字段 | 说明 |
---|---|
Date | 日期,比特币的交易日期 |
Open (Open price per unit) | 开盘价,每天比特币交易开始时的价格 |
High (Highest price per unit) | 最高价,每天交易期间比特币的最高成交价格 |
Low | 最低价,每天交易期间比特币的最低成交价格 |
Close (Adj Close) | 收盘价,指当天交易结束时的价格,调整后的收盘价考虑了股息等因素 |
Volume | 成交量,每天比特币的交易量,通常以比特币的单位表示 |
本文将从以下方面进行:价格波动与趋势分析、成交量与市场波动关系分析、价格异常波动检测和成交量异常值检测。
一:数据预处理
import pandas as pd
file_path = 'BTC-USD (2014-2024).csv'
df = pd.read_csv(file_path)
df1 = df[['Date', 'Adj Close', 'Volume']]
df1
这里常用收盘价作为当日比特币价格,所以可以去除其他与数据分析无关的列,数据样貌如下:
df1.info()
数据概览如下:
有与观察到数据存在空值,可能会影响后续分析,可以先去除空值:
df1 = df1.dropna(subset=['Adj Close', 'Volume'])
二:价格波动与趋势分析
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
df1['Date'] = pd.to_datetime(df1['Date'])
start_index_2014 = df1[df1['Date'].dt.year == 2014].index[0]
plt.figure(figsize=(14, 7))
plt.plot(df1['Date'], df1['Adj Close'], label='Adjusted Close Price')
plt.title('Adjusted Close Price Trend from 2014')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.gca().xaxis.set_major_locator(mdates.YearLocator())
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y'))
plt.gca().set_xlim(df1['Date'][start_index_2014], df1['Date'].iloc[-1])
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
rolling_window = 30
df1['Rolling Mean'] = df1['Adj Close'].rolling(window=rolling_window).mean()
df_reduced['Rolling Std'] = df1