導入模塊
import numpy as np
import pandas as pd
from pylab import mpl
import plotly.express as px
import matplotlib.pyplot as plt
import seaborn as sns
設置全局字體
plt.rcParams['font.sans-serif']=['kaiti']
獲取數據
total_sales_df =pd.read_excel(r"./data/中國汽車總體銷量.xlsx")
sales_by_manufacture =pd.read_excel(r"./data/中國汽車分廠商每月銷售表.xlsx")
sales_by_model =pd.read_excel(r"./data/中國汽車分車型每月銷售量.xlsx")
數據分析處理
total_sales_df.head(5),sales_by_manufacture.head(5),sales_by_model.head(5)
時間:表示數據所屬的月份和年份。
銷量:該月的汽車總銷量。
同比:與上一年同期相比的銷量變化百分比。
desc_stats_total_sales = total_sales_df.describe()
數據范圍:數據集包含201條記錄。
銷量數據:總銷量為319,164,052輛;平均每月的銷量約為1,587,881輛;單月最高銷量為2,672,264輛;單月最低銷量為216,481輛。
desc_stats_model = sales_by_model.describe(include='all')
車型數量:共有1341個不同的汽車型號。
銷量數據:總銷量為202,077,324輛;平均每個車型每月的銷量約為4,095輛;最高月銷量為169,607輛;最低月銷量為1輛。
數據可視化及預測
銷量分析
對中國汽車總體銷量這個數據集進行更深入的分析。以下是一些可能的分析方向:1,時間序列分析:觀察汽車銷量隨時間的變化趨勢,包括季節性變化、年度趨勢等。2, 同比增長分析:分析不同月份的年度同比增長率,以了解市場的整體增長或下滑趨勢。3, 波動性分析:評估銷量數據的波動性,了解市場穩定性。4, 預測未來銷量:基于歷史數據建立一個簡單的預測模型來預估未來幾個月的銷量趨勢。
波動性分析
汽車月銷量時間序列圖
從時間序列圖中可以看出,汽車銷量隨時間波動較大。波動性可能受多種因素影響,如市場需求、經濟狀況、政策變化等。
計算月銷量的標準差
std_deviation = total_sales_df['銷量'].std()
mean_sales = total_sales_df['銷量'].mean()
coefficient_of_variation = std_deviation / mean_sales
月銷量的標準差為480,106輛,變異系數(Coefficient of Variation, CV):約為0.30,這表明數據的相對波動性。
滾動標準差
通過對數據進行12個月滾動標準差分析,我們可以觀察到銷量的波動性隨時間的變化。從圖中可以看出,銷量波動性在某些時期較高,而在其他時期則相對穩定。
波動性的變化可能與多種因素有關,包括市場需求、宏觀經濟狀況、行業政策、節假日影響等。這些波動性的增加可能指示市場不確定性的增加,而波動性的減少可能表明市場趨于穩定。
同比增長分析(汽車銷量同比增長率)
通過上圖展示的同比增長率熱力圖,我們可以觀察到中國汽車銷量在不同年份的月份之間的同比增長情況。每個單元格代表特定年份和月份的銷量同比增長率(以百分比表示)。
從熱力圖中,可以觀察到不同年份同月銷量的增長或下降趨勢。例如,某些年份的特定月份可能顯示出顯著的增長或下降,這可能受到宏觀經濟狀況、行業政策、市場需求變化等因素的影響。
時間序列分析
- 展示了原始數據,即實際銷量隨時間的變化。
- 顯示了數據中的長期趨勢。可以看到銷量隨時間的整體增長或下降趨勢。
- 展示了數據中的季節性模式。如果圖表顯示了一定的周期性重復模式,這表明銷量受季節性因素影響。
- 包含除趨勢和季節性之外的其他信息,可能是不規則的或不可預測的變化。
從時間序列中,我們可以觀察到銷量隨時間的整體變化趨勢。揭示了銷量的季節性波動,這可能與特定節假日、季節變化或行業特定因素相關。剩余部分表明除了趨勢和季節性之外的其他影響因素。
預測未來銷量
為了預測未來的汽車銷量,我們可以使用時間序列分析中的預測模型。存在多種方法可以用于時間序列預測,例如 ARIMA(自回歸積分滑動平均模型)、SARIMA(季節性ARIMA)、簡單的指數平滑等。選擇哪種模型取決于數據的特性,例如是否存在明顯的季節性、趨勢等。
在進行預測之前,我將首先對數據集進行檢查,以確定是否存在趨勢或季節性,這將有助于選擇合適的預測模型。然后,我將使用選定的模型來預測未來幾個月的銷量。
讓我們首先檢查數據集,以確定適合的預測模型。我將執行一個簡單的時序圖檢查和自相關函數(ACF)和偏自相關函數(PACF)的檢查,以幫助確定數據的特性。這將為選擇合適的預測模型提供指導。
時間序列圖:顯示出銷量隨時間的變化,似乎有一定的季節性模式。
ACF圖:展示了時間序列與其自身在不同滯后值下的相關性。高的自相關值表示銷量數據在不同時間點存在強烈的相關性。
PACF圖:顯示了時間序列和其滯后值之間的偏自相關,有助于確定適用于預測的模型類型。
這些觀察結果表明,我們可能需要一個能夠處理季節性的時間序列預測模型。基于這些信息,SARIMA(季節性自回歸積分滑動平均模型)可能是一個合適的選擇。SARIMA模型可以同時處理時間序列數據的季節性、趨勢和噪聲成分。
接下來,我將使用SARIMA模型進行銷量預測。由于時間序列分析通常需要詳細的模型調整,我將選擇一個基本的SARIMA模型配置進行預測。如果您有特定的預測時間范圍(例如未來幾個月或一年),請告訴我。否則,我將默認進行未來12個月的銷量預測。
使用了SARIMA模型預測了未來12個月的中國汽車銷量。請注意,這些預測是基于歷史數據和模型假設,實際銷量可能因多種因素而有所不同。
預測結果如下:
未來第1個月的預測銷量:約751,579輛
未來第2個月的預測銷量:約716,739輛
未來第3個月的預測銷量:約620,680輛
…(以此類推,直到第12個月)
請注意,由于使用的是基礎SARIMA模型配置,沒有進行詳細的參數調整和優化,因此這些預測應被視為初步估計。對于更精確的預測,通常需要進行詳細的模型選擇和參數調優。
廠商分析
對于中國汽車分廠商每月銷售表的更深入分析,我們可以考慮以下幾個方向:1, 廠商銷量分析:分析不同廠商的銷量表現,包括總銷量、平均銷量、銷量增長趨勢等。2, 市場份額分析:計算和比較不同廠商的市場份額變化。3, 時間趨勢分析:觀察各廠商銷量隨時間的變化趨勢,包括季節性變化和年度趨勢。4,最佳和最差表現分析:識別銷量表現最好和最差的廠商。5,銷量與時間的關系:探索不同年份和月份的銷量變化,以及特殊事件或政策變化對銷量的影響
廠商銷量分析
計算各廠商的總銷量和平均月銷量
total_sales_by_manufacture = sales_by_manufacture.groupby('廠商')['銷量'].sum().sort_values(ascending=False)
average_sales_by_manufacture = sales_by_manufacture.groupby('廠商')['銷量'].mean().sort_values(ascending=False)top_10_total_sales = total_sales_by_manufacture.head(10)
top_10_average_sales = average_sales_by_manufacture.head(10)
top_10_total_sales, top_10_average_sales
接下來,我們可以探索這些廠商的銷量隨時間的增長趨勢,以及年度和月度銷量的變化。這將有助于我們更全面地了解各廠商的銷售表現。
Top 5 廠商的年度銷量趨勢
從上圖中,我們可以觀察到排名前五的廠商——上汽大眾、上汽通用五菱、一汽-大眾、長城汽車、東風日產——的年度銷量趨勢。圖表展示了這些廠商在不同年份的銷量變化情況。
從趨勢中可以看出,這些頂級廠商的銷量表現各有特點,其中某些廠商顯示出明顯的增長趨勢,而其他廠商則可能有所波動。這些變化可能受到市場需求、競爭環境、新產品發布、政策變化等多種因素的影響。
市場份額分析
市場份額排名前10的廠商
sales_by_manufacture_clean = sales_by_manufacture[sales_by_manufacture['占銷量份額'].str.isnumeric()]try:sales_by_manufacture['占銷量份額'] = pd.to_numeric(sales_by_manufacture['占銷量份額'].str.rstrip('%'), errors='coerce') / 100
except Exception as e:error_message = str(e)sales_by_manufacture['占銷量份額'] = sales_by_manufacture['占銷量份額'].str.rstrip('%').astype('float', errors='ignore') / 100average_market_share = sales_by_manufacture.groupby('廠商')['占銷量份額'].mean().sort_values(ascending=False) * 100top_10_market_share = average_market_share.head(10)
top_10_market_share, error_message if 'error_message' in locals() else "No errors"
Top 5 廠商的市場份額趨勢
上圖展示了排名前五的廠商——上汽大眾、一汽-大眾、吉利汽車、上汽通用別克、比亞迪——的市場份額隨時間變化的趨勢。通過這張圖,我們可以觀察到這些主要廠商在不同時間點的市場控制力。市場份額的變化可能受到多種因素的影響,包括新車型的推出、市場競爭格局的變化、宏觀經濟條件的波動等。
時間趨勢分析
上圖展示了排名前五的廠商——上汽大眾、一汽-大眾、吉利汽車、上汽通用別克、比亞迪——的銷量時間趨勢。這些數據反映了各個廠商銷量隨時間的變化,包括季節性變化和年度趨勢。
從圖中我們可以觀察到:季節性變化:各廠商的銷量可能在某些月份表現更好,這可能與行業特定的季節性因素(如新車型發布、假日銷售等)相關;年度趨勢:長期來看,一些廠商的銷量表現出明顯的增長或下降趨勢,這可能受市場競爭、產品線更新、市場策略等因素的影響。
時間趨勢分析
上圖展示了中國汽車分廠商整體銷量的時間趨勢。從圖中我們可以觀察到:
- 長期趨勢:整體銷量隨時間的變化,展示了市場的增長或下降趨勢。
- 季節性變化:某些時間點的銷量可能高于或低于平均水平,表明市場可能存在季節性波動。這可能與特定季節的市場需求、節假日銷售活動或新車型發布有關。
- 此分析為我們提供了對中國汽車市場總體銷售動態的宏觀視角,反映了市場的長期趨勢和潛在的季節性模式。
最佳和最差表現分析
total_sales_ranking = sales_by_manufacture.groupby('廠商')['銷量'].sum().sort_values(ascending=False)average_monthly_sales_ranking = sales_by_manufacture.groupby('廠商')['銷量'].mean().sort_values(ascending=False)best_performers_total_sales = total_sales_ranking.head(5)
worst_performers_total_sales = total_sales_ranking.tail(5)best_performers_average_sales = average_monthly_sales_ranking.head(5)
worst_performers_average_sales = average_monthly_sales_ranking.tail(5)best_performers_total_sales, worst_performers_total_sales, best_performers_average_sales, worst_performers_average_sales
基于《中國汽車分廠商每月銷售表》的分析,我們得出以下關于銷量表現最好和最差的廠商:
銷量表現最好的廠商(基于總銷量):
上汽大眾:累計銷量約1309萬輛
上汽通用五菱:累計銷量約1306萬輛
一汽-大眾:累計銷量約1064萬輛
長城汽車:累計銷量約960萬輛
東風日產:累計銷量約950萬輛
銷量表現最差的廠商(基于總銷量):
鄭州日產新能源:累計銷量57輛
長安啟源:累計銷量30輛
奇瑞瑞麒:累計銷量12輛
DS(進口):累計銷量10輛
哈飛汽車:累計銷量9輛
銷量表現最好的廠商(基于平均月銷量):
上汽大眾:平均月銷量約124,700輛
一汽-大眾:平均月銷量約101,359輛
吉利汽車:平均月銷量約81,784輛
上汽通用別克:平均月銷量約77,219輛
比亞迪:平均月銷量約67,011輛
銷量表現最差的廠商(基于平均月銷量):
長安啟源:平均月銷量30輛
哈飛汽車:平均月銷量9輛
鄭州日產新能源:平均月銷量7輛
奇瑞瑞麒:平均月銷量2輛
DS(進口):平均月銷量2輛
銷量與時間的關系
上圖展示了中國汽車分廠商的年度銷量趨勢和月度銷量趨勢:
年度銷量趨勢:圖表顯示了每年的總銷量,反映了市場需求隨時間的整體變化。從圖中可以看出,銷量在不同年份有所波動,這可能受到宏觀經濟狀況、行業政策、市場競爭等因素的影響。
月度銷量趨勢:圖表展示了每月的平均銷量,揭示了可能的季節性模式。某些月份的銷量可能明顯高于或低于其他月份,這可能與節假日、促銷活動、季節性市場需求變化等因素有關。
此外,特殊事件或政策變化,如新能源汽車補貼政策、重大經濟事件、環保標準升級等,也可能對銷量產生顯著影響。然而,這類影響的詳細分析可能需要更多具體事件的數據和背景信息。
車型分析
對中國汽車分車型每月銷售量從幾個不同的角度進行探索,比如:1,車型銷量分析:分析不同車型的銷量表現,包括總銷量、平均銷量、銷量增長趨勢等。2,車型市場份額:計算不同車型的市場份額,并分析其隨時間的變化。3,時間趨勢分析:觀察不同車型銷量隨時間的變化趨勢,包括季節性變化和年度趨勢。4,最佳和最差表現車型分析:識別銷量表現最好和最差的車型。 5銷量與時間的關系:探索不同年份和月份的銷量變化,以及特殊事件或政策變化對銷量的影響。
車型銷量分析
total_sales_by_model = sales_by_model.groupby('車型')['銷量'].sum().sort_values(ascending=False)
average_sales_by_model = sales_by_model.groupby('車型')['銷量'].mean().sort_values(ascending=False)top_10_total_sales_models = total_sales_by_model.head(10)
top_10_average_sales_models = average_sales_by_model.head(10)top_10_total_sales_models, top_10_average_sales_models
print(top_10_total_sales_models, top_10_average_sales_models)
這些數據顯示了各個車型在市場上的表現。總銷量和平均月銷量排名不同的原因可能是某些車型雖然銷量高,但上市時間較短,或者某些車型雖然上市時間長,但月銷量較低。
車型市場份額分析
total_market_sales = sales_by_model['銷量'].sum()market_share_by_model = (sales_by_model.groupby('車型')['銷量'].sum() / total_market_sales) * 100market_share_by_model_sorted = market_share_by_model.sort_values(ascending=False)top_10_market_share_models = market_share_by_model_sorted.head(10)
top_10_market_share_models
時間趨勢分析
上圖展示了中國汽車各車型的銷量時間趨勢。從圖中可以觀察到:
整體趨勢:銷量隨時間的變化反映了市場的整體需求波動。可以看出,某些時間段的銷量特別高,可能受季節性活動或特殊事件的影響。
季節性變化:如果某些月份的銷量明顯高于其他月份,這可能表明市場對特定車型有季節性需求,例如節假日促銷、新車型發布等。
這種分析為提供了對市場動態的洞察,幫助我們了解不同車型的銷量隨時間的變化。這些信息對于制定銷售策略和市場預測非常有價值。
最佳和最差表現車型分析
best_performers_total_sales_models = total_sales_by_model.head(5)
worst_performers_total_sales_models = total_sales_by_model.tail(5)best_performers_average_sales_models = average_sales_by_model.head(5)
worst_performers_average_sales_models = average_sales_by_model.tail(5)best_performers_total_sales_models, worst_performers_total_sales_models, best_performers_average_sales_models, worst_performers_average_sales_models
這些結果顯示了市場上不同車型的銷售表現差異,反映了它們在市場競爭中的地位。
銷量與時間的關系
上圖展示了中國汽車各車型的年度銷量趨勢和月度銷量趨勢:
年度銷量趨勢:圖表顯示了每年的總銷量,反映了市場需求隨時間的整體變化。從圖中可以看出,銷量在不同年份有所波動,這可能受到宏觀經濟狀況、行業政策、市場競爭等因素的影響。
月度銷量趨勢:圖表展示了每月的平均銷量,揭示了可能的季節性模式。某些月份的銷量可能明顯高于或低于其他月份,這可能與節假日、促銷活動、季節性市場需求變化等因素有關。
此外,特殊事件或政策變化,如新能源汽車補貼政策、重大經濟事件、環保標準升級等,也可能對銷量產生顯著影響。然而,這類影響的詳細分析可能需要更多具體事件的數據和背景信息。