Search code examples
pythonpandascsvpygal

how to get the line graph for the multiple csv files using python?


enter image description hereenter image description hereenter image description hereenter image description hereLets say I have multiple csv files for test_suites UPT_Synergy_graph22.csv, UPT_C7000_graph22.csv, SAT-Synergy-gen2_graph22.csv, like this i have 10 more csv files, which are having the same columns in all the files -build_id and pass percent. I need to plot the line graph for all those files. where build id is x-axis and pass-percent is y-axis. I need to get line graph for each csv file (mean for each test suite).

I was able to get the graph for only one csv file, i am not able to fetch the results for all.

please help me to resolve this. below is the code i have used. or suggest me with any other module that can fit.

import pandas as pd
import pygal
from pygal.style import Style

data_frame=pd.read_csv('C:\\Users\\shivarad\\Documents\\Scale_graph22.csv', dtype={"Pass 
Percentage":int,"original_pass_percent":int})

a = []
b = []

line_chart=pygal.Line()

#line_chart.title='Graphical Representation of the pass percentage for a build ID---TEST SUITE: SCALE'
line_chart.x_labels=data_frame['build ID']
for index,row in data_frame.iterrows():
  a.append(row["Pass Percentage"])
  b.append(row["original_pass_percent"])

line_chart.add("Pass Percentage",a)
line_chart.add("original_pass_percent",b)
line_chart.render_in_browser()

#bar_chart.title='Graphical Representation of the pass percentage for a build ID---TEST SUITE: SCALE'
bar_chart = pygal.stackedBar(height=360, width=440,explicit_size=True)
bar_chart.title='Graphical Representation of the pass percentage for a build ID---TEST SUITE: SCALE'
bar_chart.x_labels=data_frame['build ID']
for index,row in data_frame.iterrows():
   a.append(row["Pass Percentage"])
   b.append(row["original_pass_percent"])
# adding the apeended list 
bar_chart.add('Pass Percentage', a)
bar_chart.add('original_pass_percent', b)

# rendering  the file
bar_chart.render_in_browser()}

Solution

    • Answering: I need to plot the line graph for all those files. where build id is x-axis and pass-percent is y-axis.
    • This code will do the following:
      • Create a list of the pertinent files
      • Iterate through each file
        • Create a dataframe
        • Plot the two specified columns from the dataframe with a label
    import pandas as pd
    import matplotlib.pyplot as plt
    from pathlib import Path
    %matplotlib inline  
    
    # graphing parameters
    plt.style.use('seaborn')
    plt.rcParams['figure.figsize'] = (16.0, 10.0)
    
    p = Path(r'c:\Users\shivarad\Documents')  # path to files
    files = list(p.rglob('*graph22.csv'))  # get files
    
    # everything for here down, belongs in one Jupyter cell
    plt.figure()
    for f in files:  # iterate through files
        file_name = f.stem  # get filename
        df = pd.read_csv(f, dtype={'Pass Percentage': int, 'original_pass_percent': int})  # create dataframe
    
        print(df.head())  # this is here to verify df has data; it can be commented out or removed
        
        plt.plot('build ID', 'Pass Percentage', data=df, label=file_name)  # plot the data from each file
    
    plt.legend(bbox_to_anchor=(1.04, 0.5), loc='center left')
    plt.savefig('test.jpg')  # verify there's plot in the file
    plt.show()  # outside the loop