假设我有一个列表列表,例如:
['010', '01', '7']
['010', '02', '6']
['010', '03', '24']
['010', '04', '6']
['015', '02', '8']
['015', '03', '27']
['015', '04', '27']
['020', '01', '130']
['020', '02', '140']
['020', '03', '202']
['020', '04', '3']
['021', '01', '3']
['021', '02', '4']
['021', '03', '22']
['021', '04', '1']
['025', '01', '13']
['025', '02', '52']
['025', '03', '82']
第一个元素代表ID,第二个元素代表月份,第三个元素代表总额。 如何按月绘制总金额?我希望每个ID都有一行。
我尝试了类似以下内容:
for i in output:
plt.plot(int(i[1]). int(i[2]))
plt.show()
正在返回空白行。此外,我也不确定如何处理图例。
答案 0 :(得分:2)
您可以使用pandas
。我假设您的列表列表名为l
import pandas as pd
fig, ax = plt.subplots()
arr = np.array(l).astype(np.int)
for id_, g in pd.DataFrame(arr).groupby(0):
ax.plot(g[1], g[2], label=id_)
ax.legend()
答案 1 :(得分:1)
首先,您需要根据第一列对值进行分组。例如,可以使用this建议来完成此操作。然后,您需要将字符串值转换为浮点数。可以使用map()
以及其他可能的方式来完成此操作。 [:, 1:]
指定索引,这意味着所有行:
然后是第二列和第三列1:
以下是一个有效的答案,假设您的输入存储在名为data
的变量中。
编辑:我建议@RafaelC使用astype(float)
将数据类型转换为浮点型
import matplotlib.pyplot as plt
import numpy as np
import itertools, operator
# data = [[...], [...], [...]]
for k,g in itertools.groupby(data, operator.itemgetter(0)):
arr = np.array(list(g))[:, 1:].astype(float)
x = arr[:, 0]
y = arr[:, 1]
plt.plot(x, y, label=k)
plt.legend()
plt.show()
答案 2 :(得分:1)
您可以使用pandas数据框标记和绘制数据:
import pandas as pd
l = [['010', '01', '7'],
['010', '02', '6'],
['010', '03', '24'],
['010', '04', '6'],
['015', '02', '8'],
['015', '03', '27'],
['015', '04', '27'],
['020', '01', '130'],
['020', '02', '140'],
['020', '03', '202'],
['020', '04', '3'],
['021', '01', '3'],
['021', '02', '4'],
['021', '03', '22'],
['021', '04', '1'],
['025', '01', '13'],
['025', '02', '52'],
['025', '03', '82']]
df = pd.DataFrame(l, columns=['ID','Month','Amount'])
df['Amount'] = df['Amount'].astype(int)
df.groupby(['Month','ID'])['Amount'].sum().unstack().plot()
输出:
答案 3 :(得分:1)
this pic for plot 尝试使用此代码
import scrapbook as sb
# training
#...........
#............
fig, ax = plt.subplots()
ax.plot(data.index, data['mydata'], c='k', alpha=.5)
sb.glue('figure', fig, 'display')
print("this is my results") # how can I reglue this in orchestrer_notebook ?