python數(shù)據(jù)分析近年比特幣價(jià)格漲幅趨勢(shì)分布
大家好,我是辣條。
曾經(jīng)有一個(gè)真摯的機(jī)會(huì),擺在我面前,但是我沒有珍惜,等到失去的時(shí)候才后悔莫及,塵世間最痛苦的事莫過于此,如果老天可以再給我一個(gè)再來一次機(jī)會(huì)的話,我會(huì)買下那個(gè)比特幣,哪怕付出所有零花錢,如果非要在這個(gè)機(jī)會(huì)加上一個(gè)期限的話,我希望是十年前。
看著這份臺(tái)詞是不是很眼熟,我稍稍改了一下,曾經(jīng)差一點(diǎn)點(diǎn)點(diǎn)就購(gòu)買比特幣了,腸子都悔青了現(xiàn)在,今天對(duì)比特幣做一個(gè)簡(jiǎn)單的數(shù)據(jù)分析。
# 安裝對(duì)應(yīng)的第三方庫 !pip install pandas !pip install numpy !pip install seaborn !pip install matplotlib !pip install sklearn !pip install tensorflow
使用技術(shù)點(diǎn)
1. 數(shù)據(jù)處理 - pandas
2. 科學(xué)運(yùn)算 - numpy
3. 數(shù)據(jù)可視化 - seaborn matplotlib
使用工具
1. anaconda
2. notebook
3. python3.7版本
導(dǎo)入第三方庫
#a|T + enter notebook運(yùn)行方式
import pandas as pd # 數(shù)據(jù)處理
import numpy as np # 科學(xué)運(yùn)算
import seaborn as sns # 數(shù)據(jù)可視化
import matplotlib.pyplot as plt # 數(shù)據(jù)可視化
import warnings
import warnings
warnings.filterwarnings('ignore')
如遇到導(dǎo)包報(bào)錯(cuò) 可以看看是不是自己的第三方庫的版本問題
# 設(shè)置圖表與 線格式
plt.rcParams['figure.figsize'] = (10, 10)
plt.rcParams['lines.linewidth'] = 2
plt.style.use('ggplot')
# 讀取數(shù)據(jù)集
df = pd.read_csv('./DOGE-USD.csv')
df.head() # 查看前5行
| Date | Open | High | Low | Close | Adj Close | Volume | |
|---|---|---|---|---|---|---|---|
| 0 | 2014-09-17 | 0.000293 | 0.000299 | 0.000260 | 0.000268 | 0.000268 | 1463600.0 |
| 1 | 2014-09-18 | 0.000268 | 0.000325 | 0.000267 | 0.000298 | 0.000298 | 2215910.0 |
| 2 | 2014-09-19 | 0.000298 | 0.000307 | 0.000275 | 0.000277 | 0.000277 | 883563.0 |
| 3 | 2014-09-20 | 0.000276 | 0.000310 | 0.000267 | 0.000292 | 0.000292 | 993004.0 |
| 4 | 2014-09-21 | 0.000293 | 0.000299 | 0.000284 | 0.000288 | 0.000288 | 539140.0 |
df.isnull().sum() # 統(tǒng)計(jì)缺失值的總和(sum())
Date 0
Open 5
High 5
Low 5
Close 5
Adj Close 5
Volume 5
dtype: int64
df.duplicated().sum() # 查看重復(fù)值
0
# 數(shù)據(jù)類型 分布基本情況
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2591 entries, 0 to 2590
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Date 2591 non-null object
1 Open 2586 non-null float64
2 High 2586 non-null float64
3 Low 2586 non-null float64
4 Close 2586 non-null float64
5 Adj Close 2586 non-null float64
6 Volume 2586 non-null float64
dtypes: float64(6), object(1)
memory usage: 141.8+ KB
# 轉(zhuǎn)換 Date的類型
df['Date'] = pd.to_datetime(df.Date, dayfirst=True)
# 索引重置 讓Date時(shí)間格式成為 索引 inplace新建對(duì)象
df.set_index('Date', inplace=True)
df
| Open | High | Low | Close | Adj Close | Volume | |
|---|---|---|---|---|---|---|
| Date | ||||||
| 2014-09-17 | 0.000293 | 0.000299 | 0.000260 | 0.000268 | 0.000268 | 1.463600e+06 |
| 2014-09-18 | 0.000268 | 0.000325 | 0.000267 | 0.000298 | 0.000298 | 2.215910e+06 |
| 2014-09-19 | 0.000298 | 0.000307 | 0.000275 | 0.000277 | 0.000277 | 8.835630e+05 |
| 2014-09-20 | 0.000276 | 0.000310 | 0.000267 | 0.000292 | 0.000292 | 9.930040e+05 |
| 2014-09-21 | 0.000293 | 0.000299 | 0.000284 | 0.000288 | 0.000288 | 5.391400e+05 |
| ... | ... | ... | ... | ... | ... | ... |
| 2021-10-16 | 0.233881 | 0.244447 | 0.233683 | 0.237292 | 0.237292 | 1.541851e+09 |
| 2021-10-17 | 0.237193 | 0.241973 | 0.226380 | 0.237898 | 0.237898 | 1.397143e+09 |
| 2021-10-18 | 0.237806 | 0.271394 | 0.237488 | 0.247281 | 0.247281 | 5.003366e+09 |
| 2021-10-19 | NaN | NaN | NaN | NaN | NaN | NaN |
| 2021-10-20 | 0.245199 | 0.246838 | 0.242384 | 0.246078 | 0.246078 | 1.187871e+09 |
2591 rows × 6 columns
df = df.asfreq('d') # 按照天數(shù)采集數(shù)據(jù)
df = df.fillna(method='bfill') # 缺失值填充 下一條數(shù)據(jù)填充
df
| Open | High | Low | Close | Adj Close | Volume | |
|---|---|---|---|---|---|---|
| Date | ||||||
| 2014-09-17 | 0.000293 | 0.000299 | 0.000260 | 0.000268 | 0.000268 | 1.463600e+06 |
| 2014-09-18 | 0.000268 | 0.000325 | 0.000267 | 0.000298 | 0.000298 | 2.215910e+06 |
| 2014-09-19 | 0.000298 | 0.000307 | 0.000275 | 0.000277 | 0.000277 | 8.835630e+05 |
| 2014-09-20 | 0.000276 | 0.000310 | 0.000267 | 0.000292 | 0.000292 | 9.930040e+05 |
| 2014-09-21 | 0.000293 | 0.000299 | 0.000284 | 0.000288 | 0.000288 | 5.391400e+05 |
| ... | ... | ... | ... | ... | ... | ... |
| 2021-10-16 | 0.233881 | 0.244447 | 0.233683 | 0.237292 | 0.237292 | 1.541851e+09 |
| 2021-10-17 | 0.237193 | 0.241973 | 0.226380 | 0.237898 | 0.237898 | 1.397143e+09 |
| 2021-10-18 | 0.237806 | 0.271394 | 0.237488 | 0.247281 | 0.247281 | 5.003366e+09 |
| 2021-10-19 | 0.245199 | 0.246838 | 0.242384 | 0.246078 | 0.246078 | 1.187871e+09 |
| 2021-10-20 | 0.245199 | 0.246838 | 0.242384 | 0.246078 | 0.246078 | 1.187871e+09 |
2591 rows × 6 columns
In [14]:
# 開盤價(jià)的分布情況 df['Open'].plot(figsize=(12, 8))

