【python数据分析课程设计】2015年至2022年中国黄金价格分析

一、选题的背景

黄金作为一种宝贵的物品,不仅具有珍贵的装饰价值,还被视为重要的金融资产和货币储备。通过分析中国黄金市场的供需数据,可以了解黄金的供应量和需求量的变化趋势。从而预测大致的走向。

二、中国黄金价格大数据分析设计方案

1.数据内容应该包括:

黄金价格数据:包括2015年至2020每月中的几天的黄金开盘价、收盘价、最高价、最低价、平均值。

数据特征: 时序性:数据随时间变化,呈现趋势和周期性。 异常值:由于市场波动和数据采集问题,存在异常值需要处理。

2.课程设计方案概述

实现思路: 数据清洗与整理:处理缺失值、异常值,确保数据质量。 数据探索与可视化:分析数据分布、相关性,使用图表展示数据特征。 模型训练与评估:选择合适的机器学习或深度学习模型进行训练,评估模型性能。 预测与优化:利用训练好的模型进行预测,根据结果优化模型和参数。

技术难点: 数据整合:如何从多个来源整合相关数据,确保数据的一致性和准确性。 数据处理:时序数据的处理和分析技巧,如趋势分析等。 可解释性:在保证预测准确性的同时,提高模型的可解释性,便于业务理解和应用。

三、数据分析步骤

