gpt4 book ai didi

python - 使用标签在数据透视表中绘图

转载 作者:行者123 更新时间:2023-12-04 03:56:37 24 4
gpt4 key购买 nike

我的数据集

df

Month 1 2 3 4 5 Label
Name
A 120 80.5 120 105.5 140 0
B 80 110 98.5 105 100 1
C 150 90.5 105 120 190 2
D 100 105 98.5 110 120 1
...

要绘制月图,应用逆矩阵,

df = df.T
df

Name A B C D
Month
1 120 80 150 100
2 80.05 110 90.5 105
3 130 98.5 105 98.005
4 105.5 105 120 110
5 140 100 190 120
Label 0.00 1.0 2.0 1.000

最终我想做的是画图,x轴是这个月,y轴是值。

但是,我有两个问题。

Q1.

为了逆矩阵,'label'的数据类型被改变(int -> float),

只能将'label'的索引设置为int类型吗?

输出我想要的

df = df.T
df

Name A B C D
Month
1 120 80 150 100
2 80.05 110 90.5 105
3 130 98.5 105 98.005
4 105.5 105 120 110
5 140 100 190 120
Label 0 1 2 1

Q2.

q1 实际上是给 q2 的。绘制绘图时,我想使用标签对其进行分组。(如 seaborn hue)

使用上面的数据透视表绘制绘图时,有没有办法进行分组?(matplotlib、sns方法无所谓)

上面的label不一定非得是int,如果可能的话,你不需要回答q1任务。

感谢阅读

最佳答案

Q2:您需要 reshape 值,例如这里有 DataFrame.melt可能使用 hue:

df1 = df.reset_index().melt(['Name','Label'])
print (df1)

sns.stripplot(data=df1,hue='Label',x='Name',y='value')

Q1:Pandas 不支持,例如如果转换最后一行标签,它不会将值更改为 float :

df = df.T

df.loc['Label', :] = df.loc['Label', :].astype(int)
print (df)
Name A B C D
1 120.0 80.0 150.0 100.0
2 80.5 110.0 90.5 105.0
3 120.0 98.5 105.0 98.5
4 105.5 105.0 120.0 110.0
5 140.0 100.0 190.0 120.0
Label 0.0 1.0 2.0 1.0

编辑:

df1 = df.reset_index().melt(['Name','Label'], var_name='Month')
print (df1)
Name Label Month value
0 A 0 1 120.0
1 B 1 1 80.0
2 C 2 1 150.0
3 D 1 1 100.0
4 A 0 2 80.5
5 B 1 2 110.0
6 C 2 2 90.5
7 D 1 2 105.0
8 A 0 3 120.0
9 B 1 3 98.5
10 C 2 3 105.0
11 D 1 3 98.5
12 A 0 4 105.5
13 B 1 4 105.0
14 C 2 4 120.0
15 D 1 4 110.0
16 A 0 5 140.0
17 B 1 5 100.0
18 C 2 5 190.0
19 D 1 5 120.0

sns.lineplot(data=df1,hue='Label',x='Month',y='value')

关于python - 使用标签在数据透视表中绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63775844/

24 4 0