結(jié)論:從上圖可以看出 BTB是在2021年份開始爆發(fā)式的增長(zhǎng) 在2015 到 2021 一直都是沒有較大波動(dòng)
# 成交情況 df['Volume'].plot(figsize=(12, 8))

# 投資價(jià)值 df['Total Pos'] = df.sum(axis=1) df['Total Pos'].plot(figsize=(10, 8))

結(jié)論:開盤價(jià)高 投資價(jià)值搞 比較合適做賣出操作 實(shí)現(xiàn)一夜暴富(開玩笑的)
# 當(dāng)前元素與先前元素的相差百分比 df['Daily Reture'] = df['Total Pos'].pct_change(1) # 日收益率的平均 df['Daily Reture'].mean() df['Daily Reture'].plot(kind='kde')

SR = df['Daily Reture'].mean() / df['Daily Reture'].std() all_plot = df/df.iloc[0] all_plot.plot(figsize=(24, 16))

df.hist(bins=100, figsize=(12, 6))

# 按照年份進(jìn)行采樣 df.resample(rule='A').mean()
| Open | High | Low | Close | Adj Close | Volume | Total Pos | Daily Reture | |
|---|---|---|---|---|---|---|---|---|
| Date | ||||||||
| 2014-12-31 | 0.000249 | 0.000259 | 0.000240 | 0.000248 | 0.000248 | 8.059213e+05 | 8.059213e+05 | 1.028630 |
| 2015-12-31 | 0.000143 | 0.000147 | 0.000139 | 0.000143 | 0.000143 | 1.685476e+05 | 1.685476e+05 | 0.139461 |
| 2016-12-31 | 0.000235 | 0.000242 | 0.000229 | 0.000235 | 0.000235 | 2.564834e+05 | 2.564834e+05 | 0.259038 |
| 2017-12-31 | 0.001576 | 0.001708 | 0.001468 | 0.001601 | 0.001601 | 1.118996e+07 | 1.118996e+07 | 0.225833 |
| 2018-12-31 | 0.004368 | 0.004577 | 0.004125 | 0.004350 | 0.004350 | 2.172325e+07 | 2.172325e+07 | 0.109586 |
| 2019-12-31 | 0.002564 | 0.002631 | 0.002499 | 0.002563 | 0.002563 | 4.463969e+07 | 4.463969e+07 | 0.027981 |
| 2020-12-31 | 0.002736 | 0.002822 | 0.002660 | 0.002744 | 0.002744 | 1.290465e+08 | 1.290465e+08 | 0.052314 |
| 2021-12-31 | 0.200410 | 0.215775 | 0.185770 | 0.201272 | 0.201272 | 4.620961e+09 | 4.620961e+09 | 0.260782 |
# 年平均收盤價(jià)
df['Open'].resample('A').mean().plot.bar(title='Yearly Mean Closing Price', color=['#b41f7d'])