1.数据源 kaggle,具体网址来源(https://www.kaggle.com/code/liqiang2022/eda-and-price-prediction-on-chinese-gold-market/input)

2.数据清洗

导入库并显示前面几行

1 import pandas as pd 
2 import numpy as np 
3 import pandas as pd 
4 gold = pd.read_csv('gold_price_china.csv',index_col=0) 
5 gold.head()

 

 

将gold_price_china.csv的日期数据拆分为年月日并且显示

1 gold['trade_date'] = pd.to_datetime(gold['trade_date'])
2 
3 gold['day']=gold['trade_date'].dt.day
4 gold['month']=gold['trade_date'].dt.month
5 gold['year'] = gold['trade_date'].dt.year 
6 
7 print(gold[['day','month','year']])

 

显示重复的数据

1 gold = pd.read_csv('gold_price_china.csv')
2 print(gold.duplicated().sum())

 

显示缺失的数据

print(gold.isnull().sum())

将缺失的数据以nopct_change补充,并且显示确认是否补充完

gold['pct_change'] = gold['pct_change'].fillna('noptc_change')
print(gold.isnull().sum())

3.使用sklearn库数据分析。

提取特征,并且划分训练集和测试集并且进行评估和解释

复制代码
 1 import pandas as pd
 2 from sklearn.linear_model import LinearRegression
 3 from sklearn.model_selection import train_test_split
 4 from sklearn.metrics import mean_squared_error, r2_score
 5 
 6 gold = pd.read_csv('gold_price_china.csv')
 7 
 8 # 特征选择
 9 X = gold[['open', 'close']]
10 
11 
12 y = gold['year']
13 
14 # 数据划分
15 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
16 
17 # 模型建立
18 model = LinearRegression()
19 model.fit(X_train, y_train)
20 
21 # 模型评估
22 y_pred = model.predict(X_test)
23 mse = mean_squared_error(y_test, y_pred)
24 r2 = r2_score(y_test, y_pred)
25 print('Mean Squared Error (MSE):', mse)
26 print('Coefficient of Determination (R^2):', r2)
27 
28 # 模型解释
29 coefficients = pd.DataFrame({'Feature': X.columns, 'Coefficient': model.coef_})
30 intercept = model.intercept_
31 print('Intercept:', intercept)
32 print(coefficients)
复制代码

 

 计算测试集和训练集的均方误差

复制代码
1 from sklearn.metrics import mean_squared_error
2 
3 y_train_pred = model.predict(X_train)
4 mse_train = mean_squared_error(y_train, y_train_pred)
5 y_test_pred = model.predict(X_test)
6 mse_test = mean_squared_error(y_test, y_test_pred)
7 
8 print("Train Mean Squared Error (MSE):", mse_train)
9 print("Test Mean Squared Error (MSE):", mse_test)
复制代码

使用模型,并进行预测

1 X_new = gold[['high', 'low']]  
2 y_new_pred = model.predict(X_new)
3 
4 y_new_pred_df = pd.DataFrame(y_new_pred, columns=['prediction'])
5 
6 y_new_pred_df.head()

 

 

4.数据可视化

通过平均价格与销售量的散点图可以发现,销售量主要在250到300是最多

1 #平均价格与销售量的散点图
2 a = gold[gold['vol']<6000]
3 plt.figure(figsize=(16, 4), dpi=80)
4 sns.regplot(data=a, x='price_avg', y='vol')
5 plt.show()

 收盘价格和开盘价格的条形图

复制代码
 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 
 4 gold = pd.read_csv('gold_price_china.csv')
 5 gold['trade_date'] = pd.to_datetime(gold['trade_date'])
 6 
 7 gold['year'] = gold['trade_date'].dt.year
 8 
 9 gold.drop(['trade_date'], axis=1, inplace=True)
10 
11 grouped_gold = gold.groupby('year').mean()
12 
13 # 提取开盘价和收盘价的列
14 open_prices = grouped_gold['open']
15 close_prices = grouped_gold['close']
16 
17 plt.bar(grouped_gold.index, open_prices, width=0.4, label='open')
18 plt.bar(grouped_gold.index, close_prices, width=0.4, label='close',bottom=open_prices)
19 
20 
21 plt.title('gold price')
22 plt.xlabel('year')
23 plt.ylabel('price')
24 
25 plt.legend()
26 
27 plt.show()
复制代码

 

分别画历年最低、最高、开盘、收盘价格与销售量的关系的线性图进行分析对比

 

复制代码
 1 #历年最低、最高、开盘、收盘价格与销售量的关系折线
 2 import pandas as pd
 3 import matplotlib.pyplot as plt
 4 
 5 # 提取价格列
 6 dates = gold['vol']
 7 open_prices = gold['open']
 8 close_prices = gold['close']
 9 low_prices = gold['low']
10 high_prices = gold['high']
11 
12 # 绘制开盘价线性图
13 plt.subplot(2, 2, 1)
14 plt.plot(dates, open_prices, label='open', color='b')
15 plt.xlabel('year')
16 plt.ylabel('price')
17 plt.title('open')
18 plt.legend()
19 
20 # 绘制收盘价线性图
21 plt.subplot(2, 2, 2)
22 plt.plot(dates, close_prices, label='close', color='r')
23 plt.xlabel('vol')
24 plt.ylabel('price')
25 plt.title('close')
26 plt.legend()
27 
28 # 绘制最低价线性图
29 plt.subplot(2, 2, 3)
30 plt.plot(dates, low_prices, label='close', color='g')
31 plt.xlabel('vol')
32 plt.ylabel('pricec')
33 plt.title('low')
34 plt.legend()
35 
36 # 绘制最高价线性图
37 plt.subplot(2, 2, 4)
38 plt.plot(dates, high_prices, label='hight', color='m')
39 plt.xlabel('vol')
40 plt.ylabel('price')
41 plt.title('hight')
42 plt.legend()
43 
44 # 调整子图布局
45 plt.tight_layout()
46 
47 # 显示图形
48 plt.show()
复制代码

 

 

 

进行展示开盘,收盘历年价格对比

复制代码
 1 import matplotlib.pyplot as plt
 2 import seaborn as sns
 3 
 4 plt.figure(figsize=(12, 4), dpi=80)
 5 sns.lineplot(data=gold, x='year', y='close')
 6 plt.show()
 7 
 8 plt.figure(figsize=(12, 4), dpi=80)
 9 sns.lineplot(data=gold, x='year', y='open')
10 plt.show()
复制代码

 

 

 开盘、收盘、最低、最高的平均价格的柱状图,可以看出,总体上价格基本一致,相差不大

复制代码
 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 
 4 # 计算平均值
 5 mean_high = gold['high'].mean()
 6 mean_low = gold['low'].mean()
 7 mean_open = gold['open'].mean()
 8 mean_close = gold['close'].mean()
 9 
10 print(f"最高价平均值:{mean_high}")
11 print(f"最低价平均值:{mean_low}")
12 print(f"开盘价平均值:{mean_open}")
13 print(f"收盘价平均值:{mean_close}")
14 
15 data = {
16     '指标': ['最高价', '最低价', '开盘价', '收盘价'],
17     '平均值': [mean_high, mean_low, mean_open, mean_close]
18 }
19 df = pd.DataFrame(data)
20 
21 # 绘制簇状柱形图
22 fig, ax = plt.subplots(figsize=(8, 6))
23 ax.bar(df['指标'], df['平均值'], color=['orange', 'green', 'pink', 'lightblue'])
24 ax.set_title('中国黄金价格指标平均值簇状柱形图', fontsize=14)
25 ax.set_xlabel('价格指标', fontsize=12)
26 ax.set_ylabel('平均值', fontsize=12)
27 ax.tick_params(axis='both', labelsize=12)
28 
29 plt.show()
复制代码

 中国黄金的最低价、最高价、收盘价、开盘价的折线图,可以看出来开盘价的价格是非常接近最低价

复制代码
 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 
 4 # 设置图形大小
 5 plt.figure(figsize=(10, 6))
 6 
 7 # 绘制折线图
 8 plt.plot(gold['year'], gold['low'], label='最低价')
 9 plt.plot(gold['year'], gold['high'], label='最高价')
10 plt.plot(gold['year'], gold['close'], label='收盘价')
11 plt.plot(gold['year'], gold['open'], label='开盘价')
12 plt.legend()
13 plt.title('中国黄金价格图', fontsize=14)
14 plt.xlabel('时间', fontsize=12)
15 plt.ylabel('价格', fontsize=12)
16 plt.grid(True)
17 plt.show()
复制代码

 具体的显示18年到19年的2018年至2022年中国黄金销售量对比

复制代码
 1 #2018年至2022年中国黄金销售量对比
 2 
 3 date = ['2018-01-01', '2019-01-01', '2020-01-01', '2021-01-01', '2022-01-01']
 4 vol = gold['vol']
 5 
 6 filtered_df = gold[(gold['trade_date'].dt.year >= 2018) & (gold['trade_date'].dt.year <= 2022)]
 7 plt.figure(figsize=(10, 6))
 8 
 9 # 绘制折线图
10 plt.plot(filtered_df['trade_date'], filtered_df['vol'], label='最低价')
11 
12 # 设置图例
13 plt.legend()
14 
15 # 设置标题和标签
16 plt.title('C', fontsize=14)
17 plt.xlabel('年份', fontsize=12)
18 plt.ylabel('人数', fontsize=12)
19 
20 # 显示图形
21 plt.show()
复制代码

 最低最高、开盘收盘价格分析条形图

复制代码
#最低最高、开盘收盘价格分析条形图
# 设置中文字体和解决负号显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 创建子图
fig, axs = plt.subplots(2, 2, figsize=(12, 8))

# 最高价分布图
axs[0, 0].hist(gold['high'], color='orange', alpha=0.7)
axs[0, 0].set_title('最高价分布图', fontsize=14)
axs[0, 0].set_xlabel('价格', fontsize=12)
axs[0, 0].set_ylabel('频数', fontsize=12)
axs[0, 0].tick_params(axis='both', labelsize=12)
axs[0, 0].grid(axis='y', linestyle='--')

# 最低价分布图
axs[0, 1].hist(gold['low'], color='green', alpha=0.7)
axs[0, 1].set_title('最低价分布图', fontsize=14)
axs[0, 1].set_xlabel('价格', fontsize=12)
axs[0, 1].set_ylabel('频数', fontsize=12)
axs[0, 1].tick_params(axis='both', labelsize=12)
axs[0, 1].grid(axis='y', linestyle='--')

# 开盘价分布图
axs[1, 0].hist(gold['open'], color='pink', alpha=0.7)
axs[1, 0].set_title('开盘价分布图', fontsize=14)
axs[1, 0].set_xlabel('价格', fontsize=12)
axs[1, 0].set_ylabel('频数', fontsize=12)
axs[1, 0].tick_params(axis='both', labelsize=12)
axs[1, 0].grid(axis='y', linestyle='--')

# 收盘价分布图
axs[1, 1].hist(gold['close'], color='lightblue', alpha=0.7)
axs[1, 1].set_title('收盘价分布图', fontsize=14)
axs[1, 1].set_xlabel('价格', fontsize=12)
axs[1, 1].set_ylabel('频数', fontsize=12)
axs[1, 1].tick_params(axis='both', labelsize=12)
axs[1, 1].grid(axis='y', linestyle='--')

# 调整子图间距
plt.tight_layout()

# 显示图形
plt.show()
复制代码

 

 

总代码

 

复制代码
  1 import pandas as pd
  2 import numpy as np
  3 from sklearn.linear_model import LinearRegression
  4 from sklearn.model_selection import train_test_split
  5 from sklearn.metrics import mean_squared_error, r2_score
  6 
  7 gold = pd.read_csv('gold_price_china.csv',index_col=0)
  8 gold.head()
  9 
 10 # 读取数据到gold变量中(假设数据已经存在)
 11 gold = pd.read_csv('data.csv')
 12 # 将trade_date列转换为datetime类型
 13 gold['trade_date'] = pd.to_datetime(gold['trade_date'])
 14 # 提取trade_date的日、月、年信息,并分别存储在day、month、year列中
 15 gold['day'] = gold['trade_date'].dt.day
 16 gold['month'] = gold['trade_date'].dt.month
 17 gold['year'] = gold['trade_date'].dt.year
 18 # 打印包含day、month、year列的数据
 19 print(gold[['day', 'month', 'year']])
 20 
 21 gold = pd.read_csv('gold_price_china.csv')
 22 print(gold.duplicated().sum())
 23 
 24 print(gold.isnull().sum())
 25 
 26 gold['pct_change'] = gold['pct_change'].fillna('noptc_change')
 27 print(gold.isnull().sum())
 28 
 29 # 读取数据
 30 gold = pd.read_csv('gold_price_china.csv')
 31 # 特征选择:选择'high'和'low'两列作为特征
 32 X = gold[['high', 'low']]
 33 y = gold['year']
 34 
 35 # 数据划分:将数据集划分为训练集和测试集,测试集占比为0.2
 36 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
 37 # 模型建立:使用线性回归模型进行拟合
 38 model = LinearRegression()
 39 model.fit(X_train, y_train)
 40 
 41 # 模型评估:预测测试集的输出值,并计算均方误差(MSE)和决定系数(R^2)
 42 y_pred = model.predict(X_test)
 43 mse = mean_squared_error(y_test, y_pred)
 44 r2 = r2_score(y_test, y_pred)
 45 
 46 # 输出评估结果
 47 print('Mean Squared Error (MSE):', mse)
 48 print('Coefficient of Determination (R^2):', r2)
 49 
 50 # 模型解释:输出模型的截距和系数
 51 coefficients = pd.DataFrame({'Feature': X.columns, 'Coefficient': model.coef_})
 52 intercept = model.intercept_
 53 
 54 print('Intercept:', intercept)
 55 print(coefficients)
 56 
 57 # 使用模型对训练集进行预测,得到预测结果y_train_pred
 58 y_train_pred = model.predict(X_train)
 59 
 60 # 计算训练集的均方误差,即真实值与预测值之间的平方差的均值
 61 mse_train = mean_squared_error(y_train, y_train_pred)
 62 
 63 # 使用模型对测试集进行预测,得到预测结果y_test_pred
 64 y_test_pred = model.predict(X_test)
 65 
 66 # 计算测试集的均方误差,即真实值与预测值之间的平方差的均值
 67 mse_test = mean_squared_error(y_test, y_test_pred)
 68 
 69 # 输出训练集和测试集的均方误差
 70 print("Train Mean Squared Error (MSE):", mse_train)
 71 print("Test Mean Squared Error (MSE):", mse_test)
 72 
 73 import pandas as pd
 74 
 75 # 进行新数据的预测
 76 X_new = gold[['high', 'low']]   
 77 y_new_pred = model.predict(X_new)
 78 
 79 # 将预测结果转换为DataFrame对象
 80 y_new_pred_df = pd.DataFrame(y_new_pred, columns=['prediction'])
 81 
 82 # 查看前几个预测结果
 83 y_new_pred_df.head()
 84 
 85 #平均价格与销售量的聚散图
 86 a = gold[gold['vol']<6000]
 87 plt.figure(figsize=(16, 4), dpi=80)
 88 sns.regplot(data=a, x='price_avg', y='vol')
 89 plt.show()
 90 
 91 import matplotlib.pyplot as plt
 92 # 读取黄金价格数据
 93 gold = pd.read_csv('gold_price_china.csv')
 94 
 95 # 将交易日期转换为datetime类型,并提取年份
 96 gold['trade_date'] = pd.to_datetime(gold['trade_date'])
 97 gold['year'] = gold['trade_date'].dt.year
 98 
 99 # 删除原始的交易日期列
100 gold.drop(['trade_date'], axis=1, inplace=True)
101 
102 # 按年份分组,计算每组的平均开盘价和收盘价
103 grouped_gold = gold.groupby('year').mean()
104 
105 # 提取开盘价和收盘价的列
106 open_prices = grouped_gold['open']
107 close_prices = grouped_gold['close']
108 
109 # 绘制条形图,分别表示开盘价和收盘价
110 plt.bar(grouped_gold.index, open_prices, width=0.4, label='open')
111 plt.bar(grouped_gold.index, close_prices, width=0.4, label='close', bottom=open_prices)
112 
113 # 设置图表标题、x轴标签和y轴标签
114 plt.title('gold price')
115 plt.xlabel('year')
116 plt.ylabel('price')
117 
118 # 显示图例
119 plt.legend()
120 # 显示图表
121 plt.show()
122 
123 # 提取价格列
124 dates = gold['vol']
125 open_prices = gold['open']
126 close_prices = gold['close']
127 low_prices = gold['low']
128 high_prices = gold['high']
129 
130 # 绘制开盘价线性图
131 plt.subplot(2, 2, 1)
132 plt.plot(dates, open_prices, label='open', color='b') 
133 plt.xlabel('year') 
134 plt.ylabel('price') 
135 plt.title('open') 136 plt.legend() 137 138 # 绘制收盘价线性图 139 plt.subplot(2, 2, 2) 140 plt.plot(dates, close_prices, label='close', color='r') 141 plt.xlabel('vol') 142 plt.ylabel('price') 143 plt.title('close') 144 plt.legend() 145 146 # 绘制最低价线性图 147 plt.subplot(2, 2, 3) 148 plt.plot(dates, low_prices, label='low', color='g') 149 plt.xlabel('vol') 150 plt.ylabel('pricec') 151 plt.title('low') 152 plt.legend() 153 154 # 绘制最高价线性图 155 plt.subplot(2, 2, 4) 156 plt.plot(dates, high_prices, label='hight', color='m') 157 plt.xlabel('vol') 158 plt.ylabel('price') 159 plt.title('hight') 160 plt.legend() 161 162 # 调整子图布局 163 plt.tight_layout() 164 165 # 显示图形 166 plt.show() 167 168 # 导入matplotlib.pyplot和seaborn库 169 import matplotlib.pyplot as plt 170 import seaborn as sns 171 172 # 创建一个12x4英寸的图形,分辨率为80dpi 173 plt.figure(figsize=(12, 4), dpi=80) 174 # 使用seaborn库绘制黄金价格的收盘价折线图,横坐标为年份,纵坐标为收盘价 175 sns.lineplot(data=gold, x='year', y='close') 176 # 显示图形 177 plt.show() 178 179 # 创建一个12x4英寸的图形,分辨率为80dpi 180 plt.figure(figsize=(12, 4), dpi=80) 181 # 使用seaborn库绘制黄金价格的开盘价折线图,横坐标为年份,纵坐标为开盘价 182 sns.lineplot(data=gold, x='year', y='open') 183 # 显示图形 184 plt.show() 185 186 # 导入所需库 187 import pandas as pd 188 import matplotlib.pyplot as plt 189 190 # 读取黄金价格数据 191 gold = pd.read_csv('中国黄金价格数据.csv') 192 193 # 计算最高价、最低价、开盘价和收盘价的平均值 194 mean_high = gold['high'].mean() 195 mean_low = gold['low'].mean() 196 mean_open = gold['open'].mean() 197 mean_close = gold['close'].mean() 198 199 # 输出平均值结果 200 print(f"最高价平均值:{mean_high}") 201 print(f"最低价平均值:{mean_low}") 202 print(f"开盘价平均值:{mean_open}") 203 print(f"收盘价平均值:{mean_close}") 204 205 # 创建包含指标和平均值的数据框 206 data = { 207 '指标': ['最高价', '最低价', '开盘价', '收盘价'], 208 '平均值': [mean_high, mean_low, mean_open, mean_close] 209 } 210 df = pd.DataFrame(data) 211 212 # 绘制簇状柱形图 213 fig, ax = plt.subplots(figsize=(8, 6)) 214 ax.bar(df['指标'], df['平均值'], color=['orange', 'green', 'pink', 'lightblue']) 215 ax.set_title('中国黄金价格指标平均值簇状柱形图', fontsize=14) 216 ax.set_xlabel('价格指标', fontsize=12) 217 ax.set_ylabel('平均值', fontsize=12) 218 ax.tick_params(axis='both', labelsize=12) 219 220 # 显示图形 221 plt.show() 222 223 # 导入matplotlib库 224 import matplotlib.pyplot as plt 225 # 设置图形大小 226 plt.figure(figsize=(10, 6)) 227 228 # 绘制折线图,分别表示最低价、最高价、收盘价和开盘价 229 plt.plot(gold['year'], gold['low'], label='最低价') 230 plt.plot(gold['year'], gold['high'], label='最高价') 231 plt.plot(gold['year'], gold['close'], label='收盘价') 232 plt.plot(gold['year'], gold['open'], label='开盘价') 233 234 # 显示图例 235 plt.legend() 236 # 设置标题,字体大小为14 237 plt.title('中国黄金价格图', fontsize=14) 238 # 设置横轴标签,字体大小为12 239 plt.xlabel('时间', fontsize=12) 240 # 设置纵轴标签,字体大小为12 241 plt.ylabel('价格', fontsize=12) 242 # 开启网格线 243 plt.grid(True) 244 # 显示图形 245 plt.show() 246 247 # 导入所需库 248 import matplotlib.pyplot as plt 249 250 # 设置中文字体和解决负号显示问题 251 plt.rcParams['font.sans-serif'] = ['SimHei'] 252 plt.rcParams['axes.unicode_minus'] = False 253 254 # 创建子图 255 fig, axs = plt.subplots(2, 2, figsize=(12, 8)) 256 257 # 最高价分布图 258 axs[0, 0].hist(gold['high'], color='orange', alpha=0.7)
259 axs[0, 0].set_title('最高价分布图', fontsize=14) 260 axs[0, 0].set_xlabel('价格', fontsize=12) 261 axs[0, 0].set_ylabel('频数', fontsize=12) 262 axs[0, 0].tick_params(axis='both', labelsize=12) 263 axs[0, 0].grid(axis='y', linestyle='--') 264 265 # 最低价分布图 266 axs[0, 1].hist(gold['low'], color='green', alpha=0.7) 267 axs[0, 1].set_title('最低价分布图', fontsize=14)
268 axs[0, 1].set_xlabel('价格', fontsize=12) 269 axs[0, 1].set_ylabel('频数', fontsize=12) 270 axs[0, 1].tick_params(axis='both', labelsize=12) 271 axs[0, 1].grid(axis='y', linestyle='--') 272 273 # 开盘价分布图 274 axs[1, 0].hist(gold['open'], color='pink', alpha=0.7) 275 axs[1, 0].set_title('开盘价分布图', fontsize=14) 276 axs[1, 0].set_xlabel('价格', fontsize=12) 277 axs[1, 0].set_ylabel('频数', fontsize=12) 278 axs[1, 0].tick_params(axis='both', labelsize=12) 279 axs[1, 0].grid(axis='y', linestyle='--') 280 281 # 收盘价分布图 282 axs[1, 1].hist(gold['close'], color='lightblue', alpha=0.7) 283 axs[1, 1].set_title('收盘价分布图', fontsize=14) 284 axs[1, 1].set_xlabel('价格', fontsize=12) 285 axs[1, 1].set_ylabel('频数', fontsize=12) 286 axs[1, 1].tick_params(axis='both', labelsize=12) 287 axs[1, 1].grid(axis='y', linestyle='--') 288 289 # 调整子图间距 290 plt.tight_layout() # 调整子图间距,使子图之间不重叠 291 292 # 显示图形 293 plt.show() # 显示绘制的图形 294 295 # 导入所需库 296 import pandas as pd 297 import matplotlib.pyplot as plt 298 299 # 设置日期列表 300 date = ['2018-01-01', '2019-01-01', '2020-01-01', '2021-01-01', '2022-01-01'] 301 vol = gold['vol'] 302 303 # 根据年份筛选数据 304 filtered_df = gold[(gold['trade_date'].dt.year >= 2018) & (gold['trade_date'].dt.year <= 2022)] 305 plt.figure(figsize=(10, 6)) 306 307 # 绘制折线图,展示中国黄金销售量对比 308 plt.plot(filtered_df['trade_date'], filtered_df['vol'], label='最低价') 309 310 # 设置图例 311 plt.legend() 312 313 # 设置标题和标签 314 plt.title('C', fontsize=14) 315 plt.xlabel('年份', fontsize=12) 316 plt.ylabel('人数', fontsize=12) 317 318 # 显示图形 319 plt.show()
复制代码

 

总结

1.通过对黄金的大数据进行分析和挖掘,可以得到以下结论和目标达成情况:

可以得出来,销售量与黄金的价格是息息相关的,价格最低的时候销售量是最高的

此外,可以发现,开盘价接近最低价,而收盘价接近最高价,但是总体上差距并不是很大

并且随着时间增加,黄金的价格总体上也会逐渐增加

黄金的销售量有两个小高峰,一个是在250到300之间,一次是350到400之间

比较出乎意料的是在280到330之间的幅度是相较其他价格显得较低

2.在完成这个课程设计过程中获得了以下收获:

数据分析和挖掘技能是文本中提到的第一个收获。通过学习如何使用Python进行数据清洗、处理、统计分析等技术,提高了数据分析能力和编程能力。这种技能在现代社会中越来越重要,无论是对于职业发展还是实际生活都有着广泛的应用。掌握这种技能可以为个人带来更多的机会和可能性,同时也能够为相关领域的研究和应用提供有力支持

数据可视化,通过图表、图形等方式直观地展示数据分析的结果,提高了自己的数据可视化能力。这种能力可以帮助人们更好地理解和解释数据分析的结果,使复杂的数据变得易于理解和接受。同时,数据可视化还可以为决策提供重要的参考和依据,有助于更好地制定策略和方案。

 

posted @   艾佳  阅读(259)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示