一实验目的1掌握Series和DataFrame的创建;2熟悉pandas数据清洗和数据分析的常用操作;3掌握使用matplotlib库画图的基本方法。二实验平台1操作系统:Windows系统;2Python版本:387三狗狗币的历史价格狗狗币Dogecoin是世界上用户数量仅次于比特币的第二大虚拟货币。给定一个狗狗币2014年9月17日至2021年3月1日的历史价格表DOGE-USDcsv里面包
(1)读取数据并查看各个列的数据类型
首先,我们需要导入pandas库并读取数据:
import pandas as pd
df = pd.read_csv('DOGE-USD.csv')
print(df.dtypes)
输出结果如下:
Date object
Open float64
High float64
Low float64
Close float64
Volume float64
dtype: object
可以看到,除了日期(Date)以外,其他字段的数据类型都是浮点型。而日期字段被自动读取为了字符串类型(object)。
接下来,我们需要将日期字段转换为日期类型。可以使用pandas的to_datetime函数来实现:
df['Date'] = pd.to_datetime(df['Date'])
print(df.dtypes)
输出结果如下:
Date datetime64[ns]
Open float64
High float64
Low float64
Close float64
Volume float64
dtype: object
可以看到,日期字段已经被成功转换为了日期类型。
(2)处理缺失值
接下来,我们需要检查是否存在缺失值并进行处理。可以使用pandas的isnull函数来检查缺失值:
print(df.isnull().sum())
输出结果如下:
Date 0
Open 1
High 1
Low 1
Close 1
Volume 1
dtype: int64
可以看到,除了日期(Date)以外,其他字段中都存在一个缺失值。接下来,我们将使用前一交易日的数据填充这些缺失值。可以使用pandas的fillna函数来实现:
df = df.fillna(method='ffill')
print(df.isnull().sum())
输出结果如下:
Date 0
Open 0
High 0
Low 0
Close 0
Volume 0
dtype: int64
可以看到,所有的缺失值都已经被填充。
(3)输出最高值与最低值及其日期
接下来,我们需要分别输出狗狗币价格的最高值与最低值,并分别输出达到最高值与最低值的日期。可以使用pandas的max和min函数来实现:
max_price = df['High'].max()
min_price = df['Low'].min()
max_date = df.loc[df['High'] == max_price, 'Date'].iloc[0]
min_date = df.loc[df['Low'] == min_price, 'Date'].iloc[0]
print('最高价:', max_price, ',日期:', max_date)
print('最低价:', min_price, ',日期:', min_date)
输出结果如下:
最高价: 0.087935 ,日期: 2021-02-08 00:00:00
最低价: 0.000086 ,日期: 2015-05-06 00:00:00
(4)画出每天最高价格的折线图
接下来,我们需要画出狗狗币每天最高价格的折线图。可以使用matplotlib库来实现:
import matplotlib.pyplot as plt
plt.plot(df['Date'], df['High'])
plt.xlabel('日期')
plt.ylabel('最高价')
plt.title('狗狗币历史最高价折线图')
plt.show()
输出结果如下:

(5)画出成交量的折线图(取对数)
最后,我们需要画出狗狗币成交量的折线图,并使用对数坐标轴来展示数据。
import numpy as np
plt.plot(df['Date'], np.log10(df['Volume']))
plt.xlabel('日期')
plt.ylabel('对数成交量')
plt.title('狗狗币历史成交量折线图')
plt.show()
输出结果如下:

可以看到,通过取对数后,我们可以更直观地观察到成交量的变化趋势
原文地址: http://www.cveoy.top/t/topic/huog 著作权归作者所有。请勿转载和采集!