# 月度
df['Open'].resample('M').mean().plot.bar(figsize=(18, 12), color='red')

# 分別獲取對(duì)應(yīng)時(shí)間窗口 6 12 2 均值 df['6-month-SMA'] = df['Open'].rolling(window=6).mean() df['12-month-SMA'] = df['Open'].rolling(window=12).mean() df['2-month-SMA'] = df['Open'].rolling(window=2).mean() df.head(10)
| Open | High | Low | Close | Adj Close | Volume | Total Pos | Daily Reture | 6-month-SMA | 12-month-SMA | 2-month-SMA | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Date | |||||||||||
| 2014-09-17 | 0.000293 | 0.000299 | 0.000260 | 0.000268 | 0.000268 | 1463600.0 | 1.463600e+06 | NaN | NaN | NaN | NaN |
| 2014-09-18 | 0.000268 | 0.000325 | 0.000267 | 0.000298 | 0.000298 | 2215910.0 | 2.215910e+06 | 0.514013 | NaN | NaN | 0.000281 |
| 2014-09-19 | 0.000298 | 0.000307 | 0.000275 | 0.000277 | 0.000277 | 883563.0 | 8.835630e+05 | -0.601264 | NaN | NaN | 0.000283 |
| 2014-09-20 | 0.000276 | 0.000310 | 0.000267 | 0.000292 | 0.000292 | 993004.0 | 9.930040e+05 | 0.123863 | NaN | NaN | 0.000287 |
| 2014-09-21 | 0.000293 | 0.000299 | 0.000284 | 0.000288 | 0.000288 | 539140.0 | 5.391400e+05 | -0.457062 | NaN | NaN | 0.000285 |
| 2014-09-22 | 0.000288 | 0.000301 | 0.000285 | 0.000298 | 0.000298 | 620222.0 | 6.202220e+05 | 0.150391 | 0.000286 | NaN | 0.000291 |
| 2014-09-23 | 0.000298 | 0.000318 | 0.000295 | 0.000313 | 0.000313 | 739197.0 | 7.391970e+05 | 0.191826 | 0.000287 | NaN | 0.000293 |
| 2014-09-24 | 0.000314 | 0.000353 | 0.000310 | 0.000348 | 0.000348 | 1277840.0 | 1.277840e+06 | 0.728687 | 0.000295 | NaN | 0.000306 |
| 2014-09-25 | 0.000347 | 0.000383 | 0.000332 | 0.000375 | 0.000375 | 2393610.0 | 2.393610e+06 | 0.873169 | 0.000303 | NaN | 0.000331 |
| 2014-09-26 | 0.000374 | 0.000467 | 0.000373 | 0.000451 | 0.000451 | 4722610.0 | 4.722610e+06 | 0.973007 | 0.000319 | NaN | 0.000361 |
進(jìn)行可視化 查看對(duì)應(yīng)分布情況
df[['Open', '6-month-SMA', '12-month-SMA', '2-month-SMA']].plot(figsize=(24, 10))

