PROJECT IN INFORMATICS PRACTICES (065) Academic Year 2022-2023 T20 Batting Analysis System NAME: Bhumita Sejwal CLASS:12-Sci ROLL NUMBER: 1 CONTENTS DESCRIPTION PAGE NO. Chapter 1: INTRODUCTION Chapter 2: FUNCTIONALTIES/SOURCE CODE 5 7 Chapter 3: PROPOSED METHODOLOGY AND IMPLEMENTATION 6 Chapter 4: EXPERIMENTAL RESULTS /OUTPUT 13 Chapter 5: CONCLUSION AND FUTURE SCOPE 27 LITERATURE REFERENCES/BIBLIOGRAPHY 28 2 CERTIFICATE This is to certify that this project report entitled T20 Batting Analysis is a bonafide record of the project work done by Bhumita Sejwal of class XII-Science, roll number ………...…. In the academic year 2022-2023. The project has been submitted in partial fulfillment of AISSCE for practical held at St. Anthony’s Senior Secondary School, Hauz Khas, New Delhi. Date - Teacher-in-Charge Internal Examiner External Examiner 3 ACKNOWLEDGEMENTS First and foremost, I thank Lord Almighty for the grace, strength and hope to make my endeavor a success. I would like to express my gratitude towards the Principal of my Institution, Rev Sr Daisy, for making available all possible resources to help in my endeavors. It gives me immense pleasure to express my sincere gratitude towards my supervisor Ms. Shalini Mehra, PGT Informatics Practices, St Anthony’s Senior Secondary School, Hauz Khas, for her invaluable guidance. I consider myself extremely fortunate to have had a chance to work under her supervision. I also express my gratitude to all the respected faculty members of St Anthony’s Senior Secondary School, Hauz Khas, who have helped me directly or indirectly. I would also like to express my indebtedness to blessings of my parents and family. 4 INTRODUCTION The data stored in csv or database file is used and analyzed using Python libraries and appropriate charts are generated to visualize our data. This project has been made for storing the T20 Batting records of the different matches. The code include City, Team, Against, Name, Runs, BallsFaced, Fours, Sixes, StrikeRate,etc.It contains of addition, modification, deletion and searching of records, generating of records as per there requirement. At last the changes will be shown automatically by justclicking enter key. 5 HARDWARE AND SOFTWARE REQUIREMENTS Hardware Processor : 10th Generation Intel(R) Core(TM) i3-1035G1 Solid State Drive : 512GB Screen Resolution : 1920 × 1080 RAM : 8 GB Others : Standard computer peripherals like keyboard, mouse, etc. Software Operating System : : Windows 10 Programming Tool : Python 3.11 CSV File Tool : Microsoft Excel 6 SOURCE CODE import pandas as pd import matplotlib.pyplot as plt while True: print("MAIN MENU") print("1.Dataframe Stats") print("2.Record Analysis") print("3.Insert Delete Record") print("4.Data Visualization as per records") print("5.Customized Data Visualization") print("6.Exit") ch=int(input("Enter Your Choice:")) if(ch==1): df=pd.read_csv("t20wc.csv") print("Dataframe Properties:") print("1.Diplay the transpose") print("2.Display column names") print("3.Display indexes") print("4.Display the shape") print("5.Display the dimension") print("6.Display the data types of all columns") print("7.Display the size") print("8.Back") ch1=int(input("Enter Your Choice:")) if ch1==1: print(df.T) input("Press Enter to continue...") elif ch1==2: print(df.columns) input("Press Enter to continue...") elif ch1==3: print(df.index) input("Press Enter to continue...") elif ch1==4: print(df.shape) input("Press Enter to continue...") elif ch1==5: print(df.ndim) input("Press Enter to continue...") elif ch1==6: print(df.dtypes) input("Press Enter to continue...") elif ch1==7: print(df.size) input("Press Enter to continue...") elif ch1==8: pass elif ch==2: df=pd.read_csv("t20wc.csv") print("RECORD ANALYSIS MENU") print("1.Highest Score (Inning - Top 10)") print("2.Lowest Score (Inning - Botton 10)") print("3.Specific Number of Records From Top") print("4.Specific Number of Records From Bottom") print("5.Details record for Sr.No.") 7 print("6.Details record for a Team") print("7.Details record for a Batsman") print("8.Most Runs (Top Ten)") print("9.Least Runs (Bottom Ten)") print("0.Back") ch2=int(input("Enter Your Choice:")) if ch2==1: df1=df.loc[:,['city','name','runs','ballsFaced']] df1=df1.sort_values(by='runs',ascending=False) print(df1.head(10)) input("Press Enter to continue...") elif ch2==2: df1=df.loc[:,['city','name','runs','ballsFaced']] df1=df1.sort_values(by='runs',ascending=False) print(df1.tail(10)) input("Press Enter to continue...") elif ch2==3: no=int(input("How Many Number of Records You Want To Be Printed From The Top:")) df1=df.loc[:,['city','name','runs','ballsFaced']] print(df1.head(no)) input("Press enter to continue...") elif ch2==4: n=int(input("How Many Number of Records You Want To Be Printed From Bottom:")) df1=df.loc[:,['city','name','runs','ballsFaced']] print(df1.tail(n)) input("Press enter to continue...") elif ch2==5: sno=int(input("Enter The Sr.No. For Which You Want The data To Be Displayed:")) print(df.loc[sno]) input('Press enter to continue...') elif ch2==6: team=input("Enter The Sr.No. For Which You Want The data To Be Displayed:") df1=df.loc[df['team']==team] print(df1.loc[:,['city','name','runs','ballsFaced']]) input('Press enter to continue...') elif ch2==7: print("Ensure the name should match with CSV records:") b=input("Enter The Sr.No. For Which You Want The data To Be Displayed:") df1=df.loc[df['name']==b] print(df1.loc[:,['city','name','runs','ballsFaced']]) print('------------------------------------------------') df1.at['Total','runs']=df1['runs'].sum() print(df1) input('Press enter to continue...') elif ch2==8: df1=df[['name','runs']].groupby('name').sum() df1=df1.sort_values(by='runs',ascending=False) print(df1.head(10)) input("Press enter to continue...") elif ch2==9: df1=df[['name','runs']].groupby('name').sum() df1=df1.sort_values('runs') print(df1.head(10)) 8 input("Press enter to continue...") elif ch2==0: pass else: print("Invalid Choice") elif(ch==3): df=pd.read_csv("t20wc.csv") print("Insert Delete record") print("1.Insert a record") print("2.Delete a records") print("3.Exit The Records Menu") ch3=int(input("Enter Your Choice:")) if ch3==1: col=df.columns print(col) j=0 rec={} for i in col: print("Enter",col[j],"value:") nval=input() rec[col[j]]=nval j=j+1 df=df.append(rec,ignore_index=True) print("Data is Successfully Updated") df.to_csv('t20wc.csv',index=False) input("Press enter to continue...") elif ch3==2: a=int(input("Enter S.No. whose data You Want to be deleted:")) df.drop([a-1],inplace=True) df.to_csv('t20wc.csv',index=False) print("Record deleted...") input("Press enter to continue...") elif ch3==3: pass elif(ch==4): df=pd.read_csv("t20wc.csv") print("Data Visualization Menu - According to no. of rows") print("1.Line Plot") print("2.Vertical Bar Plot") print("3.Horizontal Bar Plot") print("4.Histogram") print("5.Exit The Data Visualization Menu") ch4=int(input("Enter Choice:")) df1=pd.DataFrame() if ch4==1: n=int(input("How many records from the top of table you want to plot:")) df1=df.head(n) df1.plot(linestyle="-.",linewidth=2,label="WORLD CUP RECORD OF MS DHONI") plt.show() elif ch4==2: n=int(input("How many records from the top of table you want to plot:")) df1=df.head(n) df1.plot(kind="bar",color="pink",width=.8) plt.show() 9 elif ch4==3: n=int(input("How many records from the top of table you want to plot:")) df1=df.head(n) df1.plot(kind="barh",color="cyan",width=.8) plt.show() elif ch4==4: df.hist(color="yellow",edgecolor="pink") plt.show() elif ch4==5: pass elif(ch==5): df=pd.read_csv("t20wc.csv") print("Customized Data Visualization Menu") print("1.By Player") print("2.By Team") print("3.Back") ch5=int(input("Enter Choice:")) df1=pd.DataFrame() if ch5==1: print("Ensure the name should match with CSV records:") player=input("Enter player name you want to plot:") print(''' 1. Line Chart 2. Bar Chart 3. Horizontal Bar Chart 4. Histogram 5. Back ''') ch5_1=int(input("Enter your choice:")) if ch5_1==1: df1=df.loc[df['name']==player] df1=df1.loc[:,['against','runs']] df1.plot(x='against',y='runs',kind='line',linestyle="-.",linewidth=2,co lor='r') plt.show() elif ch5_1==2: df1=df.loc[df['name']==player] df1=df1.loc[:,['against','runs']] df1.plot(x='against',y='runs',kind='bar',color='r') plt.show() df1.plot(x='against',y='runs',kind='hist',bins=25,cumulative=True) plt.show() elif cf5_1==5: pass elif ch5==2: print("Ensure the name should match with CSV records:") team=input("Enter team name you want to plot:") print(''' 1. Line Chart 2. Bar Chart 3. Horizontal Bar Chart 4. Histogram 5. Back ''') ch5_2=int(input("Enter your choice:")) 10 if ch5_2==1: df1=df.loc[df['team']==team] df1=df1.loc[:,['name','runs']] df1.plot(x='name',y='runs',kind='line',linestyle="-.",linewidth=2,color ='r') plt.show() elif ch5_2==2: df1=df.loc[df['team']==team] df1=df1.loc[:,['name','runs']] df1.plot(x='name',y='runs',kind='bar',color='r') plt.show() df1.plot(x='name',y='runs',kind='hist',bins=25,cumulative=True) plt.show() elif ch5_2==5: pass elif ch==6: print(“Invalid Choice”) break else: print("*---------------------*INVALID CHOICE*---------------------*") 11 PROPOSED METHODOLOGY AND IMPLEMENTATION The T20 Batting Analysis System is designed to maintain records and details of the teams and batsman. It allows the user to manupilate or view the details to suit his or her needs. The T20 Batting Analysis System contains the details of teams and batsman such as:1.City 2.Team 3.Against 4.Name 5.Runs 6.Balls Faced 7.Fours 8.Sixes 9.Strike Rate Based on these data values the application provides with the following function required by him or her: 1.Viewing transpose ofdataframe. 2. .Adding new records 3.Deleting records. 4. Graphical representation. Upon choosing an option, depending on the chosen function,the user would be given a choice to perform further functions on the whole record. If the user chooses to apply on an individual or group of batsman,they have an option of selection based on their names.Since,the data provided is small there are no identical or repetition of names it is easy for the user to get details through names. Finally,after the user has entered all the details which are needed to obtain the necessary outcome,some outcomes are shown through graphs. 12 OUTPUT 1.To transpose the datframe: 2.To display column names: 13 14 3.To display column names: 4.To display the shape: 15 5.To display the dimensions: 6.To display data type of all columns: 16 7. To display size: 8.To display top 10 score: 17 9.To display bottom 10 score: 10.To display specific no. of records from top: 18 11.To display specific no. of records from top: 12. To display records for specific Sr. No. 19 13. To display records for a team: 14. To display records for a batsman: 20 15. To display most runs: 16. To insert a record: 21 17. To delete a record: 18. To plot a bar graph: 22 19. To plot lines graph: 23 20. To plot horizontal bars graph: 24 21. To plot line graph for specific teams: 25 22. To plot line graph for specific batsman: 23. To plot bars graph for specific teams: 26 LIMITATIONS 1.Limited data:- The application only deals with data restricted to the details of the batsman and teams. Our study has limitations due to the sampling methods we employed; we were only able to collect data to a limited amount. Future research should continue examining the levels of different matches and types of players . 2. Execution across platforms: Unfortunately,the data is limited because most of the data is confidential. 3.Code requires rerunning:-Due to time constraints the 1 source code hasn't been developed to provide the user with option for returning to the main menu.Instead If the user wants to further perform the functions,they would need to execute the program again. 4.Error while searching using batsman name:-If the user wishes to search details using batsman name there is a possibility of repetition of names. Future Scope 1. Easy to modify the source code and data given. 2. Easy to update. 3. Easy to expand the data in future. CONCLUSION After careful analysis and capabilities of constraints of application,it can be concluded that it is a highly efficient Python Programme.While the programme has some limitations it is not a dire failure and can be easily worked upon.Thus one may conclude that the project “T20 BATTING ANALYSIS SYSTEM” is a success. 27 REFERENCES 1. https://drive.google.com/file/d/19v9ktGkVOelO tuaoREP6yDuZJO8eGjrp/view2 2. https://web.whatsapp.com/ 3. Arora,S 2021,Informatics Practices(XI),Dhanpatrai & co. (P)Ltd.,Delhi.\ 4. Arora,S 2022,Informatics Practices(XII),Dhanpatrai & co. (P)Ltd.,Delhi. 5. NCERT,Information Practices,Class XII 28