一、內容簡介
股市指數作為衡量股市整體表現的重要工具,不僅反映了市場的即時狀態,也提供了經濟健康狀況的關鍵信號。在全球經濟體系中,股市指數被廣泛用于預測經濟活動,評估投資環境,以及制定財政和貨幣政策。在中國,深證指數作為深圳證券交易所的主要指數之一,它包含了深市的所有上市公司,因此能夠全面地反映中國改革開放后經濟發展的成果以及區域經濟的活躍度。通過分析深證指數,可以得到中國經濟特別是南方經濟的宏觀走向,這對投資者和政策制定者而言具有重要意義。
本項目采用了2022年的深證指數數據,主要目的是通過數據分析工具對該數據集進行深入分析和可視化。
二、問題討論
數據清洗與預處理
數據加載:首先,使用Pandas的read_csv函數加載CSV格式的數據文件。
日期格式轉換:將trade_date列中的日期字符串轉換為Pandas的datetime對象,這是時間序列分析的重要步驟,因為它允許使用日期作為索引進行高效操作。
缺失值處理:檢查數據中是否存在缺失值,如果存在,使用前向填充法(ffill)。這種方法假設數據的連續性,即前一個時間點的觀察可以代替缺失值。
讀取數據
數據和代碼
報告代碼數據
# 加載數據
file_path = 'sz_index_2022.csv'
if os.path.exists(file_path):df = pd.read_csv(file_path)
else:sys.exit("File not found.")
?
描述性統計分析
這些描述性統計結果展示了242個觀測值的金融指標總結。具體來說,收盤價的平均值為11988.456368,標準差為1004.135569,最低值為10206.638500,最高值為14791.313600。開盤價的平均值為11994.138000,標準差為1023.500263,最低值為10090.983800,最高值為14935.227700。
接下來進行可視化
plt.figure(figsize=(10, 5))
plt.plot(df.index, df['close'], label='Closing Price') # 繪制收盤價折線圖
plt.title('Shenzhen Index 2022 Closing Prices') # 設置標題
plt.xlabel('Date') # 設置X軸標簽
plt.ylabel('Closing Price') # 設置Y軸標簽
plt.legend()
plt.show()
這個圖表展示了2022年深圳指數的收盤價走勢。從圖中可以看出,整個2022年深圳指數經歷了較大的波動:年初至3月,指數從約15000點大幅下跌至約12000點,顯示出市場在這一段時間內表現較為疲軟。
plt.figure(figsize=(10, 5))
plt.boxplot([df['open'], df['high'], df['low'], df['close']], labels=['Open', 'High', 'Low', 'Close']) # 繪制箱線圖
plt.title('Box Plot of Opening, Highest, Lowest, and Closing Prices') # 設置標題
plt.show()
?
這個箱線圖展示了2022年深圳指數的開盤價、最高價、最低價和收盤價的分布情況。從圖中可以看出,開盤價(Open),中位數接近12000點,數據分布較為對稱,范圍從約10000點到14900點。上方存在一些離群值,表示有幾天的開盤價異常高。。。
條形圖用于展示不同類別數據的比較。我們繪制了開盤價、最高價、最低價和收盤價的平均值條形圖。
avg_prices = [summary_stats[col]['mean'] for col in ['open', 'high', 'low', 'close']]
plt.figure(figsize=(10, 5))
plt.bar(['Open', 'High', 'Low', 'Close'], avg_prices, color=['blue', 'green', 'red', 'orange']) # 繪制條形圖
plt.title('Average Prices') # 設置標題
plt.xlabel('Price Type') # 設置X軸標簽
plt.ylabel('Average Price') # 設置Y軸標簽
plt.show()
這個條形圖展示了開盤價、最高價、最低價和收盤價的平均值。每個價格類型都用不同顏色的條形表示:開盤價(Open)平均開盤價接近12000點。說明市場在開盤時的價格大致穩定在這一水平。?
直方圖展示了數據的分布情況。我們繪制了2022年深圳指數收盤價的直方圖。
這個直方圖展示了2022年深圳指數收盤價的分布情況。收盤價主要集中在11000點到13000點之間。在11000點到12000點之間的頻率最高,顯示出這一范圍內的收盤價出現次數最多。
餅圖用于展示各部分占總體的比例。我們繪制了2022年每個季度交易量占全年總交易量的比例。
df['quarter'] = df.index.quarter
volume_by_quarter = df.groupby('quarter')['vol'].sum() # 計算每季度總成交量
plt.figure(figsize=(10, 5))
plt.pie(volume_by_quarter, labels=['Q1', 'Q2', 'Q3', 'Q4'], autopct='%1.1f%%',colors=['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']) # 繪制餅圖
plt.title('Proportion of Total Trading Volume by Quarter') # 設置標題
plt.show()
其中第一季度占比為25.1%,是全年交易量最高的季度。這一比例表明第一季度的市場交易活動較為活躍。第二季度占比為24.8%,略低于第一季度。這一比例顯示第二季度的交易量與第一季度相當,市場活躍度持續。。。?
接下來計算相關矩陣?繪制散點圖
# 計算相關矩陣
correlation_matrix = df[['open', 'high', 'low', 'close', 'vol', 'amount']].corr()
print("Correlation matrix:\n", correlation_matrix)# 繪制散點圖
plt.figure(figsize=(12, 8))
for i, predictor in enumerate(['open', 'high', 'low', 'vol', 'amount']):plt.subplot(2, 3, i + 1)plt.scatter(df[predictor], df['close'], alpha=0.5)plt.xlabel(predictor)plt.ylabel('Close')
plt.tight_layout()
plt.show()
從圖中可以看到,收盤價與開盤價、最高價、最低價之間有很強的線性關系,點幾乎沿對角線分布。這表明這些特征之間有高度相關性。而收盤價與交易量和交易金額之間的相關性較低,點的分布較為分散。
?接下來線性回歸分析
多元線性回歸:建立以開盤價、最高價和最低價為自變量,收盤價為因變量的回歸模型。計算并報告每個變量的系數,評估模型的效力和各變量的影響力。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
predictors = ['open', 'high', 'low', 'vol', 'amount']
X = df[predictors].values
y = df['close'].values
# 增加一個截距列
X = np.column_stack((np.ones(X.shape[0]), X))# 計算回歸系數 (beta)
# beta = (X^T * X)^-1 * X^T * y
X_transpose = X.T
beta = np.linalg.inv(X_transpose @ X) @ X_transpose @ y# 計算預測值
y_pred = X @ beta
圖中紅色虛線(擬合收盤價)與藍色實線(實際收盤價)基本重合,這表明模型對收盤價的預測非常準確。在大多數時間段內,擬合值與實際值的波動趨勢基本一致。
三、結論
通過對2022年深證指數數據的綜合分析,我們得出了以下主要結論:
在數據清洗與預處理方面,我們對數據進行了日期格式轉換和缺失值處理,確保了分析的準確性和數據的連續性。這些步驟為后續的時間序列分析和可視化提供了可靠的基礎。在描述性統計分析方面,通過計算開盤價、最高價、最低價和收盤價等主要金融指標的平均值、標準差、最大值和最小值,我們對市場的波動情況和價格分布有了基本了解。。。。?
創作不易,希望大家多點贊關注評論!!!(類似代碼或報告定制可以私信)