df[["Open","6-month-SMA"]].plot(figsize=(18,10))

df[['Open','6-month-SMA']].iloc[:100].plot(figsize=(12,6)).autoscale(axis='x',tight=True)

df['EWMA12'] = df['Open'].ewm(span=14,adjust=True).mean() df[['Open','EWMA12']].plot(figsize=(24,12))

df[['Open','EWMA12']].iloc[:50].plot(figsize=(12,6)).autoscale(axis='x',tight=True)

以上就是python數(shù)據(jù)分析近年比特幣價(jià)格漲幅趨勢(shì)分布的詳細(xì)內(nèi)容,更多關(guān)于python數(shù)據(jù)分析比特幣價(jià)格漲幅的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python QListView教程的實(shí)現(xiàn)
QListView是PyQt中的一個(gè)強(qiáng)大控件,用于展示列表數(shù)據(jù),本文主要介紹了Python QListView教程的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2025-04-04
numpy中的delete刪除數(shù)組整行和整列的實(shí)例
今天小編就為大家分享一篇numpy中的delete刪除數(shù)組整行和整列的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05
遠(yuǎn)程部署工具Fabric詳解(支持Python3)
這篇文章主要介紹了遠(yuǎn)程部署神器 Fabric,支持Python3 ,Fabric 出場(chǎng)了。Fabric 是一個(gè)遠(yuǎn)程部署神器,它可以在本地執(zhí)行遠(yuǎn)程服務(wù)器的命令。,需要的朋友可以參考下2019-07-07
python統(tǒng)計(jì)列表中元素出現(xiàn)次數(shù)的三種方法
這篇文章主要介紹了python統(tǒng)計(jì)列表中元素出現(xiàn)次數(shù)的三種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08
pytorch 實(shí)現(xiàn)在一個(gè)優(yōu)化器中設(shè)置多個(gè)網(wǎng)絡(luò)參數(shù)的例子
今天小編就為大家分享一篇pytorch 實(shí)現(xiàn)在一個(gè)優(yōu)化器中設(shè)置多個(gè)網(wǎng)絡(luò)參數(shù)的例子,具有很好參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02

