2015-05-09 50 views
2

我有一个逗号分隔的文件,我正在用Pandas通过Python读取。这里是一个子集:用python编写熊猫数据框日期和绘图

Location Time     Value1 Value2 
CCNY  2013-01-01 00:00:00 59  12.71  
CCNY  2013-01-01 01:00:00 96  10.6 
CCNY  2013-01-01 02:00:00 105 11.94  
CCNY  2013-01-01 03:00:00 81  11.73  
CCNY  2013-01-01 04:00:00 60  13.05  
CCNY  2013-01-01 05:00:00 51  13.25 
... 
CCNY  2013-31-01 06:00:00 28  13.03  

我需要绘制值1(X轴)与值2(Y轴),但我需要做的每一天。因此,对于包含1月份整个月份的文件的这部分,将会有31个图。

我应该怎么办?

(最终的目标是让每个情节和r最佳拟合线的平方值)。

感谢。

回答

3

请参阅下面的内容 - 按天对数据进行分组,并为每个数据生成一个图。

df.groupby(df['Time'].dt.day).plot(x='Value1', y='Value2') 
+0

谢谢@chrisb。是否有某种方法需要阅读该文件才能使用?我只使用parse_dates = True,index_col = 1。 – Steve

+0

@alldayiwonder取决于读取文件时获得的内容? – fixxxer

1

您的CSV看起来像一个固定宽度的文件,所以我会用read_fwf,然后需要,因为它把时间部分为未命名列重命名的时间列,然后你可以使用@ chrisB的回答实现什么你想:在地块

In [35]: 

t="""Location Time     Value1 Value2 
CCNY  2013-01-01 00:00:00 59  12.71  
CCNY  2013-01-01 01:00:00 96  10.6 
CCNY  2013-01-01 02:00:00 105 11.94  
CCNY  2013-01-02 03:00:00 81  11.73  
CCNY  2013-01-02 04:00:00 60  13.05  
CCNY  2013-01-02 05:00:00 51  13.25""" 
​ 
df = pd.read_fwf(io.StringIO(t), parse_dates=[[1,2]]) 
df.rename(columns={'Time_Unnamed: 2':'Time'},inplace=True) 
df 
Out[35]: 
       Time Location Value1 Value2 
0 2013-01-01 00:00:00  CCNY  59 12.71 
1 2013-01-01 01:00:00  CCNY  96 10.60 
2 2013-01-01 02:00:00  CCNY  105 11.94 
3 2013-01-02 03:00:00  CCNY  81 11.73 
4 2013-01-02 04:00:00  CCNY  60 13.05 
5 2013-01-02 05:00:00  CCNY  51 13.25 
In [36]: 

df.groupby(df['Time'].dt.date).plot(x='Value1', y='Value2') 
Out[36]: 
2013-01-01 Axes(0.125,0.125;0.775x0.775) 
2013-01-02 Axes(0.125,0.125;0.775x0.775) 
dtype: object 

结果:

enter image description here

enter image description here

+0

它实际上是一个逗号分隔的文件,但这大概是大熊猫如何将数据帧输出到屏幕上的,并且“2013-01-01 00:00:00”的时间正被读入单个列。 – Steve

+0

好吧,我认为你的代码片段是原始数据的实际文章,如果它是逗号分隔,那么'pd.read_csv(file_path,parse_dates = [1],index_col = [1])'应该可以工作 – EdChum