我正在用Python通过Pandas读取CSV文件并创建一个数据帧。以下是print语句的一部分,显示每小时的数据:
Location Time Count Speed Parameter1...
0 CCNY 2010-01-01 06:00:00 1 48.00 35.8
1 CCNY 2010-01-01 07:00:00 2 18.00 32.6
... ... ... ... ... ...
97775 PS19 2013-12-31 21:00:00 178 9.27 12.8
97776 PS19 2013-12-31 22:00:00 190 8.90 11.7
(时间是包含日期和时间的一列。)
这就是我需要做的:
每天绘制每个位置的速度与各种参数(数据包含每小时的信息)。我没有在上面的打印示例中显示各种参数,但是它们保存在每行的其他列中。对于每个CCNY位置,有速度和4个其他参数。对于PS19位置,只有速度和1个其他参数。因此,在1月份,CCNY的速度vs参数1有31个图,CCNY的速度vs参数2有31个图,CCNY的速度vs参数3有31个图,CCNY的速度vs参数4有31个图。对于PS19的其他位置,只有31个速度与参数1的曲线图。请评论,如果这是混淆!
接下来,对于每个图,我需要添加一条最佳拟合线,并计算斜率和r平方值。
鉴于所有的大输出,我想输出所有的绘图图像到一个文件夹和斜率和r平方值为每个地点和一天的CSV。你知道吗
我创建的数据框如下:
def parse_date(raw_date):
return datetime.strptime(raw_date, '%Y-%m-%d %H:%M:%S')
df = pd.read_csv('part-00000', delimiter=',')
df['Time'] = df['Time'].map(parse_date)
这是我迄今为止的尝试,但它不能正常工作:
locations = { 'CCNY': ('Parameter1', 'Parameter2', 'Parameter3', 'Parameter4'),
'PS19': ('Parameter1') }
for location in locations.keys():
for i in xrange(0, len(locations[location])):
df.groupby(df['Time'].dt.day).plot(x='Average_Speed', y=locations[location][i], style = 'o', title=location+": "+locations[location][i]+" "+str(i))
plt.savefig('plots/plot'+str(location)+str(locations[location][i])+'_'+str(i)+'.png')
我解决了这个问题:
首先,需要遍历groupby创建的组,这就是为什么它只生成4个图:
其次,为了计算斜率和r值,可以使用SciPy:
在循环中添加:
相关问题 更多 >
编程相关推荐