0

I have this working function that takes 2 inputs as .csv files and shows chart of the data. What I would like to do is to turn function input into list instead of 2 files.

This is the function:

def Graph(first_file,second_file):
 
    fig = make_subplots(rows=1, cols=3)
    list_of_atributes = ["Total", "Clean", "Dirty"]
    data = pd.read_csv(first_file)
    data2= pd.read_csv(second_file)
    df = pandas.DataFrame(data)
    df2 = pandas.DataFrame(data2)
    data_list = []
    data_list2 = []
    show_bar = df[df.Name == "SUM"]
    show_bar2 = df2[df2.Name == "SUM"]
    for n in list_of_atributes:
        data_list.append(int(show_bar[n]))
        data_list2.append(int(show_bar2[n]))

    fig.add_trace(go.Bar(name='File 1', x=list_of_atributes, y=data_list, marker=dict(color='red')), row=1, col=2)
    fig.add_trace(go.Bar(name='File 2', x=list_of_atributes, y=data_list2 ,marker=dict(color='blue')), row=1, col=1)

    fig.show()
Grapfh("file1.csv", "file2.csv")

2 Answers 2

1

If I understand correctly, you want your function to plot things based on a list of files, so from 1 to n files, not specifically 2.

You could try this :

def Graph(files):
 
    fig = make_subplots(rows=1, cols=len(files)+1)

    for file_idx in range(len(files)) :

        list_of_atributes = ["Total", "Clean", "Dirty"]
        data = pd.read_csv(files[file_idx])
        df = pandas.DataFrame(data)
        data_list = []
    
        show_bar = df[df.Name == "SUM"] 
        for n in list_of_atributes:
           data_list.append(int(show_bar[n]))
    

        fig.add_trace(go.Bar(name=f'File {file_idx+1}', x=list_of_atributes, y=data_list, marker=dict(color='red')), row=1, col=file_idx+1)

    fig.show()
Graph(["file1.csv", "file2.csv"] )
Sign up to request clarification or add additional context in comments.

Comments

0
def Graph(files):
    
    for file in files:
        fig = make_subplots(rows=1, cols=3)
        list_of_atributes = ["Total", "Clean", "Dirty"]
        data = pd.read_csv(file)
        data_list = []
        show_bar = df[df.Name == "SUM"]
        for n in list_of_atributes:
            data_list.append(int(show_bar[n]))

        fig.add_trace(go.Bar(name='File 1', x=list_of_atributes, y=data_list, marker=dict(color='red')), row=1, col=2)
        fig.add_trace(go.Bar(name='File 2', x=list_of_atributes, y=data_list2 ,marker=dict(color='blue')), row=1, col=1)

    fig.show()
    
Grapfh( ["file1.csv", "file2.csv"] )

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.