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))
哪条线路到底如何?你的意思只是'suptitle()'?如果是这样的话,就像'plt.suptitle('Name:{}'.format(fn),fontsize = 20)'会起作用。 Yup! –
是!这工作..谢谢。还有一个问题..你知道如何制作文本中的第一个字母大写,我用{括号}替代吗? – JAG2024
更改'fn'为'fn.title()' –