我有一个逗号分隔文件,我正在通过Python阅读Pandas。这是一个子集:
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
我需要绘制value1(x轴)和value2(y轴),但我需要每天都这样做。因此,对于包含整月1月值的文件的这一部分,将有31个图。
我应该怎么做?
(最终目标是在每个图中获得最佳拟合线和r平方值。)
感谢。
答案 0 :(得分:3)
见下文 - 按天分组数据并为每个数据生成一个图。
df.groupby(df['Time'].dt.day).plot(x='Value1', y='Value2')
答案 1 :(得分: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
结果图:
和