gpt4 book ai didi

python - tsplot 不绘图(再次)

转载 作者:行者123 更新时间:2023-12-01 03:01:13 25 4
gpt4 key购买 nike

我认为这一定与缺少单位/我的单位没有连续编号有关。

我有一个 df,其批处理 ID 是在不同年份测量的,但许多批处理 ID 只在一年(也许两年)内出现。

我仍然想绘制样本随时间的发展情况。

有什么解决办法吗? df.to_dict() 是 here

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
sns.tsplot(df, time='Year', value='Quality', unit='BatchID', condition='Vegetable')

最佳答案

是的,您的时间行丢失了。

一种可能的解决方案是 groupby 通过BatchID reindex 按使用 min 创建的范围和max Year缺失值用 ffill 填充和bffil fillna 中的方法相同的内容:

所以来自:

print (df.head(3))
BatchID Farmer Quality Vegetable Year
0 31 Pepperidge 0.55 Potato 9
1 31 Pepperidge 0.80 Potato 10
2 95 Johnson 0.50 Carrot 6

得到这个24行:

df1 = df.groupby('BatchID')
.apply(lambda x: x.set_index('Year')
.reindex(range(df.Year.min(), df.Year.max() + 1)).ffill().bfill())
.reset_index(level=1)
.reset_index(drop=True)

print (df1.head(24))
Year BatchID Farmer Quality Vegetable
0 1 31.0 Pepperidge 0.55 Potato
1 2 31.0 Pepperidge 0.55 Potato
2 3 31.0 Pepperidge 0.55 Potato
3 4 31.0 Pepperidge 0.55 Potato
4 5 31.0 Pepperidge 0.55 Potato
5 6 31.0 Pepperidge 0.55 Potato
6 7 31.0 Pepperidge 0.55 Potato
7 8 31.0 Pepperidge 0.55 Potato
8 9 31.0 Pepperidge 0.55 Potato
9 10 31.0 Pepperidge 0.80 Potato
10 11 31.0 Pepperidge 0.80 Potato
11 12 31.0 Pepperidge 0.80 Potato
12 1 95.0 Johnson 0.50 Carrot
13 2 95.0 Johnson 0.50 Carrot
14 3 95.0 Johnson 0.50 Carrot
15 4 95.0 Johnson 0.50 Carrot
16 5 95.0 Johnson 0.50 Carrot
17 6 95.0 Johnson 0.50 Carrot
18 7 95.0 Johnson 0.50 Carrot
19 8 95.0 Johnson 0.50 Carrot
20 9 95.0 Johnson 0.50 Carrot
21 10 95.0 Johnson 0.50 Carrot
22 11 95.0 Johnson 0.50 Carrot
23 12 95.0 Johnson 0.50 Carrot


sns.tsplot(df1, time='Year', value='Quality', unit='BatchID', condition='Vegetable')

graph

关于python - tsplot 不绘图(再次),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43818476/

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