我有14个.csv文件(每个位置有一个.csv文件),用于制作14小节的日降雨量图。下面的代码是一个条形图的示例。
import numpy as np
import pandas as pd
from datetime import datetime, time, date
import matplotlib.pyplot as plt
# Import data
dat = pd.read_csv('a.csv')
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("a2.csv", na_rep="0") # write to csv
# Combine for daily rainfall
df1 = pd.read_csv('a2.csv', encoding='latin-1',
usecols=['day', 'month', 'year', 'RF', 'TimeStamp'])
df2 = df1.groupby(['day', 'month', 'year'], as_index=False).sum()
df2.to_csv("a3.csv", na_rep="0", header=None) # write to csv
# parse date
df3 = pd.read_csv("a3.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('Rain 2015-2016', fontsize=20)
plt.xlabel('Date', fontsize=18)
plt.ylabel('Rain / mm', fontsize=16)
plt.savefig('a.jpg')
plt.show()最后的情节如下:

我如何自动化这段代码(例如,编写一个for-循环?)这样我就不必为每个.csv文件重新输入代码了?如果代码还保存以.csv名称作为.jpg文件名的图形,那就太好了。
这14个文件的名称如下:name= "a.csv“、"b.csv”、"c.csv“、"d.csv”、"e.csv“、”f.csv“.
下面是我正在处理的文件类型的一个示例:https://dl.dropboxusercontent.com/u/45095175/test.csv
发布于 2017-02-24 03:54:56
第一种方法:,您需要将所有csv文件放在当前文件夹中。您还需要使用os模块。
import os
for f in os.listdir('.'): # loop through all the files in your current folder
if f.endswith('.csv'): # find csv files
fn, fext = os.path.splitext(f) # split file name and extension
dat = pd.read_csv(f) # import data
# Run the rest of your code here
plt.savefig('{}.jpg'.format(fn)) # name the figure with the same file name 第二种方法:,如果不想使用os模块,可以将文件名放在如下列表中:
files = ['a.csv', 'b.csv']
for f in files:
fn = f.split('.')[0]
dat = pd.read_csv(f)
# Run the rest of your code here
plt.savefig('{}.jpg'.format(fn))https://stackoverflow.com/questions/42430387
复制相似问题