溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Python中的Pandas庫繪制數據

發布時間:2022-01-24 16:03:14 來源:億速云 閱讀:179 作者:zzz 欄目:開發技術
# 怎么用Python中的Pandas庫繪制數據

Pandas是Python中最流行的數據分析庫之一,它內置了基于Matplotlib的繪圖功能,可以快速實現數據可視化。本文將詳細介紹如何用Pandas繪制常見圖表,并附上完整代碼示例。

## 一、Pandas繪圖基礎

### 1.1 準備工作
首先需要安裝Pandas和Matplotlib庫:
```python
pip install pandas matplotlib

導入基礎庫并準備示例數據:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 創建示例DataFrame
np.random.seed(42)
df = pd.DataFrame({
    'A': np.random.randn(100),
    'B': np.random.rand(100)*100,
    'C': np.random.randint(0, 10, 100),
    'D': pd.date_range('2023-01-01', periods=100)
})

1.2 基本繪圖語法

Pandas繪圖有兩種主要方式: 1. 直接使用DataFrame的plot()方法 2. 通過df.plot.<圖表類型>()的快捷方式

# 基本線圖
df['A'].plot()

# 等價寫法
df['A'].plot.line()

二、常見圖表類型

2.1 折線圖 (Line Plot)

最適合展示時間序列數據:

df.set_index('D')['B'].plot(
    title='時間序列折線圖',
    figsize=(10, 5),
    grid=True,
    xlabel='日期',
    ylabel='數值'
)
plt.show()

2.2 柱狀圖 (Bar Plot)

比較不同類別的數值:

# 分組計算平均值
df.groupby('C')['B'].mean().plot.bar(
    color='skyblue',
    edgecolor='black',
    title='類別平均值比較'
)
plt.xticks(rotation=0)
plt.show()

2.3 直方圖 (Histogram)

展示數據分布:

df['A'].plot.hist(
    bins=20,
    alpha=0.7,
    density=True,
    title='數據分布直方圖'
)
plt.grid(axis='y')
plt.show()

2.4 箱線圖 (Box Plot)

顯示數據統計特征:

df.plot.box(
    patch_artist=True,
    vert=False,
    meanline=True,
    showmeans=True
)
plt.title('數據分布箱線圖')
plt.show()

2.5 散點圖 (Scatter Plot)

展示兩個變量的關系:

df.plot.scatter(
    x='A',
    y='B',
    c='C',  # 用顏色表示第三個維度
    cmap='viridis',
    s=50,   # 點大小
    alpha=0.7
)
plt.title('A與B的相關性分析')
plt.show()

2.6 面積圖 (Area Plot)

展示部分與整體的關系:

df[['A', 'B']].abs().rolling(10).mean().plot.area(
    alpha=0.5,
    stacked=False
)
plt.title('移動平均面積圖')
plt.show()

三、高級繪圖技巧

3.1 多子圖繪制

fig, axes = plt.subplots(2, 2, figsize=(12, 8))

df['A'].plot.hist(ax=axes[0,0], title='分布')
df['B'].plot.box(ax=axes[0,1], title='離群值')
df.plot.scatter(x='A', y='B', ax=axes[1,0], title='相關性')
df['C'].value_counts().plot.pie(ax=axes[1,1], title='類別占比')

plt.tight_layout()
plt.show()

3.2 樣式定制

ax = df['A'].abs().plot(
    style='--',        # 線型
    color='red',       # 顏色
    marker='o',        # 標記點
    markersize=4,      # 標記大小
    linewidth=1,       # 線寬
    title='樣式定制示例',
    label='絕對值'
)

ax.set_facecolor('#f5f5f5')  # 背景色
ax.grid(color='white', linestyle='-', linewidth=1)
ax.legend()
plt.show()

3.3 時間序列特殊處理

ts = pd.Series(
    np.random.randn(1000),
    index=pd.date_range('2023-01-01', periods=1000)
)

ts.resample('M').mean().plot(
    kind='bar',
    width=0.8,
    title='按月重采樣'
)
plt.xticks(rotation=45)
plt.show()

四、實戰案例

4.1 股票數據分析

# 獲取示例數據
import yfinance as yf
data = yf.download('AAPL', start='2022-01-01', end='2023-01-01')

# 繪制移動平均線
ax = data['Close'].plot(label='收盤價', figsize=(12,6))
data['Close'].rolling(20).mean().plot(ax=ax, label='20日均線')
data['Close'].rolling(50).mean().plot(ax=ax, label='50日均線')

ax.set_title('蘋果公司股價分析')
ax.legend()
plt.show()

4.2 銷售數據分析

sales = pd.DataFrame({
    'Month': pd.date_range('2023-01-01', periods=12, freq='M'),
    'Product_A': np.random.randint(50, 200, 12),
    'Product_B': np.random.randint(30, 150, 12),
    'Product_C': np.random.randint(20, 100, 12)
})

sales.set_index('Month').plot(
    kind='area',
    stacked=True,
    alpha=0.6,
    title='2023年產品銷售構成'
)
plt.ylabel('銷售量')
plt.show()

五、常見問題解決

  1. 中文顯示問題
plt.rcParams['font.sans-serif'] = ['SimHei']  # Windows
plt.rcParams['axes.unicode_minus'] = False
  1. 圖表保存
df.plot().get_figure().savefig('output.png', dpi=300)
  1. 處理大數據集
df.sample(1000).plot()  # 隨機采樣

六、總結

Pandas繪圖功能雖然基于Matplotlib,但提供了更簡潔的API,特別適合快速數據探索。關鍵要點: - 使用plot()方法及其變體繪制不同類型圖表 - 通過參數自定義圖表樣式和布局 - 結合Matplotlib實現更復雜的可視化需求 - 時間序列數據有專門的優化處理

掌握這些技巧后,你可以高效地將數據轉化為直觀的可視化結果,為數據分析工作提供有力支持。 “`

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女