熊猫系列没有绘制时间序列图表

时间:2017-11-17 16:47:03

标签: python pandas numpy matplotlib data-visualization

我有一套房价数据 - House Price Data。当我在Numpy数组中使用数据的子集时,我可以在这个漂亮的时间序列图表中绘制它:

Desired chart BUT using Numpy Array

然而,当我在熊猫系列中使用相同的数据时,图表会像这样整齐:

The lumpy chart using a Pandas Series

如何使用熊猫系列创建平滑的时间序列折线图(如第一张图片)?

我正在做的是获得漂亮的时间序列图(使用Numpy数组)(将numpy导入为np,pandas为pd,matplotlib.pyplot为plt):

data = pd.read_csv('HPI.csv', index_col='Date', parse_dates=True) #pull in csv file, make index the date column and parse the dates
brixton = data[data['RegionName'] == 'Lambeth'] # pull out a subset for the region Lambeth
prices = brixton['AveragePrice'].values # create a numpy array of the average price values
plt.plot(prices) #plot
plt.show() #show

我正在做的是使用Panda系列来获得块状结构:

data = pd.read_csv('HPI.csv', index_col='Date', parse_dates=True)
brixton = data[data['RegionName'] == 'Lambeth']
prices_panda = brixton['AveragePrice'] 
plt.plot(prices_panda)
plt.show()

如何将第二张图表显示为一个很好的平滑时间序列?

*这是我的第一个StackOverflow问题,如果我遗漏了任何内容或者不清楚,请大声说出来

任何帮助非常感谢

2 个答案:

答案 0 :(得分:2)

当您执行parse_dates=True时,pandas会以默认方式(即月 - 日)读取日期。您的数据根据​​英国惯例(日 - 月)格式化。因此,您的图表不是每个月的第一天都有数据点,而是显示1月份前12天的数据点,以及每年剩余时间的平坦线。您需要重新格式化日期,例如

data.index = pd.to_datetime({'year':data.index.year,'month':data.index.day,'day':data.index.month})

答案 1 :(得分:0)

您所拥有的文件中的日期格式为日/月/年。为了让pandas正确解释这种格式,您可以在dayfirst=True调用中使用read_csv选项。

import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('data/UK-HPI-full-file-2017-08.csv', 
                   index_col='Date', parse_dates=True, dayfirst=True)
brixton = data[data['RegionName'] == 'Lambeth']
prices_panda = brixton['AveragePrice'] 
plt.plot(prices_panda)
plt.show()

enter image description here