gpt4 book ai didi

python - 如何引用列表绘制 Pandas 数据框的值(索引问题)?

转载 作者:太空宇宙 更新时间:2023-11-04 05:10:32 24 4
gpt4 key购买 nike

我正在寻找一种聪明的方法来制作这样一个相当幼稚的例子的情节: enter image description here

使用这样的源数据:

days = ['Monday','Tuesday','Wednesday','Thursday','Friday']


Feature Values observed on
0 1 [5.5, 14.3, 12.0, 11.8] [Tuesday, Wednesday, Thursday, Friday]
1 2 [6.1, 14.6, 12.7] [Monday, Tuesday, Wednesday]
2 3 [15.2, 13.3] [Tuesday, Friday]
3 4 [14.9, 14.3, 17.0] [Monday, Thursday, Friday]
4 5 [13.0, 13.1, 13.5, 10.3] [Monday, Tuesday, Thursday, Friday]
5 6 [12.5, 7.0] [Wednesday, Friday]

换句话说,对于此数据框的每一行,我想绘制/连接获取它们的“天数”的值。 (请注意这里的日子只是为了说明我的问题,使用 datetime 不是解决方案。)但是我迷失了索引。

这就是我准备图形的方式(即每天都有垂直黑线)

for count, log in enumerate(days):
plt.plot(np.ones(len(allvalues))*count,np.array(allvalues),'k',linestyle='-',linewidth=1.)
plt.xticks(np.arange(0,5,1),['M','T','W','T','F'])

这很有效,我得到了垂直线和标签。 (稍后我可能想绘制其他数据集而不是那些垂直线,但现在,垂直线更具说明性)但是现在,我该如何绘制每一天的值?

for index, group in observations.iterrows():
whichdays= group['observed on']
values = group['Values']
for d in whichdays:
plt.plot(days[np.where(days==d)],values)

但这会产生 TypeError: list indices must be integers, not tuple

最佳答案

一个可能的解决方案是从listspivot 和 plot 中拉平值:

from  itertools import chain

df2 = pd.DataFrame({
"Feature": np.repeat(df.Feature.values, df.Values.str.len()),
"Values": list(chain.from_iterable(df.Values)),
"observed on": list(chain.from_iterable(df['observed on']))})
print (df2)
Feature Values observed on
0 1 5.5 Tuesday
1 1 14.3 Wednesday
2 1 12.0 Thursday
3 1 11.8 Friday
4 2 6.1 Monday
5 2 14.6 Tuesday
6 2 12.7 Wednesday
7 3 15.2 Tuesday
8 3 13.3 Friday
9 4 14.9 Monday
10 4 14.3 Thursday
11 4 17.0 Friday
12 5 13.0 Monday
13 5 13.1 Tuesday
14 5 13.5 Thursday
15 5 10.3 Friday
16 6 12.5 Wednesday
17 6 7.0 Friday

df = df2.pivot(index='observed on', columns='Feature', values='Values')
df.index.name = None
df.columns.name = None
print (df)
1 2 3 4 5 6
Friday 11.8 NaN 13.3 17.0 10.3 7.0
Monday NaN 6.1 NaN 14.9 13.0 NaN
Thursday 12.0 NaN NaN 14.3 13.5 NaN
Tuesday 5.5 14.6 15.2 NaN 13.1 NaN
Wednesday 14.3 12.7 NaN NaN NaN 12.5

df.plot(linestyle='-',linewidth=1.)

graph

关于python - 如何引用列表绘制 Pandas 数据框的值(索引问题)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43110684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com