使用 Python 庫中自帶的數據集來實現上述 50 個數據分析和數據可視化程序的示例代碼
? ? ? ?摘要:由于 sample_data.csv
是一個占位符文件,用于代表任意數據集,我將使用 Python 庫中自帶的數據集來實現上述 50 個數據分析和數據可視化程序的示例代碼。Python 的 seaborn
庫提供了多個內置數據集,其中 iris
數據集是一個經典的例子,包含了鳶尾花的特征數據,適合用于演示數據分析和可視化技術。iris
數據集包含 150 個樣本,4 個特征(sepal_length
, sepal_width
, petal_length
, petal_width
)和 1 個目標變量(species
),非常適合用于分類、回歸和可視化任務。
? ? ? ?以下是基于 iris
數據集重新實現的上述 50 個程序中的代表性示例,覆蓋數據加載、預處理、統計分析、可視化基礎、高級可視化和高級分析等部分。由于篇幅限制,我將選擇每個部分的幾個關鍵程序進行完整代碼展示,并對其他程序提供簡要說明。如果你需要某個特定程序的完整代碼或對其他數據集有需求,請進一步說明。
使用 Seaborn 的 Iris 數據集實現示例
1. 數據分析基礎 - 數據加載與預處理
1.1 數據加載
- 目標:加載
iris
數據集并查看基本信息。 - 代碼:
import seaborn as sns
import pandas as pd# 加載 iris 數據集
df = sns.load_dataset('iris')# 查看前 5 行數據
print("First 5 rows:\n", df.head())# 查看數據集信息
print("\nDataset Info:\n", df.info())# 查看基本統計量
print("\nBasic Statistics:\n", df.describe())
1.2 數據清洗 - 缺失值處理
- 目標:檢查并處理缺失值(
iris
數據集無缺失值,僅作演示)。 - 代碼:
import seaborn as sns
import pandas as pddf = sns.load_dataset('iris')# 檢查缺失值
print("Missing Values:\n", df.isnull().sum())# 如果有缺失值,用均值填充(這里無缺失,僅演示)
df['sepal_length'].fillna(df['sepal_length'].mean(), inplace=True)# 刪除包含缺失值的行(如果有)
df.dropna(inplace=True)print("Missing Values after Handling:\n", df.isnull().sum())
1.3 數據清洗 - 異常值檢測
- 目標:使用 IQR 方法檢測并移除
sepal_length
的異常值。 - 代碼:
import seaborn as sns
import pandas as pd
import numpy as npdf = sns.load_dataset('iris')# 計算 IQR
Q1 = df['sepal_length'].quantile(0.25)
Q3 = df['sepal_length'].quantile(0.75)
IQR = Q3 - Q1# 移除異常值
df_cleaned = df[(df['sepal_length'] >= Q1 - 1.5 * IQR) & (df['sepal_length'] <= Q3 + 1.5 * IQR)]print("Data after removing outliers in sepal_length:\n", df_cleaned.describe())
其他程序簡要說明 (1.4-1.10):
- 1.4 數據轉換 - 標準化:對
iris
的特征(如sepal_length
,petal_length
)使用StandardScaler
標準化。 - 1.5 數據轉換 - 類別編碼:對
species
列進行標簽編碼或獨熱編碼。 - 1.6 數據聚合 - 分組統計:按
species
分組,計算各特征的均值和計數。 - 1.7 數據合并 - 合并數據集:可將
iris
數據集拆分為兩部分后合并(演示merge
)。 - 1.8 數據重塑 - 透視表:創建
species
和特征的透視表,計算均值。 - 1.9 時間序列 - 日期處理:
iris
無時間數據,可使用其他數據集(如sns.load_dataset('flights')
)演示。 - 1.10 數據過濾 - 條件篩選:篩選
sepal_length
大于某個值的樣本。
2. 統計分析與探索
2.1 描述性統計
- 目標:計算
iris
數據集的基本統計量。 - 代碼:
import seaborn as sns
import pandas as pddf = sns.load_dataset('iris')# 計算描述性統計量
stats = df.describe()
print("Descriptive Statistics:\n", stats)
2.3 相關性分析
- 目標:計算
iris
數據集特征間的相關系數。 - 代碼:
import seaborn as sns
import pandas as pddf = sns.load_dataset('iris')# 計算相關性矩陣
corr_matrix = df.corr()
print("Correlation Matrix:\n", corr_matrix)
其他程序簡要說明 (2.2, 2.4-2.10):
- 2.2 頻次分布:計算
species
的頻次分布。 - 2.4 假設檢驗 - t 檢驗:比較兩個
species
的sepal_length
均值差異。 - 2.5 方差分析 (ANOVA):比較三個
species
的sepal_length
均值差異。 - 2.6 數據分布 - 直方圖分析:繪制
sepal_length
的直方圖。 - 2.7 箱線圖 - 異常值分析:繪制
sepal_length
的箱線圖。 - 2.8 數據分組 - 分位數分析:對
sepal_length
進行分位數分組。 - 2.9 滾動平均 - 時間序列平滑:
iris
無時間數據,可使用其他數據集。 - 2.10 數據排序 - 排名分析:對
sepal_length
進行排名。
3. 數據可視化基礎 - Matplotlib
3.2 散點圖 - 相關性分析
- 目標:繪制
sepal_length
和sepal_width
的散點圖。 - 代碼:
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as pltdf = sns.load_dataset('iris')# 繪制散點圖
plt.scatter(df['sepal_length'], df['sepal_width'])
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.title('Scatter Plot of Sepal Length vs Sepal Width')
plt.show()
3.3 直方圖 - 分布分析
- 目標:繪制
sepal_length
的直方圖。 - 代碼:
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as pltdf = sns.load_dataset('iris')# 繪制直方圖
plt.hist(df['sepal_length'], bins=20)
plt.xlabel('Sepal Length')
plt.ylabel('Frequency')
plt.title('Histogram of Sepal Length')
plt.show()
其他程序簡要說明 (3.1, 3.4-3.10):
- 3.1 折線圖 - 趨勢分析:繪制
sepal_length
的折線圖(可按索引排序)。 - 3.4 箱線圖 - 異常值可視化:繪制
sepal_length
的箱線圖。 - 3.5 條形圖 - 類別比較:繪制
species
類別中sepal_length
均值的條形圖。 - 3.6 餅圖 - 比例分析:繪制
species
分布的餅圖。 - 3.7 面積圖 - 累計趨勢:繪制
sepal_length
的面積圖。 - 3.8 多子圖 - 對比分析:繪制
sepal_length
和sepal_width
的多子圖。 - 3.9 自定義樣式 - 美化圖表:自定義
sepal_length
折線圖樣式。 - 3.10 注釋 - 圖表標注:在
sepal_length
圖表上添加最大值注釋。
4. 數據可視化高級 - Seaborn 和 Plotly
4.1 Seaborn 熱圖 - 相關性可視化
- 目標:繪制
iris
數據集的特征相關性熱圖。 - 代碼:
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as pltdf = sns.load_dataset('iris')# 計算相關性矩陣
corr_matrix = df.corr()# 繪制熱圖
plt.figure(figsize=(8, 6))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', vmin=-1, vmax=1, center=0)
plt.title('Correlation Heatmap of Iris Dataset')
plt.show()
4.2 Seaborn 成對圖 - 多變量關系
- 目標:繪制
iris
數據集的成對圖。 - 代碼:
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as pltdf = sns.load_dataset('iris')# 繪制成對圖
sns.pairplot(df, hue='species', diag_kind='hist')
plt.suptitle('Pair Plot of Iris Dataset', y=1.02)
plt.show()
其他程序簡要說明 (4.3-4.10):
- 4.3 Seaborn 箱線圖 - 分組分布:繪制按
species
分組的sepal_length
箱線圖。 - 4.4 Seaborn 小提琴圖 - 分布密度:繪制按
species
分組的sepal_length
小提琴圖。 - 4.5 Seaborn 回歸圖 - 線性關系:繪制
sepal_length
和sepal_width
的回歸圖。 - 4.6 Plotly 交互式折線圖:繪制
sepal_length
的交互式折線圖。 - 4.7 Plotly 交互式散點圖:繪制
sepal_length
和sepal_width
的交互式散點圖。 - 4.8 Plotly 3D 散點圖:繪制
sepal_length
、sepal_width
和petal_length
的 3D 散點圖。 - 4.9 Plotly 地圖可視化:
iris
無地理數據,可使用其他數據集(如px.data.gapminder()
)。 - 4.10 Seaborn 主題與樣式:設置 Seaborn 主題,繪制
sepal_length
折線圖。
5. 高級數據分析與可視化
5.1 主成分分析 (PCA)
- 目標:對
iris
數據集進行 PCA 降維。 - 代碼:
import seaborn as sns
import pandas as pd
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScalerdf = sns.load_dataset('iris')# 選擇特征
X = df[['sepal_length', 'sepal_width', 'petal_length', 'petal_width']]# 標準化數據
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)# 應用 PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)print("Explained Variance Ratio:", pca.explained_variance_ratio_)
5.2 K 均值聚類
- 目標:對
iris
數據集進行 K 均值聚類。 - 代碼:
import seaborn as sns
import pandas as pd
from sklearn.cluster import KMeansdf = sns.load_dataset('iris')# 選擇特征
X = df[['sepal_length', 'sepal_width', 'petal_length', 'petal_width']]# 應用 K 均值聚類
kmeans = KMeans(n_clusters=3, random_state=42)
df['cluster'] = kmeans.fit_predict(X)print("Data with Clusters:\n", df.head())
其他程序簡要說明 (5.3-5.10):
- 5.3 線性回歸預測:使用
sepal_length
預測sepal_width
。 - 5.4 決策樹分類:使用特征預測
species
。 - 5.5 特征重要性分析:使用隨機森林分析
iris
特征重要性。 - 5.6 時間序列預測 - ARIMA:
iris
無時間數據,可使用其他數據集。 - 5.7 聚類結果可視化:可視化 K 均值聚類結果。
- 5.8 回歸預測可視化:可視化線性回歸預測。
- 5.9 主成分分析可視化:可視化 PCA 降維結果。
- 5.10 交互式儀表盤 - Dash:創建
iris
數據集的交互式儀表盤。
總結和運行說明
數據集說明
- Iris 數據集:
seaborn.load_dataset('iris')
提供了 150 個鳶尾花樣本,包含 4 個特征和 1 個類別標簽,適合分類、回歸和可視化任務。 - 其他數據集:對于時間序列或地理數據分析,可使用 Seaborn 的
flights
數據集或 Plotly 的gapminder
數據集。
運行環境
- 安裝庫:確保安裝必要的庫:
pip install pandas numpy matplotlib seaborn plotly scikit-learn statsmodels dash
- 運行代碼:將上述代碼復制到 Python 環境(如 Jupyter Notebook 或 VS Code)中,運行即可查看結果。
- 數據集適配:如果使用自己的
sample_data.csv
,確保包含類似特征列(如數值列、類別列),并根據列名調整代碼。
學習建議
- 逐步執行:從數據加載和預處理開始,逐步進行統計分析和可視化,理解每個步驟的作用。
- 對比結果:對比不同可視化方法(如 Matplotlib vs Seaborn)對同一數據的呈現效果。
- 擴展實踐:嘗試對
iris
數據集應用所有 50 個程序,記錄分析結果,構建完整分析報告。
? ? ? ?通過以上基于 iris
數據集的示例,你可以快速實現上述 50 個程序,并逐步掌握數據分析和數據可視化的技能。如果需要某個程序的完整代碼或其他數據集的適配示例,請進一步說明,我會提供更詳細的支持。