You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何基于DataFrame字符串变量分组绘制多序列折线图

解决方案

1. 数据结构说明

你当前使用的是标准的长表(Tidy Data)结构,完全不需要转换为几百个字段的宽表就可以直接绘图,反而长表更适合分组、筛选等批量处理逻辑,是Python数据分析的推荐结构。

2. 直接基于长表绘图的代码(以seaborn+matplotlib为例)

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 先确保日期列是datetime格式(你的数据已经符合要求)
data['Date'] = pd.to_datetime(data['Date'])

# 绘制Share_price走势
plt.figure(figsize=(12,6))
sns.lineplot(data=data, x='Date', y='Share_price', hue='Share', marker='o')
plt.title('2021年各股票价格走势')
plt.xlabel('日期')
plt.ylabel('股票价格')
plt.grid(alpha=0.3)
plt.show()

# 绘制VX走势
plt.figure(figsize=(12,6))
sns.lineplot(data=data, x='Date', y='VX', hue='Share', marker='o')
plt.title('2021年各股票VX指标走势')
plt.xlabel('日期')
plt.ylabel('VX值')
plt.grid(alpha=0.3)
plt.show()

上述代码会自动按Share字段的不同取值分组,给不同股票分配不同颜色的折线,完全满足你的需求,不需要提前做字段拆分。

3. 可选:如需转宽表的操作方法

如果后续你确实需要宽表结构用于其他处理,可以用pivot方法实现,不会生成300多个杂乱的字段,结构会很清晰:

# 以日期为索引,股票代码为列,同时保留两个指标的宽表
wide_df = data.pivot(index='Date', columns='Share', values=['Share_price', 'VX'])
# 查看转换后的列名
print(wide_df.columns)
# 输出会是 MultiIndex 格式:[('Share_price', 'aapl'), ('Share_price', 'amzn'), ('Share_price', 'nflx'), ('VX', 'aapl'), ...]

如果要获取单只股票的价格,直接用wide_df['Share_price']['aapl']即可,比单独生成几百个独立字段的可读性和可维护性高很多。


内容的提问来源于stack exchange,提问作者Ballongknutte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:21:00