您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 怎么用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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。