2017-02-24 127 views
0

我有一些代码需要一堆csv文件,并使用这些数据制作单独的图。我能够获得代码上的帮助(请参阅此处:Automate making multiple plots in python using several .csv files),但现在我想对其进行更改,以便在代码中将代码name替换为files向量中文件的名称。由于某些原因,这在代码plt.savefig('{}.png'.format(fn))的最后一行中起作用,但在其他地方不起作用。在python for循环中使用.csv文件名

import pandas as pd 
from dateutil import parser, rrule 
from datetime import datetime, time, date 
import time 
import os 
import matplotlib.pyplot as plt 

files = ['a.pd.csv', 
    't.pd.csv', 
    'r.pd.csv', 
    'n.pd.csv', 
    'm.pd.csv', 
    'k.pod.csv'] 

for f in files: 
    fn = f.split('.')[0] 
    dat = pd.read_csv(f) 
    df0 = dat.loc[:, ['TimeStamp', 'RF']] 
     # Change time format 
    df0["time"] = pd.to_datetime(df0["TimeStamp"]) 
    df0["day"] = df0['time'].map(lambda x: x.day) 
    df0["month"] = df0['time'].map(lambda x: x.month) 
    df0["year"] = df0['time'].map(lambda x: x.year) 
    df0.to_csv("name_1.csv", na_rep="0") # write to csv 

    # Combine for daily rainfall 
    df1 = pd.read_csv('name_1.csv', encoding='latin-1', 
        usecols=['day', 'month', 'year', 'RF', 'TimeStamp']) 
    df2 = df1.groupby(['day', 'month', 'year'], as_index=False).sum() 
    df2.to_csv("name_2.csv", na_rep="0", header=None) # write to csv 

    # parse date 
    df3 = pd.read_csv("name_2.csv", header=None, index_col='datetime', 
       parse_dates={'datetime': [1,2,3]}, 
       date_parser=lambda x: pd.datetime.strptime(x, '%d %m %Y')) 

    def dt_parse(date_string): 
     dt = pd.datetime.strptime(date_string, '%d %m %Y') 
     return dt 

    # sort datetime 
    df4 = df3.sort() 
    final = df4.reset_index() 

    # rename columns 
    final.columns = ['date', 'bleh', 'rf'] 

    final[['date','rf']].plot() 

    plt.suptitle('Name Rain 2015-2016', fontsize=20) #changename 
    plt.xlabel('DOY', fontsize=18) 
    plt.ylabel('Rain/mm', fontsize=16) 

    plt.savefig('{}.png'.format(fn)) 
+0

哪条线路到底如何?你的意思只是'suptitle()'?如果是这样的话,就像'plt.suptitle('Name:{}'.format(fn),fontsize = 20)'会起作用。 Yup! –

+0

是!这工作..谢谢。还有一个问题..你知道如何制作文本中的第一个字母大写,我用{括号}替代吗? – JAG2024

+0

更改'fn'为'fn.title()' –

回答

0

固定我自己的问题:df2.to_csv('{}_2.csv'.format(fn), na_rep="0", header=None) # write to csv