数据在下面给出,其中每个键:datetime有一个带有字母和相应百分比的元组列表。我正在尝试产生类似于下图的内容,但是由于字母在示例中来来往往的时间内不一致,因此我在字母上遇到了一些麻烦。
{
datetime.datetime(2020, 2, 14, 0, 0):
[('A', 0.1),
('B', 0.2),
('C', 0.1),
('D', 0.25),
('E', 0.05)],
datetime.datetime(2020, 5, 15, 0, 0):
[('A', 0.1),
('B', 0.14),
('C', 0.09),
('D', 0.16),
('F', 0.6)], # Note F
...
}
检查此代码:
import pandas as pd
import datetime
import matplotlib.pyplot as plt
import seaborn as sns
data = {
datetime.datetime(2020, 2, 14, 0, 0):
[('A', 0.1),
('B', 0.2),
('C', 0.1),
('D', 0.25),
('E', 0.05)],
datetime.datetime(2020, 2, 15, 0, 0):
[('A', 0.1),
('B', 0.14),
('C', 0.09),
('D', 0.16),
('F', 0.6)],
datetime.datetime(2020, 2, 16, 0, 0):
[('A', 0.1),
('C', 0.25),
('D', 0.05),
('E', 0.3),
('F', 0.15)],
datetime.datetime(2020, 2, 17, 0, 0):
[('B', 0.15),
('C', 0.25),
('D', 0.2),
('E', 0.25),
('F', 0.05)],
datetime.datetime(2020, 2, 18, 0, 0):
[('A', 0.2),
('B', 0.3),
('C', 0.1),
('D', 0.15),
('E', 0.25)],
datetime.datetime(2020, 2, 19, 0, 0):
[('A', 0.15),
('B', 0.15),
('C', 0.1),
('E', 0.3),
('F', 0.25)],
datetime.datetime(2020, 2, 20, 0, 0):
[('A', 0.15),
('B', 0.25),
('C', 0.05),
('D', 0.1),
('E', 0.35)],
}
df = pd.DataFrame(columns = ['date', 'letter', 'value'])
for key, value in data.items():
date = pd.DataFrame({'date': [key]*len([couple[0] for couple in value]),
'letter': [couple[0] for couple in value],
'value': [couple[1] for couple in value]})
df = df.append(date)
fig, ax = plt.subplots(figsize = (12, 6))
sns.lineplot(ax = ax,
data = df,
x = 'date',
y = 'value',
hue = 'letter')
plt.show()
为了生成图,我生成了一些与您相似的数据。
然后,我在一个临时数据date
框中按日期对数据进行了整理,以便从列表中提取字母和值。然后,我将该临时数据框附加到通用数据框上,df
如下所示:
date letter value
0 2020-02-14 A 0.10
1 2020-02-14 B 0.20
2 2020-02-14 C 0.10
3 2020-02-14 D 0.25
4 2020-02-14 E 0.05
0 2020-02-15 A 0.10
1 2020-02-15 B 0.14
2 2020-02-15 C 0.09
3 2020-02-15 D 0.16
4 2020-02-15 F 0.60
0 2020-02-16 A 0.10
1 2020-02-16 C 0.25
2 2020-02-16 D 0.05
3 2020-02-16 E 0.30
4 2020-02-16 F 0.15
0 2020-02-17 B 0.15
1 2020-02-17 C 0.25
2 2020-02-17 D 0.20
3 2020-02-17 E 0.25
4 2020-02-17 F 0.05
0 2020-02-18 A 0.20
1 2020-02-18 B 0.30
2 2020-02-18 C 0.10
3 2020-02-18 D 0.15
4 2020-02-18 E 0.25
0 2020-02-19 A 0.15
1 2020-02-19 B 0.15
2 2020-02-19 C 0.10
3 2020-02-19 E 0.30
4 2020-02-19 F 0.25
0 2020-02-20 A 0.15
1 2020-02-20 B 0.25
2 2020-02-20 C 0.05
3 2020-02-20 D 0.10
4 2020-02-20 E 0.35
最后,我按日期绘制值,并根据字母进行拆分sns.lineplot
。我得到这个情节。
如您所见,2020-02-14
字母F
在数据中和绘图中都没有出现。在2020-02-15
信E
中没有出现的数据,所以在情节线跳这个日期的下一个值E
上2020-02-16
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句