Python绘图数据与日期

时间:2017-10-25 11:18:07

标签: python date matplotlib

我有一个数据集:

wholeTextFiles

如何针对'yearweek'绘制每个值?

我试过例如:

          A     B      C    D    yearweek
    0    245    95    60    30   2014-48
    1    245    15    70    25   2014-49
    2    150   275   385   175   2014-50
    3    100   260   170   335   2014-51
    4    580   925   535  2590   2015-02
    5    630   126   485  2115   2015-03
    6    425    90   905  1085   2015-04
    7    210   670   655   945   2015-05

但它不起作用并显示

    import matplotlib.pyplot as plt
    import pandas as pd

    new = pd.DataFrame([df['A'].values, df['yearweek'].values])
    plt.plot(new)

然后我尝试了这个:

    ValueError: could not convert string to float: '2014-48'

结果:

    plt.scatter(df['Total'], df['yearweek'])

这是否意味着每周的类型有问题?我该如何解决?

或者是否可以将索引更改为日期?

2 个答案:

答案 0 :(得分:1)

从pandas 0.20.X开始,您可以使用DataFrame.plot()生成所需的图。它在引擎盖下使用matplotlib -

import pandas as pd
data = pd.read_csv('Your_Dataset.csv')

data.plot(['yearweek'], ['A'])

此处,yearweek将成为x轴,A将成为y。由于它是一个列表,因此在两种情况下都可以使用多个

注意:如果它仍然看起来不太好,那么您可以将yearweek列正确解析为dateformat,然后重试。

答案 1 :(得分:1)

我看到的最佳解决方案是从头开始计算日期,并将其作为日期时间添加到新列中。然后你可以轻松地绘制它。

df['date'] = df['yearweek'].map(lambda x: datetime.datetime.strptime(x,"%Y-%W")+datetime.timedelta(days=7*(int(x.split('-')[1])-1)))

df.plot('date','A')

所以我从当年的第一个月开始,然后前进7 *(第1周),然后从中生成日期。