Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用多个.csv文件在python中自动生成多个绘图_Python_Csv_Pandas_For Loop_Plot - Fatal编程技术网

使用多个.csv文件在python中自动生成多个绘图

使用多个.csv文件在python中自动生成多个绘图,python,csv,pandas,for-loop,plot,Python,Csv,Pandas,For Loop,Plot,我有14个.csv文件(每个位置1个.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']

我有14个.csv文件(每个位置1个.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个文件的名称如下: 名称=[“a.csv”、“b.csv”、“c.csv”、“d.csv”、“e.csv”、“f.csv”…]


下面是我正在使用的文件类型的示例:

第一种方法:您需要将所有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))

实际上我已经这样做了。我的代码中的第一行是:
os.chdir('/Users/me/desktop')
@JAG2024您试过其余的代码了吗?能用吗?差不多了!我刚刚收到错误消息
Traceback(上次调用):文件“run.py”,第57行,plt.savefig({}.jpg.format(fn))#使用相同的文件名命名图形错误:未定义名称“fn”
我复制并粘贴了您的“第一个方法”编码并将我的代码添加到您所说的#在此处运行其余代码的地方。是否有办法将csv文件的名称包括在新csv文件的重命名中(例如,将
df2.to_csv(“a3.csv”,na_rep=“0”,header=None)
更改为所用csv文件的名称以及
plt.suptitle('Rain 2015-2016',fontsize=20)