14のCSVファイル(場所ごとに1つの.csvファイル)があり、毎日の降水量の14バープロットになります。次のコードは、1つの棒グラフがどのように表示されるかの例です。いくつかの.csvファイルを使用して複数のプロットをPythonで自動作成
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()
そして、最終的なグラフは次のようになります。私はこのコードを自動化することができますどのように
を(つまりは、書き込み用のループ多分?)私は、コードを再入力する必要はありませんように.csvファイルごとに?コードが.jpgファイルの名前として.csvの名前を付けて保存するといいでしょう。
14ファイルの名前は次のとおりです。 names = ["a.csv"、 "b.csv"、 "c.csv"、 "d.csv"、 "e.csv"、 "f .CSV」...]ここで
は、私が働いているファイルの種類の例です:https://dl.dropboxusercontent.com/u/45095175/test.csv
私は実際にすでにこれを行います。私のコードの最初の行は 'os.chdir( '/ Users/me/desktop')' – JAG2024
@ JAG2024です。残りのコードを試しましたか?それは動作しますか? –
ほぼ!私はちょうどエラーメッセージ 'Traceback(最新の最後の呼び出し): ファイル" run.py "、行57、 plt.savefig( 'jpg'.format(fn)同じファイル名 NameError:名前 'fn'が定義されていません。 –
JAG2024