怎么用Python中的Pandas库绘制数据

发布时间:2022-01-24 16:03:14 作者:zzz
来源:亿速云 阅读:171
# 怎么用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实现更复杂的可视化需求 - 时间序列数据有专门的优化处理

掌握这些技巧后,你可以高效地将数据转化为直观的可视化结果,为数据分析工作提供有力支持。 “`

推荐阅读:
  1. Python中pandas绘制可视化图表的方法
  2. python中Pandas库的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

pandas python

上一篇:Python 3.9.0新特性实例分析

下一篇:Linux系统中怎么安装SQL server

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》