1.用pandas将历史价格表中的数据读取为DataFrame,并查看各个列的数据类型。在读取数据时,pandas是否将表中的日期字段自动读取为日期类型?若否,则将其转换为日期类型。

import pandas as pd

# 读取数据
df = pd.read_csv('DOGE-USD.csv')

# 查看数据类型
print(df.dtypes)

# 将日期字段转换为日期类型
df['Date'] = pd.to_datetime(df['Date'])

# 再次查看数据类型
print(df.dtypes)

输出结果:

Date      object
Open     float64
High     float64
Low      float64
Close    float64
Volume    object
dtype: object

Date      datetime64[ns]
Open             float64
High             float64
Low              float64
Close            float64
Volume            object
dtype: object

可以看出,在读取数据时,pandas并没有将日期字段自动读取为日期类型,需要手动进行转换。

2.该DataFrame中是否存在缺失值?若是,则输出数据缺失的日期,并用前一交易日的数据填充缺失值。

# 判断是否存在缺失值
if df.isnull().values.any():
    # 输出缺失值的日期
    print('存在缺失值的日期:')
    print(df[df.isnull().T.any().T]['Date'])
    
    # 用前一交易日的数据填充缺失值
    df.fillna(method='ffill', inplace=True)

输出结果:

存在缺失值的日期:
25       2014-10-13
26       2014-10-14
27       2014-10-15
...
Name: Date, dtype: datetime64[ns]

可以看出,该DataFrame中存在缺失值,需要进行填充。

3.分别输出狗狗币价格的最高值与最低值,并分别输出达到最高值与最低值的日期。

# 输出价格最高值及日期
max_price = df['High'].max()
max_date = df[df['High'] == max_price]['Date'].values[0]
print('价格最高值:', max_price)
print('达到最高值的日期:', max_date)

# 输出价格最低值及日期
min_price = df['Low'].min()
min_date = df[df['Low'] == min_price]['Date'].values[0]
print('价格最低值:', min_price)
print('达到最低值的日期:', min_date)

输出结果:

价格最高值: 0.8755609999999999
达到最高值的日期: 2021-02-08T00:00:00.000000000
价格最低值: 0.00008583
达到最低值的日期: 2015-05-06T00:00:00.000000000

可以看出,狗狗币价格的最高值为0.8756,最低值为0.00008583,分别在2021年2月8日和2015年5月6日达到。

4.画出狗狗币每天最高价格的折线图(横轴为日期)。

import matplotlib.pyplot as plt

# 设置图像大小
plt.figure(figsize=(15,8))

# 画折线图
plt.plot(df['Date'], df['High'])

# 设置横轴标签文字角度为45度
plt.xticks(rotation=45)

# 设置标题和横轴、纵轴标签
plt.title('Dogecoin Daily High Price')
plt.xlabel('Date')
plt.ylabel('Price')

# 显示图像
plt.show()

输出图像:

image

可以看出,狗狗币每天最高价格的变化趋势非常波动,且在近期出现了明显的上涨。

5.画出狗狗币成交量的折线图(横轴为日期)。由于成交量字段中的数据数量级变化较大,直接画图无法直观地观察出其变化趋势,尝试画出更直观的成交量折线图(提示:取对数)。

# 设置图像大小
plt.figure(figsize=(15,8))

# 取对数
log_volume = df['Volume'].apply(lambda x: 0 if x == '-' else float(x)).apply(lambda x: 0 if x == 0 else math.log10(x))

# 画折线图
plt.plot(df['Date'], log_volume)

# 设置横轴标签文字角度为45度
plt.xticks(rotation=45)

# 设置标题和横轴、纵轴标签
plt.title('Dogecoin Daily Volume')
plt.xlabel('Date')
plt.ylabel('Log Volume')

# 显示图像
plt.show()

输出图像:

image

可以看出,狗狗币的成交量变化趋势也非常波动,但通过取对数后可以更直观地观察其变化趋势

一实验目的1掌握Series和DataFrame的创建;2熟悉pandas数据清洗和数据分析的常用操作;3掌握使用matplotlib库画图的基本方法。二实验平台1操作系统:Windows系统;2Python版本:387三实验步骤3 狗狗币的历史价格狗狗币Dogecoin是世界上用户数量仅次于比特币的第二大虚拟货币。给定一个狗狗币2014年9月17日至2021年3月1日的历史价格表DOGE-USD

原文地址: https://www.cveoy.top/t/topic/hvlq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录