Python 如何将循环的结果放入列表中?

Python 如何将循环的结果放入列表中?,python,datetime,matplotlib,pivot,Python,Datetime,Matplotlib,Pivot,我有一个数据集: a b c 11/01/1999 8 367235 11/01/1999 5 419895 11/01/1999 1 992194 23/03/1999 4 419895 30/04/1999 1 992194 02/06/1999 9 419895 08/08/1999 2 367235 12/08/1999 3 419895 17/08/1999 10 992194 22/10/1999 3

我有一个数据集:

   a        b      c
11/01/1999  8   367235
11/01/1999  5   419895
11/01/1999  1   992194
23/03/1999  4   419895
30/04/1999  1   992194
02/06/1999  9   419895
08/08/1999  2   367235
12/08/1999  3   419895
17/08/1999  10  992194
22/10/1999  3   419895
04/12/1999  4   992194
04/03/2000  2   367235
29/09/2000  9   367235
30/09/2000  9   367235
我试图制作一个可视化,显示随时间变化的值集(列“b”)(列“a”):

*请注意,这只是对我的目标做一个概括性的描述——它不是我的数据集

我将数据集更改为透视表,它在第一列中列出了列“c”值、“a”值沿顶行排列,以及数据框中的“b”值。幸运的是,我已经能够从透视表中提取值行,并将其用作matplotlib绘图的输入(表示图表上的y值)。不幸的是,我无法以可接受的格式提取透视表的标题,这是一个问题,因为标题表示图表上的x值

下面是代码中起作用的部分:

from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
from datetime import datetime

df = (pd.read_csv('orcs.csv'))
df_wanted = pd.pivot_table(
    df,
    index='c',
    columns='a',
    values='b')
lala = df_wanted.as_matrix()
x=np.array(lala[1,:])
y = (df_wanted.columns.astype(str).tolist())
下面是代码中不起作用的部分

我尝试了几种选择(包括错误消息):

一,

二,

三,


您需要交换
索引
,然后将
索引
转换为
日期时间
。然后只需
.plot()


如果要使用
matplotlib.pyplot
进行打印,则只能指定数字坐标(即非字符串)。但是您可以为这些坐标指定
str
标签

<>你可能想考虑这样的代码:

from matplotlib import pyplot as plt
import datetime

yValues = [10,15,8,7,1]
xLabels = ['a', datetime.datetime.now().strftime("%Y-%M-%d"), 
                    'b', 'c', 'd']

fig = plt.figure()     
ax = fig.add_axes([0.1, 0.2, 0.8, 0.7])
ax.plot(yValues)
ax.set_xticks(range(len(yValues)))
ax.set_xticklabels(xLabels, rotation = 'vertical')
fig.show()

伊利亚·V·舒罗夫,非常非常感谢你提供了如此优雅的解决方案。您还使我不用编写代码来处理40000个y值行。我已经试着这么做了一段时间,所以我感到非常欣慰,因为它起作用了。非常感谢。
for i in range(len(y)):
    c= (y[i])
    print(c) #no error message, but gives me an output I don't know how to capture for the plt.plot input.
for i in range(len(y)):
    c= (y[i])
    f = datetime.strptime(c, '%d/%m/%Y')
    v=list(f)
    plot.plot(x,v) # error message:'datetime.datetime' object is not iterable
df_wanted = pd.pivot_table(df, columns='c',
                           index='a', values='b')    
df_wanted.index = pd.to_datetime(df_wanted.index)
df_wanted.plot()
from matplotlib import pyplot as plt
import datetime

yValues = [10,15,8,7,1]
xLabels = ['a', datetime.datetime.now().strftime("%Y-%M-%d"), 
                    'b', 'c', 'd']

fig = plt.figure()     
ax = fig.add_axes([0.1, 0.2, 0.8, 0.7])
ax.plot(yValues)
ax.set_xticks(range(len(yValues)))
ax.set_xticklabels(xLabels, rotation = 'vertical')
fig.show()