您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        # 怎么用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)
})
Pandas绘图有两种主要方式:
1. 直接使用DataFrame的plot()方法
2. 通过df.plot.<图表类型>()的快捷方式
# 基本线图
df['A'].plot()
# 等价写法
df['A'].plot.line()
最适合展示时间序列数据:
df.set_index('D')['B'].plot(
    title='时间序列折线图',
    figsize=(10, 5),
    grid=True,
    xlabel='日期',
    ylabel='数值'
)
plt.show()
比较不同类别的数值:
# 分组计算平均值
df.groupby('C')['B'].mean().plot.bar(
    color='skyblue',
    edgecolor='black',
    title='类别平均值比较'
)
plt.xticks(rotation=0)
plt.show()
展示数据分布:
df['A'].plot.hist(
    bins=20,
    alpha=0.7,
    density=True,
    title='数据分布直方图'
)
plt.grid(axis='y')
plt.show()
显示数据统计特征:
df.plot.box(
    patch_artist=True,
    vert=False,
    meanline=True,
    showmeans=True
)
plt.title('数据分布箱线图')
plt.show()
展示两个变量的关系:
df.plot.scatter(
    x='A',
    y='B',
    c='C',  # 用颜色表示第三个维度
    cmap='viridis',
    s=50,   # 点大小
    alpha=0.7
)
plt.title('A与B的相关性分析')
plt.show()
展示部分与整体的关系:
df[['A', 'B']].abs().rolling(10).mean().plot.area(
    alpha=0.5,
    stacked=False
)
plt.title('移动平均面积图')
plt.show()
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()
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()
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()
# 获取示例数据
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()
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()
plt.rcParams['font.sans-serif'] = ['SimHei']  # Windows
plt.rcParams['axes.unicode_minus'] = False
df.plot().get_figure().savefig('output.png', dpi=300)
df.sample(1000).plot()  # 随机采样
Pandas绘图功能虽然基于Matplotlib,但提供了更简洁的API,特别适合快速数据探索。关键要点:
- 使用plot()方法及其变体绘制不同类型图表
- 通过参数自定义图表样式和布局
- 结合Matplotlib实现更复杂的可视化需求
- 时间序列数据有专门的优化处理
掌握这些技巧后,你可以高效地将数据转化为直观的可视化结果,为数据分析工作提供有力支持。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。