文章概要
本文詳細介紹 Pandas 的數據可視化功能,包括:
- 基礎繪圖
- 高級可視化
- 統計圖表
- 實際應用示例
基礎繪圖
折線圖
# 基本折線圖
df.plot(x='日期', y='值')
df.plot.line(x='日期', y='值')# 多列折線圖
df.plot(x='日期', y=['列1', '列2'])# 自定義樣式
df.plot(x='日期', y='值',title='標題',xlabel='X軸標簽',ylabel='Y軸標簽',color='red',linestyle='--',marker='o')# 保存圖表
plt.savefig('折線圖.png')
柱狀圖
# 基本柱狀圖
df.plot.bar(x='類別', y='值')
df.plot.barh(x='類別', y='值') # 水平柱狀圖# 堆疊柱狀圖
df.plot.bar(x='類別', y=['列1', '列2'], stacked=True)# 分組柱狀圖
df.plot.bar(x='類別', y=['列1', '列2'])# 自定義樣式
df.plot.bar(x='類別', y='值',title='標題',color='skyblue',width=0.8,alpha=0.7)
散點圖
# 基本散點圖
df.plot.scatter(x='列1', y='列2')# 帶顏色映射的散點圖
df.plot.scatter(x='列1', y='列2', c='列3', cmap='viridis')# 帶大小映射的散點圖
df.plot.scatter(x='列1', y='列2', s='列3')# 自定義樣式
df.plot.scatter(x='列1', y='列2',title='標題',color='red',marker='*',s=100)
餅圖
# 基本餅圖
df.plot.pie(y='值', labels=df['類別'])# 環形圖
df.plot.pie(y='值', labels=df['類別'], hole=0.5)# 自定義樣式
df.plot.pie(y='值',labels=df['類別'],title='標題',autopct='%1.1f%%',colors=['red', 'blue', 'green'])
高級可視化
多子圖
# 創建子圖
fig, axes = plt.subplots(2, 2, figsize=(12, 8))# 在子圖中繪圖
df.plot.line(x='日期', y='列1', ax=axes[0, 0])
df.plot.bar(x='類別', y='列2', ax=axes[0, 1])
df.plot.scatter(x='列1', y='列2', ax=axes[1, 0])
df.plot.pie(y='值', labels=df['類別'], ax=axes[1, 1])# 調整布局
plt.tight_layout()
自定義樣式
# 設置全局樣式
plt.style.use('seaborn')# 自定義顏色
colors = ['#FF9999', '#66B2FF', '#99FF99', '#FFCC99']# 自定義字體
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['font.size'] = 12# 自定義網格
plt.grid(True, linestyle='--', alpha=0.7)# 自定義圖例
plt.legend(loc='upper right', frameon=True, fancybox=True, shadow=True)
交互式圖表
# 使用 plotly 創建交互式圖表
import plotly.express as px
import plotly.graph_objects as go# 折線圖
fig = px.line(df, x='日期', y='值', title='交互式折線圖')
fig.show()# 散點圖
fig = px.scatter(df, x='列1', y='列2', color='列3', title='交互式散點圖')
fig.show()# 保存為 HTML
fig.write_html('交互式圖表.html')
統計圖表
箱線圖
# 基本箱線圖
df.plot.box(y='值')# 多列箱線圖
df.plot.box(y=['列1', '列2'])# 分組箱線圖
df.boxplot(column='值', by='類別')# 自定義樣式
df.plot.box(y='值',title='標題',color='skyblue',vert=False) # 水平箱線圖
直方圖
# 基本直方圖
df.plot.hist(y='值')# 多列直方圖
df.plot.hist(y=['列1', '列2'])# 自定義樣式
df.plot.hist(y='值',bins=20,title='標題',color='skyblue',alpha=0.7)
密度圖
# 基本密度圖
df.plot.kde(y='值')# 多列密度圖
df.plot.kde(y=['列1', '列2'])# 自定義樣式
df.plot.kde(y='值',title='標題',color='red',linestyle='--')
熱力圖
# 基本熱力圖
import seaborn as sns
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')# 自定義樣式
sns.heatmap(df.corr(),annot=True,cmap='coolwarm',center=0,fmt='.2f',square=True)
實際應用示例
示例1:股票數據分析可視化
# 創建示例數據
dates = pd.date_range('2023-01-01', periods=100)
stock_data = pd.DataFrame({'收盤價': np.random.randn(100).cumsum() + 100,'成交量': np.random.randint(1000, 10000, 100),'MA5': None,'MA20': None
}, index=dates)# 計算移動平均
stock_data['MA5'] = stock_data['收盤價'].rolling(window=5).mean()
stock_data['MA20'] = stock_data['收盤價'].rolling(window=20).mean()# 創建子圖
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 8), height_ratios=[2, 1])# 繪制K線圖
stock_data['收盤價'].plot(ax=ax1, label='收盤價')
stock_data['MA5'].plot(ax=ax1, label='MA5')
stock_data['MA20'].plot(ax=ax1, label='MA20')# 繪制成交量圖
stock_data['成交量'].plot(ax=ax2, kind='bar', color='skyblue', alpha=0.7)# 設置標題和標簽
ax1.set_title('股票價格走勢')
ax1.set_ylabel('價格')
ax1.legend()
ax2.set_title('成交量')
ax2.set_ylabel('成交量')# 調整布局
plt.tight_layout()
plt.show()
示例2:銷售數據分析可視化
# 創建示例數據
dates = pd.date_range('2023-01-01', periods=365)
sales_data = pd.DataFrame({'銷售額': np.random.randn(365).cumsum() + 1000,'訂單數': np.random.randint(10, 100, 365),'客單價': None
}, index=dates)# 計算客單價
sales_data['客單價'] = sales_data['銷售額'] / sales_data['訂單數']# 創建子圖
fig, (ax1, ax2, ax3) = plt.subplots(3, 1, figsize=(12, 12))# 繪制銷售額趨勢
sales_data['銷售額'].plot(ax=ax1, color='blue')
ax1.set_title('銷售額趨勢')
ax1.set_ylabel('銷售額')# 繪制訂單數分布
sales_data['訂單數'].plot.hist(ax=ax2, bins=30, color='green', alpha=0.7)
ax2.set_title('訂單數分布')
ax2.set_xlabel('訂單數')
ax2.set_ylabel('頻次')# 繪制客單價箱線圖
sales_data.boxplot(column='客單價', ax=ax3)
ax3.set_title('客單價分布')
ax3.set_ylabel('客單價')# 調整布局
plt.tight_layout()
plt.show()
總結
數據可視化部分涵蓋了:
- 基礎圖表類型(折線圖、柱狀圖、散點圖、餅圖)
- 高級可視化技術(多子圖、自定義樣式、交互式圖表)
- 統計圖表(箱線圖、直方圖、密度圖、熱力圖)
- 實際應用示例
掌握數據可視化技術對于數據分析至關重要,它可以幫助我們:
- 直觀地展示數據特征和趨勢
- 發現數據中的規律和異常
- 有效地傳達分析結果
- 支持決策制定
建議通過實際項目多加練習,熟悉各種可視化方法的適用場景和組合使用方式。同時,也要注意:
- 選擇合適的圖表類型
- 保持圖表的簡潔性和可讀性
- 使用適當的顏色和樣式
- 添加必要的標題和標簽
- 考慮圖表的交互性需求