diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..dd04b7024 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +*.py linguist-language=python + +*.ipynb linguist-documentation diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..7c1c5b5bf --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,25 @@ +# Description + + + +## Type of issue + +- [ ] Feature (New Script) +- [ ] Bug +- [ ] Documentation + +## Checklist: + +- [ ] I have read the project guidelines. +- [ ] I have checked all the existing projects, before submitting a new project issue. +- [ ] I have checked previous issues to avoid duplicates. +- [ ] This issue will be meaningful for the project. + + + + + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..e40ea3125 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,27 @@ +# Description + +A short summary of what is included in your Pull Request. + +Fixes #(issue_no) + +Replace `issue_no` in the above line, with the issue related to this PR. + +## Type of change + +Choosing one or more options from the following as per the nature of your Pull request. + +- [ ] Bug fix (non-breaking change which fixes an issue) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Documentation Update + +# Checklist: +Please tick all the boxes that are fulfilled by your Pull Request. + +- [ ] I have named my files and folder, according to this project's guidelines. +- [ ] My code follows the style guidelines of this project. +- [ ] My Pull Request has a descriptive title. (not a vague title like `Update index.md`) +- [ ] I have commented on my code, particularly in hard-to-understand areas. +- [ ] I have created a helpful and easy to understand `README.md`, according to the given [`README_TEMPLATE.`](https://github.com/chavarera/python-mini-projects/blob/master/README_TEMPLATE.md) +- [ ] I have included a requirements.txt file (if external libraries are required.) +- [ ] My changes do not produce any warnings. +- [ ] I have added a working sample/screenshot of the script. diff --git a/.github/workflows/blank.yml b/.github/workflows/blank.yml new file mode 100644 index 000000000..f63e1cf1f --- /dev/null +++ b/.github/workflows/blank.yml @@ -0,0 +1,34 @@ +# This is a basic workflow to help you get started with Actions + +name: CI + +# Controls when the action will run. Triggers the workflow on push or pull request +# events but only for the master branch +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + build: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + + # Runs a single command using the runners shell + - name: Run a one-line script + run: echo Hello, world! + + # Runs a set of commands using the runners shell + - name: Run a multi-line script + run: | + echo Add other actions to build, + echo test, and deploy your project. + diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml new file mode 100644 index 000000000..ce3cf01d6 --- /dev/null +++ b/.github/workflows/python-app.yml @@ -0,0 +1,34 @@ +# This workflow will install Python dependencies, run tests and lint with a single version of Python +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +name: Python application + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.8 + uses: actions/setup-python@v2 + with: + python-version: 3.8 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flake8 + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + diff --git a/Notebooks/Customer_loan_repayment_problem/datasets_137197_325031_test_Y3wMUE5_7gLdaTN.csv b/Notebooks/Customer_loan_repayment_problem/datasets_137197_325031_test_Y3wMUE5_7gLdaTN.csv new file mode 100644 index 000000000..a987cb2ce --- /dev/null +++ b/Notebooks/Customer_loan_repayment_problem/datasets_137197_325031_test_Y3wMUE5_7gLdaTN.csv @@ -0,0 +1,368 @@ +Loan_ID,Gender,Married,Dependents,Education,Self_Employed,ApplicantIncome,CoapplicantIncome,LoanAmount,Loan_Amount_Term,Credit_History,Property_Area +LP001015,Male,Yes,0,Graduate,No,5720,0,110,360,1,Urban +LP001022,Male,Yes,1,Graduate,No,3076,1500,126,360,1,Urban +LP001031,Male,Yes,2,Graduate,No,5000,1800,208,360,1,Urban +LP001035,Male,Yes,2,Graduate,No,2340,2546,100,360,,Urban +LP001051,Male,No,0,Not Graduate,No,3276,0,78,360,1,Urban +LP001054,Male,Yes,0,Not Graduate,Yes,2165,3422,152,360,1,Urban +LP001055,Female,No,1,Not Graduate,No,2226,0,59,360,1,Semiurban +LP001056,Male,Yes,2,Not Graduate,No,3881,0,147,360,0,Rural +LP001059,Male,Yes,2,Graduate,,13633,0,280,240,1,Urban +LP001067,Male,No,0,Not Graduate,No,2400,2400,123,360,1,Semiurban +LP001078,Male,No,0,Not Graduate,No,3091,0,90,360,1,Urban +LP001082,Male,Yes,1,Graduate,,2185,1516,162,360,1,Semiurban +LP001083,Male,No,3+,Graduate,No,4166,0,40,180,,Urban +LP001094,Male,Yes,2,Graduate,,12173,0,166,360,0,Semiurban +LP001096,Female,No,0,Graduate,No,4666,0,124,360,1,Semiurban +LP001099,Male,No,1,Graduate,No,5667,0,131,360,1,Urban +LP001105,Male,Yes,2,Graduate,No,4583,2916,200,360,1,Urban +LP001107,Male,Yes,3+,Graduate,No,3786,333,126,360,1,Semiurban +LP001108,Male,Yes,0,Graduate,No,9226,7916,300,360,1,Urban +LP001115,Male,No,0,Graduate,No,1300,3470,100,180,1,Semiurban +LP001121,Male,Yes,1,Not Graduate,No,1888,1620,48,360,1,Urban +LP001124,Female,No,3+,Not Graduate,No,2083,0,28,180,1,Urban +LP001128,,No,0,Graduate,No,3909,0,101,360,1,Urban +LP001135,Female,No,0,Not Graduate,No,3765,0,125,360,1,Urban +LP001149,Male,Yes,0,Graduate,No,5400,4380,290,360,1,Urban +LP001153,Male,No,0,Graduate,No,0,24000,148,360,0,Rural +LP001163,Male,Yes,2,Graduate,No,4363,1250,140,360,,Urban +LP001169,Male,Yes,0,Graduate,No,7500,3750,275,360,1,Urban +LP001174,Male,Yes,0,Graduate,No,3772,833,57,360,,Semiurban +LP001176,Male,No,0,Graduate,No,2942,2382,125,180,1,Urban +LP001177,Female,No,0,Not Graduate,No,2478,0,75,360,1,Semiurban +LP001183,Male,Yes,2,Graduate,No,6250,820,192,360,1,Urban +LP001185,Male,No,0,Graduate,No,3268,1683,152,360,1,Semiurban +LP001187,Male,Yes,0,Graduate,No,2783,2708,158,360,1,Urban +LP001190,Male,Yes,0,Graduate,No,2740,1541,101,360,1,Urban +LP001203,Male,No,0,Graduate,No,3150,0,176,360,0,Semiurban +LP001208,Male,Yes,2,Graduate,,7350,4029,185,180,1,Urban +LP001210,Male,Yes,0,Graduate,Yes,2267,2792,90,360,1,Urban +LP001211,Male,No,0,Graduate,Yes,5833,0,116,360,1,Urban +LP001219,Male,No,0,Graduate,No,3643,1963,138,360,1,Urban +LP001220,Male,Yes,0,Graduate,No,5629,818,100,360,1,Urban +LP001221,Female,No,0,Graduate,No,3644,0,110,360,1,Urban +LP001226,Male,Yes,0,Not Graduate,No,1750,2024,90,360,1,Semiurban +LP001230,Male,No,0,Graduate,No,6500,2600,200,360,1,Semiurban +LP001231,Female,No,0,Graduate,No,3666,0,84,360,1,Urban +LP001232,Male,Yes,0,Graduate,No,4260,3900,185,,,Urban +LP001237,Male,Yes,,Not Graduate,No,4163,1475,162,360,1,Urban +LP001242,Male,No,0,Not Graduate,No,2356,1902,108,360,1,Semiurban +LP001268,Male,No,0,Graduate,No,6792,3338,187,,1,Urban +LP001270,Male,Yes,3+,Not Graduate,Yes,8000,250,187,360,1,Semiurban +LP001284,Male,Yes,1,Graduate,No,2419,1707,124,360,1,Urban +LP001287,,Yes,3+,Not Graduate,No,3500,833,120,360,1,Semiurban +LP001291,Male,Yes,1,Graduate,No,3500,3077,160,360,1,Semiurban +LP001298,Male,Yes,2,Graduate,No,4116,1000,30,180,1,Urban +LP001312,Male,Yes,0,Not Graduate,Yes,5293,0,92,360,1,Urban +LP001313,Male,No,0,Graduate,No,2750,0,130,360,0,Urban +LP001317,Female,No,0,Not Graduate,No,4402,0,130,360,1,Rural +LP001321,Male,Yes,2,Graduate,No,3613,3539,134,180,1,Semiurban +LP001323,Female,Yes,2,Graduate,No,2779,3664,176,360,0,Semiurban +LP001324,Male,Yes,3+,Graduate,No,4720,0,90,180,1,Semiurban +LP001332,Male,Yes,0,Not Graduate,No,2415,1721,110,360,1,Semiurban +LP001335,Male,Yes,0,Graduate,Yes,7016,292,125,360,1,Urban +LP001338,Female,No,2,Graduate,No,4968,0,189,360,1,Semiurban +LP001347,Female,No,0,Graduate,No,2101,1500,108,360,0,Rural +LP001348,Male,Yes,3+,Not Graduate,No,4490,0,125,360,1,Urban +LP001351,Male,Yes,0,Graduate,No,2917,3583,138,360,1,Semiurban +LP001352,Male,Yes,0,Not Graduate,No,4700,0,135,360,0,Semiurban +LP001358,Male,Yes,0,Graduate,No,3445,0,130,360,0,Semiurban +LP001359,Male,Yes,0,Graduate,No,7666,0,187,360,1,Semiurban +LP001361,Male,Yes,0,Graduate,No,2458,5105,188,360,0,Rural +LP001366,Female,No,,Graduate,No,3250,0,95,360,1,Semiurban +LP001368,Male,No,0,Graduate,No,4463,0,65,360,1,Semiurban +LP001375,Male,Yes,1,Graduate,,4083,1775,139,60,1,Urban +LP001380,Male,Yes,0,Graduate,Yes,3900,2094,232,360,1,Rural +LP001386,Male,Yes,0,Not Graduate,No,4750,3583,144,360,1,Semiurban +LP001400,Male,No,0,Graduate,No,3583,3435,155,360,1,Urban +LP001407,Male,Yes,0,Graduate,No,3189,2367,186,360,1,Urban +LP001413,Male,No,0,Graduate,Yes,6356,0,50,360,1,Rural +LP001415,Male,Yes,1,Graduate,No,3413,4053,,360,1,Semiurban +LP001419,Female,Yes,0,Graduate,No,7950,0,185,360,1,Urban +LP001420,Male,Yes,3+,Graduate,No,3829,1103,163,360,0,Urban +LP001428,Male,Yes,3+,Graduate,No,72529,0,360,360,1,Urban +LP001445,Male,Yes,2,Not Graduate,No,4136,0,149,480,0,Rural +LP001446,Male,Yes,0,Graduate,No,8449,0,257,360,1,Rural +LP001450,Male,Yes,0,Graduate,No,4456,0,131,180,0,Semiurban +LP001452,Male,Yes,2,Graduate,No,4635,8000,102,180,1,Rural +LP001455,Male,Yes,0,Graduate,No,3571,1917,135,360,1,Urban +LP001466,Male,No,0,Graduate,No,3066,0,95,360,1,Semiurban +LP001471,Male,No,2,Not Graduate,No,3235,2015,77,360,1,Semiurban +LP001472,Female,No,0,Graduate,,5058,0,200,360,1,Rural +LP001475,Male,Yes,0,Graduate,Yes,3188,2286,130,360,,Rural +LP001483,Male,Yes,3+,Graduate,No,13518,0,390,360,1,Rural +LP001486,Male,Yes,1,Graduate,No,4364,2500,185,360,1,Semiurban +LP001490,Male,Yes,2,Not Graduate,No,4766,1646,100,360,1,Semiurban +LP001496,Male,Yes,1,Graduate,No,4609,2333,123,360,0,Semiurban +LP001499,Female,Yes,3+,Graduate,No,6260,0,110,360,1,Semiurban +LP001500,Male,Yes,1,Graduate,No,3333,4200,256,360,1,Urban +LP001501,Male,Yes,0,Graduate,No,3500,3250,140,360,1,Semiurban +LP001517,Male,Yes,3+,Graduate,No,9719,0,61,360,1,Urban +LP001527,Male,Yes,3+,Graduate,No,6835,0,188,360,,Semiurban +LP001534,Male,No,0,Graduate,No,4452,0,131,360,1,Rural +LP001542,Female,Yes,0,Graduate,No,2262,0,,480,0,Semiurban +LP001547,Male,Yes,1,Graduate,No,3901,0,116,360,1,Urban +LP001548,Male,Yes,2,Not Graduate,No,2687,0,50,180,1,Rural +LP001558,Male,No,0,Graduate,No,2243,2233,107,360,,Semiurban +LP001561,Female,Yes,0,Graduate,No,3417,1287,200,360,1,Semiurban +LP001563,,No,0,Graduate,No,1596,1760,119,360,0,Urban +LP001567,Male,Yes,3+,Graduate,No,4513,0,120,360,1,Rural +LP001568,Male,Yes,0,Graduate,No,4500,0,140,360,1,Semiurban +LP001573,Male,Yes,0,Not Graduate,No,4523,1350,165,360,1,Urban +LP001584,Female,No,0,Graduate,Yes,4742,0,108,360,1,Semiurban +LP001587,Male,Yes,,Graduate,No,4082,0,93,360,1,Semiurban +LP001589,Female,No,0,Graduate,No,3417,0,102,360,1,Urban +LP001591,Female,Yes,2,Graduate,No,2922,3396,122,360,1,Semiurban +LP001599,Male,Yes,0,Graduate,No,4167,4754,160,360,1,Rural +LP001601,Male,No,3+,Graduate,No,4243,4123,157,360,,Semiurban +LP001607,Female,No,0,Not Graduate,No,0,1760,180,360,1,Semiurban +LP001611,Male,Yes,1,Graduate,No,1516,2900,80,,0,Rural +LP001613,Female,No,0,Graduate,No,1762,2666,104,360,0,Urban +LP001622,Male,Yes,2,Graduate,No,724,3510,213,360,0,Rural +LP001627,Male,No,0,Graduate,No,3125,0,65,360,1,Urban +LP001650,Male,Yes,0,Graduate,No,2333,3803,146,360,1,Rural +LP001651,Male,Yes,3+,Graduate,No,3350,1560,135,360,1,Urban +LP001652,Male,No,0,Graduate,No,2500,6414,187,360,0,Rural +LP001655,Female,No,0,Graduate,No,12500,0,300,360,0,Urban +LP001660,Male,No,0,Graduate,No,4667,0,120,360,1,Semiurban +LP001662,Male,No,0,Graduate,No,6500,0,71,360,0,Urban +LP001663,Male,Yes,2,Graduate,No,7500,0,225,360,1,Urban +LP001667,Male,No,0,Graduate,No,3073,0,70,180,1,Urban +LP001695,Male,Yes,1,Not Graduate,No,3321,2088,70,,1,Semiurban +LP001703,Male,Yes,0,Graduate,No,3333,1270,124,360,1,Urban +LP001718,Male,No,0,Graduate,No,3391,0,132,360,1,Rural +LP001728,Male,Yes,1,Graduate,Yes,3343,1517,105,360,1,Rural +LP001735,Female,No,1,Graduate,No,3620,0,90,360,1,Urban +LP001737,Male,No,0,Graduate,No,4000,0,83,84,1,Urban +LP001739,Male,Yes,0,Graduate,No,4258,0,125,360,1,Urban +LP001742,Male,Yes,2,Graduate,No,4500,0,147,360,1,Rural +LP001757,Male,Yes,1,Graduate,No,2014,2925,120,360,1,Rural +LP001769,,No,,Graduate,No,3333,1250,110,360,1,Semiurban +LP001771,Female,No,3+,Graduate,No,4083,0,103,360,,Semiurban +LP001785,Male,No,0,Graduate,No,4727,0,150,360,0,Rural +LP001787,Male,Yes,3+,Graduate,No,3089,2999,100,240,1,Rural +LP001789,Male,Yes,3+,Not Graduate,,6794,528,139,360,0,Urban +LP001791,Male,Yes,0,Graduate,Yes,32000,0,550,360,,Semiurban +LP001794,Male,Yes,2,Graduate,Yes,10890,0,260,12,1,Rural +LP001797,Female,No,0,Graduate,No,12941,0,150,300,1,Urban +LP001815,Male,No,0,Not Graduate,No,3276,0,90,360,1,Semiurban +LP001817,Male,No,0,Not Graduate,Yes,8703,0,199,360,0,Rural +LP001818,Male,Yes,1,Graduate,No,4742,717,139,360,1,Semiurban +LP001822,Male,No,0,Graduate,No,5900,0,150,360,1,Urban +LP001827,Male,No,0,Graduate,No,3071,4309,180,360,1,Urban +LP001831,Male,Yes,0,Graduate,No,2783,1456,113,360,1,Urban +LP001842,Male,No,0,Graduate,No,5000,0,148,360,1,Rural +LP001853,Male,Yes,1,Not Graduate,No,2463,2360,117,360,0,Urban +LP001855,Male,Yes,2,Graduate,No,4855,0,72,360,1,Rural +LP001857,Male,No,0,Not Graduate,Yes,1599,2474,125,300,1,Semiurban +LP001862,Male,Yes,2,Graduate,Yes,4246,4246,214,360,1,Urban +LP001867,Male,Yes,0,Graduate,No,4333,2291,133,350,1,Rural +LP001878,Male,No,1,Graduate,No,5823,2529,187,360,1,Semiurban +LP001881,Male,Yes,0,Not Graduate,No,7895,0,143,360,1,Rural +LP001886,Male,No,0,Graduate,No,4150,4256,209,360,1,Rural +LP001906,Male,No,0,Graduate,,2964,0,84,360,0,Semiurban +LP001909,Male,No,0,Graduate,No,5583,0,116,360,1,Urban +LP001911,Female,No,0,Graduate,No,2708,0,65,360,1,Rural +LP001921,Male,No,1,Graduate,No,3180,2370,80,240,,Rural +LP001923,Male,No,0,Not Graduate,No,2268,0,170,360,0,Semiurban +LP001933,Male,No,2,Not Graduate,No,1141,2017,120,360,0,Urban +LP001943,Male,Yes,0,Graduate,No,3042,3167,135,360,1,Urban +LP001950,Female,Yes,3+,Graduate,,1750,2935,94,360,0,Semiurban +LP001959,Female,Yes,1,Graduate,No,3564,0,79,360,1,Rural +LP001961,Female,No,0,Graduate,No,3958,0,110,360,1,Rural +LP001973,Male,Yes,2,Not Graduate,No,4483,0,130,360,1,Rural +LP001975,Male,Yes,0,Graduate,No,5225,0,143,360,1,Rural +LP001979,Male,No,0,Graduate,No,3017,2845,159,180,0,Urban +LP001995,Male,Yes,0,Not Graduate,No,2431,1820,110,360,0,Rural +LP001999,Male,Yes,2,Graduate,,4912,4614,160,360,1,Rural +LP002007,Male,Yes,2,Not Graduate,No,2500,3333,131,360,1,Urban +LP002009,Female,No,0,Graduate,No,2918,0,65,360,,Rural +LP002016,Male,Yes,2,Graduate,No,5128,0,143,360,1,Rural +LP002017,Male,Yes,3+,Graduate,No,15312,0,187,360,,Urban +LP002018,Male,Yes,2,Graduate,No,3958,2632,160,360,1,Semiurban +LP002027,Male,Yes,0,Graduate,No,4334,2945,165,360,1,Semiurban +LP002028,Male,Yes,2,Graduate,No,4358,0,110,360,1,Urban +LP002042,Female,Yes,1,Graduate,No,4000,3917,173,360,1,Rural +LP002045,Male,Yes,3+,Graduate,No,10166,750,150,,1,Urban +LP002046,Male,Yes,0,Not Graduate,No,4483,0,135,360,,Semiurban +LP002047,Male,Yes,2,Not Graduate,No,4521,1184,150,360,1,Semiurban +LP002056,Male,Yes,2,Graduate,No,9167,0,235,360,1,Semiurban +LP002057,Male,Yes,0,Not Graduate,No,13083,0,,360,1,Rural +LP002059,Male,Yes,2,Graduate,No,7874,3967,336,360,1,Rural +LP002062,Female,Yes,1,Graduate,No,4333,0,132,84,1,Rural +LP002064,Male,No,0,Graduate,No,4083,0,96,360,1,Urban +LP002069,Male,Yes,2,Not Graduate,,3785,2912,180,360,0,Rural +LP002070,Male,Yes,3+,Not Graduate,No,2654,1998,128,360,0,Rural +LP002077,Male,Yes,1,Graduate,No,10000,2690,412,360,1,Semiurban +LP002083,Male,No,0,Graduate,Yes,5833,0,116,360,1,Urban +LP002090,Male,Yes,1,Graduate,No,4796,0,114,360,0,Semiurban +LP002096,Male,Yes,0,Not Graduate,No,2000,1600,115,360,1,Rural +LP002099,Male,Yes,2,Graduate,No,2540,700,104,360,0,Urban +LP002102,Male,Yes,0,Graduate,Yes,1900,1442,88,360,1,Rural +LP002105,Male,Yes,0,Graduate,Yes,8706,0,108,480,1,Rural +LP002107,Male,Yes,3+,Not Graduate,No,2855,542,90,360,1,Urban +LP002111,Male,Yes,,Graduate,No,3016,1300,100,360,,Urban +LP002117,Female,Yes,0,Graduate,No,3159,2374,108,360,1,Semiurban +LP002118,Female,No,0,Graduate,No,1937,1152,78,360,1,Semiurban +LP002123,Male,Yes,0,Graduate,No,2613,2417,123,360,1,Semiurban +LP002125,Male,Yes,1,Graduate,No,4960,2600,187,360,1,Semiurban +LP002148,Male,Yes,1,Graduate,No,3074,1083,146,360,1,Semiurban +LP002152,Female,No,0,Graduate,No,4213,0,80,360,1,Urban +LP002165,,No,1,Not Graduate,No,2038,4027,100,360,1,Rural +LP002167,Female,No,0,Graduate,No,2362,0,55,360,1,Urban +LP002168,Male,No,0,Graduate,No,5333,2400,200,360,0,Rural +LP002172,Male,Yes,3+,Graduate,Yes,5384,0,150,360,1,Semiurban +LP002176,Male,No,0,Graduate,No,5708,0,150,360,1,Rural +LP002183,Male,Yes,0,Not Graduate,No,3754,3719,118,,1,Rural +LP002184,Male,Yes,0,Not Graduate,No,2914,2130,150,300,1,Urban +LP002186,Male,Yes,0,Not Graduate,No,2747,2458,118,36,1,Semiurban +LP002192,Male,Yes,0,Graduate,No,7830,2183,212,360,1,Rural +LP002195,Male,Yes,1,Graduate,Yes,3507,3148,212,360,1,Rural +LP002208,Male,Yes,1,Graduate,No,3747,2139,125,360,1,Urban +LP002212,Male,Yes,0,Graduate,No,2166,2166,108,360,,Urban +LP002240,Male,Yes,0,Not Graduate,No,3500,2168,149,360,1,Rural +LP002245,Male,Yes,2,Not Graduate,No,2896,0,80,480,1,Urban +LP002253,Female,No,1,Graduate,No,5062,0,152,300,1,Rural +LP002256,Female,No,2,Graduate,Yes,5184,0,187,360,0,Semiurban +LP002257,Female,No,0,Graduate,No,2545,0,74,360,1,Urban +LP002264,Male,Yes,0,Graduate,No,2553,1768,102,360,1,Urban +LP002270,Male,Yes,1,Graduate,No,3436,3809,100,360,1,Rural +LP002279,Male,No,0,Graduate,No,2412,2755,130,360,1,Rural +LP002286,Male,Yes,3+,Not Graduate,No,5180,0,125,360,0,Urban +LP002294,Male,No,0,Graduate,No,14911,14507,130,360,1,Semiurban +LP002298,,No,0,Graduate,Yes,2860,2988,138,360,1,Urban +LP002306,Male,Yes,0,Graduate,No,1173,1594,28,180,1,Rural +LP002310,Female,No,1,Graduate,No,7600,0,92,360,1,Semiurban +LP002311,Female,Yes,0,Graduate,No,2157,1788,104,360,1,Urban +LP002316,Male,No,0,Graduate,No,2231,2774,176,360,0,Urban +LP002321,Female,No,0,Graduate,No,2274,5211,117,360,0,Semiurban +LP002325,Male,Yes,2,Not Graduate,No,6166,13983,102,360,1,Rural +LP002326,Male,Yes,2,Not Graduate,No,2513,1110,107,360,1,Semiurban +LP002329,Male,No,0,Graduate,No,4333,0,66,480,1,Urban +LP002333,Male,No,0,Not Graduate,No,3844,0,105,360,1,Urban +LP002339,Male,Yes,0,Graduate,No,3887,1517,105,360,0,Semiurban +LP002344,Male,Yes,0,Graduate,No,3510,828,105,360,1,Semiurban +LP002346,Male,Yes,0,Graduate,,2539,1704,125,360,0,Rural +LP002354,Female,No,0,Not Graduate,No,2107,0,64,360,1,Semiurban +LP002355,,Yes,0,Graduate,No,3186,3145,150,180,0,Semiurban +LP002358,Male,Yes,2,Graduate,Yes,5000,2166,150,360,1,Urban +LP002360,Male,Yes,,Graduate,No,10000,0,,360,1,Urban +LP002375,Male,Yes,0,Not Graduate,Yes,3943,0,64,360,1,Semiurban +LP002376,Male,No,0,Graduate,No,2925,0,40,180,1,Rural +LP002383,Male,Yes,3+,Graduate,No,3242,437,142,480,0,Urban +LP002385,Male,Yes,,Graduate,No,3863,0,70,300,1,Semiurban +LP002389,Female,No,1,Graduate,No,4028,0,131,360,1,Semiurban +LP002394,Male,Yes,2,Graduate,No,4010,1025,120,360,1,Urban +LP002397,Female,Yes,1,Graduate,No,3719,1585,114,360,1,Urban +LP002399,Male,No,0,Graduate,,2858,0,123,360,0,Rural +LP002400,Female,Yes,0,Graduate,No,3833,0,92,360,1,Rural +LP002402,Male,Yes,0,Graduate,No,3333,4288,160,360,1,Urban +LP002412,Male,Yes,0,Graduate,No,3007,3725,151,360,1,Rural +LP002415,Female,No,1,Graduate,,1850,4583,81,360,,Rural +LP002417,Male,Yes,3+,Not Graduate,No,2792,2619,171,360,1,Semiurban +LP002420,Male,Yes,0,Graduate,No,2982,1550,110,360,1,Semiurban +LP002425,Male,No,0,Graduate,No,3417,738,100,360,,Rural +LP002433,Male,Yes,1,Graduate,No,18840,0,234,360,1,Rural +LP002440,Male,Yes,2,Graduate,No,2995,1120,184,360,1,Rural +LP002441,Male,No,,Graduate,No,3579,3308,138,360,,Semiurban +LP002442,Female,Yes,1,Not Graduate,No,3835,1400,112,480,0,Urban +LP002445,Female,No,1,Not Graduate,No,3854,3575,117,360,1,Rural +LP002450,Male,Yes,2,Graduate,No,5833,750,49,360,0,Rural +LP002471,Male,No,0,Graduate,No,3508,0,99,360,1,Rural +LP002476,Female,Yes,3+,Not Graduate,No,1635,2444,99,360,1,Urban +LP002482,Female,No,0,Graduate,Yes,3333,3916,212,360,1,Rural +LP002485,Male,No,1,Graduate,No,24797,0,240,360,1,Semiurban +LP002495,Male,Yes,2,Graduate,No,5667,440,130,360,0,Semiurban +LP002496,Female,No,0,Graduate,No,3500,0,94,360,0,Semiurban +LP002523,Male,Yes,3+,Graduate,No,2773,1497,108,360,1,Semiurban +LP002542,Male,Yes,0,Graduate,,6500,0,144,360,1,Urban +LP002550,Female,No,0,Graduate,No,5769,0,110,180,1,Semiurban +LP002551,Male,Yes,3+,Not Graduate,,3634,910,176,360,0,Semiurban +LP002553,,No,0,Graduate,No,29167,0,185,360,1,Semiurban +LP002554,Male,No,0,Graduate,No,2166,2057,122,360,1,Semiurban +LP002561,Male,Yes,0,Graduate,No,5000,0,126,360,1,Rural +LP002566,Female,No,0,Graduate,No,5530,0,135,360,,Urban +LP002568,Male,No,0,Not Graduate,No,9000,0,122,360,1,Rural +LP002570,Female,Yes,2,Graduate,No,10000,11666,460,360,1,Urban +LP002572,Male,Yes,1,Graduate,,8750,0,297,360,1,Urban +LP002581,Male,Yes,0,Not Graduate,No,2157,2730,140,360,,Rural +LP002584,Male,No,0,Graduate,,1972,4347,106,360,1,Rural +LP002592,Male,No,0,Graduate,No,4983,0,141,360,1,Urban +LP002593,Male,Yes,1,Graduate,No,8333,4000,,360,1,Urban +LP002599,Male,Yes,0,Graduate,No,3667,2000,170,360,1,Semiurban +LP002604,Male,Yes,2,Graduate,No,3166,2833,145,360,1,Urban +LP002605,Male,No,0,Not Graduate,No,3271,0,90,360,1,Rural +LP002609,Female,Yes,0,Graduate,No,2241,2000,88,360,0,Urban +LP002610,Male,Yes,1,Not Graduate,,1792,2565,128,360,1,Urban +LP002612,Female,Yes,0,Graduate,No,2666,0,84,480,1,Semiurban +LP002614,,No,0,Graduate,No,6478,0,108,360,1,Semiurban +LP002630,Male,No,0,Not Graduate,,3808,0,83,360,1,Rural +LP002635,Female,Yes,2,Not Graduate,No,3729,0,117,360,1,Semiurban +LP002639,Male,Yes,2,Graduate,No,4120,0,128,360,1,Rural +LP002644,Male,Yes,1,Graduate,Yes,7500,0,75,360,1,Urban +LP002651,Male,Yes,1,Graduate,,6300,0,125,360,0,Urban +LP002654,Female,No,,Graduate,Yes,14987,0,177,360,1,Rural +LP002657,,Yes,1,Not Graduate,Yes,570,2125,68,360,1,Rural +LP002711,Male,Yes,0,Graduate,No,2600,700,96,360,1,Semiurban +LP002712,Male,No,2,Not Graduate,No,2733,1083,180,360,,Semiurban +LP002721,Male,Yes,2,Graduate,Yes,7500,0,183,360,1,Rural +LP002735,Male,Yes,2,Not Graduate,No,3859,0,121,360,1,Rural +LP002744,Male,Yes,1,Graduate,No,6825,0,162,360,1,Rural +LP002745,Male,Yes,0,Graduate,No,3708,4700,132,360,1,Semiurban +LP002746,Male,No,0,Graduate,No,5314,0,147,360,1,Urban +LP002747,Female,No,3+,Graduate,No,2366,5272,153,360,0,Rural +LP002754,Male,No,,Graduate,No,2066,2108,104,84,1,Urban +LP002759,Male,Yes,2,Graduate,No,5000,0,149,360,1,Rural +LP002760,Female,No,0,Graduate,No,3767,0,134,300,1,Urban +LP002766,Female,Yes,0,Graduate,No,7859,879,165,180,1,Semiurban +LP002769,Female,Yes,0,Graduate,No,4283,0,120,360,1,Rural +LP002774,Male,Yes,0,Not Graduate,No,1700,2900,67,360,0,Urban +LP002775,,No,0,Not Graduate,No,4768,0,125,360,1,Rural +LP002781,Male,No,0,Graduate,No,3083,2738,120,360,1,Urban +LP002782,Male,Yes,1,Graduate,No,2667,1542,148,360,1,Rural +LP002786,Female,Yes,0,Not Graduate,No,1647,1762,181,360,1,Urban +LP002790,Male,Yes,3+,Graduate,No,3400,0,80,120,1,Urban +LP002791,Male,No,1,Graduate,,16000,5000,40,360,1,Semiurban +LP002793,Male,Yes,0,Graduate,No,5333,0,90,360,1,Rural +LP002802,Male,No,0,Graduate,No,2875,2416,95,6,0,Semiurban +LP002803,Male,Yes,1,Not Graduate,,2600,618,122,360,1,Semiurban +LP002805,Male,Yes,2,Graduate,No,5041,700,150,360,1,Urban +LP002806,Male,Yes,3+,Graduate,Yes,6958,1411,150,360,1,Rural +LP002816,Male,Yes,1,Graduate,No,3500,1658,104,360,,Semiurban +LP002823,Male,Yes,0,Graduate,No,5509,0,143,360,1,Rural +LP002825,Male,Yes,3+,Graduate,No,9699,0,300,360,1,Urban +LP002826,Female,Yes,1,Not Graduate,No,3621,2717,171,360,1,Urban +LP002843,Female,Yes,0,Graduate,No,4709,0,113,360,1,Semiurban +LP002849,Male,Yes,0,Graduate,No,1516,1951,35,360,1,Semiurban +LP002850,Male,No,2,Graduate,No,2400,0,46,360,1,Urban +LP002853,Female,No,0,Not Graduate,No,3015,2000,145,360,,Urban +LP002856,Male,Yes,0,Graduate,No,2292,1558,119,360,1,Urban +LP002857,Male,Yes,1,Graduate,Yes,2360,3355,87,240,1,Rural +LP002858,Female,No,0,Graduate,No,4333,2333,162,360,0,Rural +LP002860,Male,Yes,0,Graduate,Yes,2623,4831,122,180,1,Semiurban +LP002867,Male,No,0,Graduate,Yes,3972,4275,187,360,1,Rural +LP002869,Male,Yes,3+,Not Graduate,No,3522,0,81,180,1,Rural +LP002870,Male,Yes,1,Graduate,No,4700,0,80,360,1,Urban +LP002876,Male,No,0,Graduate,No,6858,0,176,360,1,Rural +LP002878,Male,Yes,3+,Graduate,No,8334,0,260,360,1,Urban +LP002879,Male,Yes,0,Graduate,No,3391,1966,133,360,0,Rural +LP002885,Male,No,0,Not Graduate,No,2868,0,70,360,1,Urban +LP002890,Male,Yes,2,Not Graduate,No,3418,1380,135,360,1,Urban +LP002891,Male,Yes,0,Graduate,Yes,2500,296,137,300,1,Rural +LP002899,Male,Yes,2,Graduate,No,8667,0,254,360,1,Rural +LP002901,Male,No,0,Graduate,No,2283,15000,106,360,,Rural +LP002907,Male,Yes,0,Graduate,No,5817,910,109,360,1,Urban +LP002920,Male,Yes,0,Graduate,No,5119,3769,120,360,1,Rural +LP002921,Male,Yes,3+,Not Graduate,No,5316,187,158,180,0,Semiurban +LP002932,Male,Yes,3+,Graduate,No,7603,1213,197,360,1,Urban +LP002935,Male,Yes,1,Graduate,No,3791,1936,85,360,1,Urban +LP002952,Male,No,0,Graduate,No,2500,0,60,360,1,Urban +LP002954,Male,Yes,2,Not Graduate,No,3132,0,76,360,,Rural +LP002962,Male,No,0,Graduate,No,4000,2667,152,360,1,Semiurban +LP002965,Female,Yes,0,Graduate,No,8550,4255,96,360,,Urban +LP002969,Male,Yes,1,Graduate,No,2269,2167,99,360,1,Semiurban +LP002971,Male,Yes,3+,Not Graduate,Yes,4009,1777,113,360,1,Urban +LP002975,Male,Yes,0,Graduate,No,4158,709,115,360,1,Urban +LP002980,Male,No,0,Graduate,No,3250,1993,126,360,,Semiurban +LP002986,Male,Yes,0,Graduate,No,5000,2393,158,360,1,Rural +LP002989,Male,No,0,Graduate,Yes,9200,0,98,180,1,Rural diff --git a/Notebooks/Customer_loan_repayment_problem/loan-prediction-problem.ipynb b/Notebooks/Customer_loan_repayment_problem/loan-prediction-problem.ipynb new file mode 100644 index 000000000..e326e1914 --- /dev/null +++ b/Notebooks/Customer_loan_repayment_problem/loan-prediction-problem.ipynb @@ -0,0 +1,3632 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "execution_count": null, + "metadata": { + "papermill": { + "duration": 0.021928, + "end_time": "2020-09-08T03:15:55.361283", + "exception": false, + "start_time": "2020-09-08T03:15:55.339355", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "# Predicting Loan Repayment\n", + "\n", + "\n", + "The dataset for this project is retrieved from kaggle, the home of Data Science.\n", + "\n", + "The major aim of this project is to predict whether the customers will have their loan paid or not. Therefore, this is a supervised classification problem to be trained." + ] + }, + { + "cell_type": "markdown", + "execution_count": null, + "metadata": { + "papermill": { + "duration": 0.02001, + "end_time": "2020-09-08T03:15:55.401984", + "exception": false, + "start_time": "2020-09-08T03:15:55.381974", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### **1- Importing Libraries**" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "execution": { + "iopub.execute_input": "2020-09-08T03:15:55.456123Z", + "iopub.status.busy": "2020-09-08T03:15:55.455295Z", + "iopub.status.idle": "2020-09-08T03:15:58.502367Z", + "shell.execute_reply": "2020-09-08T03:15:58.501676Z" + }, + "papermill": { + "duration": 3.080197, + "end_time": "2020-09-08T03:15:58.502515", + "exception": false, + "start_time": "2020-09-08T03:15:55.422318", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "%matplotlib inline\n", + "from sklearn.preprocessing import LabelEncoder\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.metrics import confusion_matrix, classification_report,accuracy_score\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.neighbors import KNeighborsClassifier\n", + "from sklearn.svm import SVC\n", + "from sklearn.model_selection import GridSearchCV\n", + "import plotly.express as px" + ] + }, + { + "cell_type": "markdown", + "execution_count": null, + "metadata": { + "papermill": { + "duration": 0.0203, + "end_time": "2020-09-08T03:15:58.543518", + "exception": false, + "start_time": "2020-09-08T03:15:58.523218", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### **2- Getting Data**" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "execution": { + "iopub.execute_input": "2020-09-08T03:15:58.596255Z", + "iopub.status.busy": "2020-09-08T03:15:58.594912Z", + "iopub.status.idle": "2020-09-08T03:15:58.615955Z", + "shell.execute_reply": "2020-09-08T03:15:58.616654Z" + }, + "papermill": { + "duration": 0.052871, + "end_time": "2020-09-08T03:15:58.616870", + "exception": false, + "start_time": "2020-09-08T03:15:58.563999", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "df=pd.read_csv('../input/loan-prediction-problem-dataset/train_u6lujuX_CVtuZ9i.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "execution": { + "iopub.execute_input": "2020-09-08T03:15:58.702993Z", + "iopub.status.busy": "2020-09-08T03:15:58.701710Z", + "iopub.status.idle": "2020-09-08T03:15:58.726499Z", + "shell.execute_reply": "2020-09-08T03:15:58.727470Z" + }, + "papermill": { + "duration": 0.08401, + "end_time": "2020-09-08T03:15:58.727718", + "exception": false, + "start_time": "2020-09-08T03:15:58.643708", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
| \n", + " | Loan_ID | \n", + "Gender | \n", + "Married | \n", + "Dependents | \n", + "Education | \n", + "Self_Employed | \n", + "ApplicantIncome | \n", + "CoapplicantIncome | \n", + "LoanAmount | \n", + "Loan_Amount_Term | \n", + "Credit_History | \n", + "Property_Area | \n", + "Loan_Status | \n", + "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", + "LP001002 | \n", + "Male | \n", + "No | \n", + "0 | \n", + "Graduate | \n", + "No | \n", + "5849 | \n", + "0.0 | \n", + "NaN | \n", + "360.0 | \n", + "1.0 | \n", + "Urban | \n", + "Y | \n", + "
| 1 | \n", + "LP001003 | \n", + "Male | \n", + "Yes | \n", + "1 | \n", + "Graduate | \n", + "No | \n", + "4583 | \n", + "1508.0 | \n", + "128.0 | \n", + "360.0 | \n", + "1.0 | \n", + "Rural | \n", + "N | \n", + "
| 2 | \n", + "LP001005 | \n", + "Male | \n", + "Yes | \n", + "0 | \n", + "Graduate | \n", + "Yes | \n", + "3000 | \n", + "0.0 | \n", + "66.0 | \n", + "360.0 | \n", + "1.0 | \n", + "Urban | \n", + "Y | \n", + "
| 3 | \n", + "LP001006 | \n", + "Male | \n", + "Yes | \n", + "0 | \n", + "Not Graduate | \n", + "No | \n", + "2583 | \n", + "2358.0 | \n", + "120.0 | \n", + "360.0 | \n", + "1.0 | \n", + "Urban | \n", + "Y | \n", + "
| 4 | \n", + "LP001008 | \n", + "Male | \n", + "No | \n", + "0 | \n", + "Graduate | \n", + "No | \n", + "6000 | \n", + "0.0 | \n", + "141.0 | \n", + "360.0 | \n", + "1.0 | \n", + "Urban | \n", + "Y | \n", + "
| \n", + " | loan_id | \n", + "gender | \n", + "married | \n", + "dependents | \n", + "education | \n", + "self_employed | \n", + "applicant_income | \n", + "co-applicant_income | \n", + "loan_amount | \n", + "loan_amount_term | \n", + "credit_history | \n", + "property_area | \n", + "loan_status | \n", + "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", + "LP001002 | \n", + "Male | \n", + "No | \n", + "0 | \n", + "Graduate | \n", + "No | \n", + "5849 | \n", + "0.0 | \n", + "146.412162 | \n", + "360.0 | \n", + "1.0 | \n", + "Urban | \n", + "Y | \n", + "
| 1 | \n", + "LP001003 | \n", + "Male | \n", + "Yes | \n", + "1 | \n", + "Graduate | \n", + "No | \n", + "4583 | \n", + "1508.0 | \n", + "128.000000 | \n", + "360.0 | \n", + "1.0 | \n", + "Rural | \n", + "N | \n", + "
| 2 | \n", + "LP001005 | \n", + "Male | \n", + "Yes | \n", + "0 | \n", + "Graduate | \n", + "Yes | \n", + "3000 | \n", + "0.0 | \n", + "66.000000 | \n", + "360.0 | \n", + "1.0 | \n", + "Urban | \n", + "Y | \n", + "
| 3 | \n", + "LP001006 | \n", + "Male | \n", + "Yes | \n", + "0 | \n", + "Not Graduate | \n", + "No | \n", + "2583 | \n", + "2358.0 | \n", + "120.000000 | \n", + "360.0 | \n", + "1.0 | \n", + "Urban | \n", + "Y | \n", + "
| 4 | \n", + "LP001008 | \n", + "Male | \n", + "No | \n", + "0 | \n", + "Graduate | \n", + "No | \n", + "6000 | \n", + "0.0 | \n", + "141.000000 | \n", + "360.0 | \n", + "1.0 | \n", + "Urban | \n", + "Y | \n", + "
| \n", + " | applicant_income | \n", + "co-applicant_income | \n", + "loan_amount | \n", + "loan_amount_term | \n", + "credit_history | \n", + "
|---|---|---|---|---|---|
| count | \n", + "542.000000 | \n", + "542.000000 | \n", + "542.000000 | \n", + "542.000000 | \n", + "542.000000 | \n", + "
| mean | \n", + "5291.911439 | \n", + "1590.699114 | \n", + "145.518139 | \n", + "341.955720 | \n", + "0.863469 | \n", + "
| std | \n", + "5506.461371 | \n", + "2543.801628 | \n", + "81.749385 | \n", + "65.441582 | \n", + "0.343669 | \n", + "
| min | \n", + "150.000000 | \n", + "0.000000 | \n", + "9.000000 | \n", + "12.000000 | \n", + "0.000000 | \n", + "
| 25% | \n", + "2843.750000 | \n", + "0.000000 | \n", + "100.000000 | \n", + "360.000000 | \n", + "1.000000 | \n", + "
| 50% | \n", + "3848.000000 | \n", + "1149.000000 | \n", + "129.500000 | \n", + "360.000000 | \n", + "1.000000 | \n", + "
| 75% | \n", + "5820.500000 | \n", + "2281.000000 | \n", + "167.750000 | \n", + "360.000000 | \n", + "1.000000 | \n", + "
| max | \n", + "81000.000000 | \n", + "33837.000000 | \n", + "650.000000 | \n", + "480.000000 | \n", + "1.000000 | \n", + "
| \n", + " | loan_id | \n", + "gender | \n", + "married | \n", + "dependents | \n", + "education | \n", + "self_employed | \n", + "applicant_income | \n", + "co-applicant_income | \n", + "loan_amount | \n", + "loan_amount_term | \n", + "credit_history | \n", + "property_area | \n", + "loan_status | \n", + "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", + "LP001002 | \n", + "1 | \n", + "0 | \n", + "0 | \n", + "0 | \n", + "0 | \n", + "5849 | \n", + "0.0 | \n", + "146.412162 | \n", + "360.0 | \n", + "1.0 | \n", + "2 | \n", + "1 | \n", + "
| 1 | \n", + "LP001003 | \n", + "1 | \n", + "1 | \n", + "1 | \n", + "0 | \n", + "0 | \n", + "4583 | \n", + "1508.0 | \n", + "128.000000 | \n", + "360.0 | \n", + "1.0 | \n", + "0 | \n", + "0 | \n", + "
| 2 | \n", + "LP001005 | \n", + "1 | \n", + "1 | \n", + "0 | \n", + "0 | \n", + "1 | \n", + "3000 | \n", + "0.0 | \n", + "66.000000 | \n", + "360.0 | \n", + "1.0 | \n", + "2 | \n", + "1 | \n", + "
| 3 | \n", + "LP001006 | \n", + "1 | \n", + "1 | \n", + "0 | \n", + "1 | \n", + "0 | \n", + "2583 | \n", + "2358.0 | \n", + "120.000000 | \n", + "360.0 | \n", + "1.0 | \n", + "2 | \n", + "1 | \n", + "
| 4 | \n", + "LP001008 | \n", + "1 | \n", + "0 | \n", + "0 | \n", + "0 | \n", + "0 | \n", + "6000 | \n", + "0.0 | \n", + "141.000000 | \n", + "360.0 | \n", + "1.0 | \n", + "2 | \n", + "1 | \n", + "
+- **Clone** your forked repository to your local machine. This button will show you the URL to run.
+
+
+ For example, run this command inside your terminal:
+
+ ```bash
+ git clone https://github.com/This project can be used for any shops. User can store all the data and generate the bill.
+ ++ Key Features • + Build • + Run • + Documentation • + Related • + License +
+ +## Key Features +* C++ SDK +* GStreamer Plugin (kvssink) +* JNI + +Amazon Kinesis Video Streams Producer SDK for C/C++ makes it easy to build an on-device application that securely connects to a video stream, and reliably publishes video and other media data to Kinesis Video Streams. It takes care of all the underlying tasks required to package the frames and fragments generated by the device's media pipeline. The SDK also hand +les stream creation, token rotation for secure and uninterrupted streaming, processing acknowledgements returned by Kinesis Video Streams, and other tasks. + +## Build +### Download +To download run the following command: + +`git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git` + +Note: You will also need to install `pkg-config`, `CMake`, `m4` and a build enviroment. If you are building the GStreamer plugin you will also need GStreamer and GStreamer (Development Libraries). + +Refer to the [FAQ](#FAQ) for platform specific instructions. + +### Configure + +Prepare a build directory in the newly checked out repository: + +``` +mkdir -p amazon-kinesis-video-streams-producer-sdk-cpp/build +cd amazon-kinesis-video-streams-producer-sdk-cpp/build +``` + +If you are building on Windows you need to generate `NMake Makefiles`, you should run `cmake .. -G "NMake Makefiles"` + +GStreamer and JNI is NOT built by default, if you wish to build both you MUST execute `cmake .. -DBUILD_GSTREAMER_PLUGIN=ON -DBUILD_JNI=TRUE` + +By default we download all the libraries from GitHub and build them locally, so should require nothing to be installed ahead of time. + +If you do wish to link to existing libraries you can do `cmake .. -DBUILD_DEPENDENCIES=OFF` +Libraries needed to build producer are: Curl, Openssl and Log4cplus. If you want to build the gstreamer plugin you will need to have gstreamer in your system. +On Mac OS you can get the libraries using homebrew +``` +$ brew install pkg-config openssl cmake gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly log4cplus gst-libav +``` +On Ubuntu and Raspberry Pi OS you can get the libraries by running +``` +$ sudo apt-get install libssl-dev libcurl4-openssl-dev liblog4cplus-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-bad gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-tools +``` + +#### Cross-Compilation +If you wish to cross-compile `CC` and `CXX` are respected when building the library and all its dependencies. See our [.travis.yml](.travis.yml) for an example of this. Every commit is cross compiled to ensure that it continues to work. + + +#### CMake Arguments +You can pass the following options to `cmake ..`. + +* `-DBUILD_GSTREAMER_PLUGIN` -- Build kvssink GStreamer plugin +* `-DBUILD_JNI` -- Build C++ wrapper for JNI to expose the functionality to Java/Android +* `-DBUILD_DEPENDENCIES` -- Build depending libraries from source +* `-DBUILD_TEST=TRUE` -- Build unit/integration tests, may be useful for confirm support for your device. `./tst/producerTest` +* `-DCODE_COVERAGE` -- Enable coverage reporting +* `-DCOMPILER_WARNINGS` -- Enable all compiler warnings +* `-DADDRESS_SANITIZER` -- Build with AddressSanitizer +* `-DMEMORY_SANITIZER` -- Build with MemorySanitizer +* `-DTHREAD_SANITIZER` -- Build with ThreadSanitizer +* `-DUNDEFINED_BEHAVIOR_SANITIZER` Build with UndefinedBehaviorSanitizer +* `-DALIGNED_MEMORY_MODEL` Build for aligned memory model only devices. Default is OFF. + +#### To Include JNI + +JNI examples are NOT built by default. If you wish to build JNI you MUST add -DBUILD_JNI=TRUE when running cmake: + +``` +cmake -DBUILD_JNI=TRUE +``` + +#### To Include Building GStreamer Sample Programs + +The GStreamer plugin and samples are NOT built by default. If you wish to build them you MUST add -DBUILD_GSTREAMER_PLUGIN=TRUE when running cmake: + +``` +cmake -DBUILD_GSTREAMER_PLUGIN=TRUE +``` + +### Compiling + +After running cmake, in the same build directior run make: + +``` +make +``` + +On Windows you should run `nmake` instead of `make` + +In your build directory you will now have shared objects for all the targets you have selected + +## Run +### GStreamer Plugin (kvssink) + +#### Loading Element +The GStreamer plugin is located in your `build` directory. + +To load this plugin set the following environment variables. This should be run from the root of the repo, NOT the `build` directory. + +``` +export GST_PLUGIN_PATH=`pwd`/build +export LD_LIBRARY_PATH=`pwd`/open-source/local/lib +``` + +The equivalent for Windows is + +``` +set GST_PLUGIN_PATH=%CD%\build +set PATH=%PATH%;%CD%\open-source\local\bin;%CD%\open-source\local\lib +``` + +Now if you execute `gst-inspect-1.0 kvssink` you should get information on the plugin like + +```text +Factory Details: + Rank primary + 10 (266) + Long-name KVS Sink + Klass Sink/Video/Network + Description GStreamer AWS KVS plugin + Author AWS KVS
+
+ ### Step2:
+
+ Click on Apply
+
+
+
+ ### Step3:
+
+ Based on your choice select the Reason for using twitter developer tools and Click on Next
+
+
+
+### Step4:
+
+Enter your country and what you would you call and Click on Next
+
+
+
+### Step5:
+
+Now Carefully read the questions and answer all the questions as per the requirement. Because based on you answer only the account approval will be taken place
+
+
+
+### Step6:
+
+If your account successfully approved you can come to homepage [Twitter developer account](https://developer.twitter.com/apps) and now click on Create an app icon on the right top.
+
+**Note:** sometimes it takes time to approval of the developer account based on step-5 answers
+
+
+
+### Step7:
+
+Fill the require fields and click on Create
+
+
+
+### Step8:
+
+After creating the App click on **Keys and tokens** option you will observe Consumer and Access token keys. Copy them and paste them in the python script
+
+
+
+## How to run the script
+
+1. Save the script in the local machine.
+
+2. Update the API and Access token Keys in the Python script which generated in step8
+
+3. Open a terminal/command prompt and change directory location to the folder where your script is located and run the below commands
+
+ 1. To install required packages run the below command
+
+ ```python
+ pip install -r requirements.txt
+ ```
+
+ 2. To execute the script run the following command
+
+ ```python
+ python fetch_store_tweet.py
+ ```
+
+ After successful execution of the script you should observe the below output in command prompt/terminal as well as one `.csv` file with the required number of tweets will be generated.
+
+
+
+ Final generated tweets in`.csv` file output
+
+
+
+## Author Name
+
+[Kushal Agrawal](https://github.com/kushal98)
diff --git a/projects/Fetch_and_store_tweets/fetch_store_tweet.py b/projects/Fetch_and_store_tweets/fetch_store_tweet.py
new file mode 100644
index 000000000..088792a32
--- /dev/null
+++ b/projects/Fetch_and_store_tweets/fetch_store_tweet.py
@@ -0,0 +1,24 @@
+import tweepy
+import csv
+
+# input your credentials here
+consumer_key = ''
+consumer_secret = ''
+access_token = ''
+access_token_secret = ''
+hastag = ''
+
+auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
+auth.set_access_token(access_token, access_token_secret)
+api = tweepy.API(auth,wait_on_rate_limit=True)
+
+# Open/Create a file to append data
+csvFile = open('tweets.csv', 'a')
+#Use csv Writer
+csvWriter = csv.writer(csvFile)
+
+for tweet in tweepy.Cursor(api.search,q=hastag,count=100,
+ lang="en",
+ since="2017-04-03").items():
+ print (tweet.created_at, tweet.text)
+ csvWriter.writerow([tweet.created_at, tweet.text.encode('utf-8')])
\ No newline at end of file
diff --git a/projects/Fetch_and_store_tweets/img/output-2.PNG b/projects/Fetch_and_store_tweets/img/output-2.PNG
new file mode 100644
index 000000000..f8328b787
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/output-2.PNG differ
diff --git a/projects/Fetch_and_store_tweets/img/output-2.png b/projects/Fetch_and_store_tweets/img/output-2.png
new file mode 100644
index 000000000..f8328b787
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/output-2.png differ
diff --git a/projects/Fetch_and_store_tweets/img/output.PNG b/projects/Fetch_and_store_tweets/img/output.PNG
new file mode 100644
index 000000000..682bcf235
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/output.PNG differ
diff --git a/projects/Fetch_and_store_tweets/img/output.png b/projects/Fetch_and_store_tweets/img/output.png
new file mode 100644
index 000000000..682bcf235
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/output.png differ
diff --git a/projects/Fetch_and_store_tweets/img/step-1.PNG b/projects/Fetch_and_store_tweets/img/step-1.PNG
new file mode 100644
index 000000000..a11cf5597
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/step-1.PNG differ
diff --git a/projects/Fetch_and_store_tweets/img/step-1.png b/projects/Fetch_and_store_tweets/img/step-1.png
new file mode 100644
index 000000000..a11cf5597
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/step-1.png differ
diff --git a/projects/Fetch_and_store_tweets/img/step-2.PNG b/projects/Fetch_and_store_tweets/img/step-2.PNG
new file mode 100644
index 000000000..d902378cd
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/step-2.PNG differ
diff --git a/projects/Fetch_and_store_tweets/img/step-2.png b/projects/Fetch_and_store_tweets/img/step-2.png
new file mode 100644
index 000000000..d902378cd
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/step-2.png differ
diff --git a/projects/Fetch_and_store_tweets/img/step-3.PNG b/projects/Fetch_and_store_tweets/img/step-3.PNG
new file mode 100644
index 000000000..532b31bb6
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/step-3.PNG differ
diff --git a/projects/Fetch_and_store_tweets/img/step-3.png b/projects/Fetch_and_store_tweets/img/step-3.png
new file mode 100644
index 000000000..532b31bb6
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/step-3.png differ
diff --git a/projects/Fetch_and_store_tweets/img/step-4.PNG b/projects/Fetch_and_store_tweets/img/step-4.PNG
new file mode 100644
index 000000000..31a95d33d
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/step-4.PNG differ
diff --git a/projects/Fetch_and_store_tweets/img/step-4.png b/projects/Fetch_and_store_tweets/img/step-4.png
new file mode 100644
index 000000000..31a95d33d
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/step-4.png differ
diff --git a/projects/Fetch_and_store_tweets/img/step-5.PNG b/projects/Fetch_and_store_tweets/img/step-5.PNG
new file mode 100644
index 000000000..c4436f9fb
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/step-5.PNG differ
diff --git a/projects/Fetch_and_store_tweets/img/step-5.png b/projects/Fetch_and_store_tweets/img/step-5.png
new file mode 100644
index 000000000..c4436f9fb
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/step-5.png differ
diff --git a/projects/Fetch_and_store_tweets/img/step-6.PNG b/projects/Fetch_and_store_tweets/img/step-6.PNG
new file mode 100644
index 000000000..ab5450a38
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/step-6.PNG differ
diff --git a/projects/Fetch_and_store_tweets/img/step-6.png b/projects/Fetch_and_store_tweets/img/step-6.png
new file mode 100644
index 000000000..ab5450a38
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/step-6.png differ
diff --git a/projects/Fetch_and_store_tweets/img/step-7.png b/projects/Fetch_and_store_tweets/img/step-7.png
new file mode 100644
index 000000000..3cc10c98d
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/step-7.png differ
diff --git a/projects/Fetch_and_store_tweets/img/step-9.png b/projects/Fetch_and_store_tweets/img/step-9.png
new file mode 100644
index 000000000..00e428943
Binary files /dev/null and b/projects/Fetch_and_store_tweets/img/step-9.png differ
diff --git a/projects/Fetch_and_store_tweets/requirements.txt b/projects/Fetch_and_store_tweets/requirements.txt
new file mode 100644
index 000000000..b7b86914c
--- /dev/null
+++ b/projects/Fetch_and_store_tweets/requirements.txt
@@ -0,0 +1 @@
+tweepy==3.9.0
diff --git a/projects/Fetch_current_weather/README.md b/projects/Fetch_current_weather/README.md
new file mode 100644
index 000000000..aaccc3606
--- /dev/null
+++ b/projects/Fetch_current_weather/README.md
@@ -0,0 +1,16 @@
+# Current Weather
+
+This Script will help you to find current weather of any entered place.
+This script is using openweathermap.org to find the current weather.
+
+# Requirement
+
+To run this script you need to have api key, to get an API key you first [signup here](https://home.openweathermap.org/api_keys)
+
+After getting the api key add in the code
+```
+api_key = "Your_API_Key"
+```
+
+# Result
+The output this script will generate
diff --git a/projects/Fetch_current_weather/fetch_current_weather.py b/projects/Fetch_current_weather/fetch_current_weather.py
new file mode 100644
index 000000000..606149c96
--- /dev/null
+++ b/projects/Fetch_current_weather/fetch_current_weather.py
@@ -0,0 +1,35 @@
+# Python program to find current weather details of any city using openweathermap api
+import requests
+
+# Enter your API key here
+api_key = "Your_API_Key"
+
+# base_url variable to store url
+base_url = "http://api.openweathermap.org/data/2.5/weather?"
+
+# Give city name
+city_name = input("Enter city name : ")
+
+complete_url = base_url + "appid=" + api_key + "&q=" + city_name
+response = requests.get(complete_url)
+x = response.json()
+
+if x["cod"] != "404":
+
+ y = x["main"]
+ current_temperature = y["temp"]
+ current_pressure = y["pressure"]
+ current_humidiy = y["humidity"]
+ z = x["weather"]
+ weather_description = z[0]["description"]
+ print(" Temperature (in kelvin unit) = " +
+ str(current_temperature) +
+ "\n atmospheric pressure (in hPa unit) = " +
+ str(current_pressure) +
+ "\n humidity (in percentage) = " +
+ str(current_humidiy) +
+ "\n description = " +
+ str(weather_description))
+
+else:
+ print(" City Not Found ")
\ No newline at end of file
diff --git a/projects/Fetch_open_ports/README.md b/projects/Fetch_open_ports/README.md
new file mode 100644
index 000000000..235b2140f
--- /dev/null
+++ b/projects/Fetch_open_ports/README.md
@@ -0,0 +1,30 @@
+# Fetch open port
+
+This script finds open port for web address.
+
+### Prerequisites
+
+No need for additional installations.
+
+### How to run the script
+
+1. Clone repo on your local machine and switch to script folder
+```
+ git clone https://github.com/chavarera/python-mini-projects.git
+ cd python-mini-projects/projects/Fetch_open_ports/
+```
+
+2. Run following command
+```
+ python3 fetch_open_port.py
+```
+
+3. Once script is running, you can write any website you want, and it will print all open ports in range 50-500.
+
+### Screenshot/GIF showing the sample use of the script
+
+
+
+## *Author Name*
+
+[Kushal Agrawal](https://github.com/kushal98)
diff --git a/projects/Fetch_open_ports/Screenshot.png b/projects/Fetch_open_ports/Screenshot.png
new file mode 100644
index 000000000..e0747a91a
Binary files /dev/null and b/projects/Fetch_open_ports/Screenshot.png differ
diff --git a/projects/Fetch_open_ports/fetch_open_port.py b/projects/Fetch_open_ports/fetch_open_port.py
new file mode 100644
index 000000000..51a7e0588
--- /dev/null
+++ b/projects/Fetch_open_ports/fetch_open_port.py
@@ -0,0 +1,17 @@
+from socket import *
+import time
+startTime = time.time()
+
+if __name__ == '__main__':
+ target = input('Enter the host to be scanned: ')
+ t_IP = gethostbyname(target)
+ print ('Starting scan on host: ', t_IP)
+
+ for i in range(50, 500):
+ s = socket(AF_INET, SOCK_STREAM)
+
+ conn = s.connect_ex((t_IP, i))
+ if(conn == 0) :
+ print ('Port %d: OPEN' % (i,))
+ s.close()
+print('Time taken:', time.time() - startTime)
\ No newline at end of file
diff --git a/projects/Find_imdb_rating/.gitignore b/projects/Find_imdb_rating/.gitignore
new file mode 100644
index 000000000..e43b0f988
--- /dev/null
+++ b/projects/Find_imdb_rating/.gitignore
@@ -0,0 +1 @@
+.DS_Store
diff --git a/projects/Find_imdb_rating/README.md b/projects/Find_imdb_rating/README.md
new file mode 100644
index 000000000..d991a0c8d
--- /dev/null
+++ b/projects/Find_imdb_rating/README.md
@@ -0,0 +1,33 @@
+# Find IMDB Ratings
+
+This script is used to fetch the Ratings and Genre of the films in your films folder that match with ones on IMDb, the data is scraped from IMDB's official website and store in a csv file. The csv file can be used for analysis then, sorting acc to rating etc.
+
+Input: -> Path of the directory which contains the films.
+
+Output: -> A new csv file is made - 'film_ratings.csv' which contains the ratings for the films in your directory.
+
+### Prerequisites
+
+This program uses and external dependency of 'BeautifulSoup' (for web scraping), 'requests' (for fetching content of the webpage), 'pandas' (to make the csv file), 'os' (to get data from directory).
diff --git a/projects/Instagram_profile/main.py b/projects/Instagram_profile/main.py
new file mode 100644
index 000000000..d39b4ee34
--- /dev/null
+++ b/projects/Instagram_profile/main.py
@@ -0,0 +1,62 @@
+import requests
+from lxml import html
+import re
+import sys
+import pprint
+from profilepic import pp_download
+
+def banner():
+ print('\t""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""')
+ print('\t InstgramProfile data graber ')
+ print('\t""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""')
+
+
+def main(username):
+ banner()
+ '''main function accept instagram username
+ return an dictionary object containging profile deatils
+ '''
+
+ url = "https://www.instagram.com/{}/?hl=en".format(username)
+ page = requests.get(url)
+ tree = html.fromstring(page.content)
+ data = tree.xpath('//meta[starts-with(@name,"description")]/@content')
+
+ if data:
+ data = tree.xpath('//meta[starts-with(@name,"description")]/@content')
+ data = data[0].split(', ')
+ followers = data[0][:-9].strip()
+ following = data[1][:-9].strip()
+ posts = re.findall(r'\d+[,]*', data[2])[0]
+ name = re.findall(r'name":"([^"]+)"', page.text)[0]
+ aboutinfo = re.findall(r'"description":"([^"]+)"', page.text)[0]
+ instagram_profile = {
+ 'success': True,
+ 'profile': {
+ 'name': name,
+ 'profileurl': url,
+ 'username': username,
+ 'followers': followers,
+ 'following': following,
+ 'posts': posts,
+ 'aboutinfo': aboutinfo
+ }
+ }
+ else:
+ instagram_profile = {
+ 'success': False,
+ 'profile': {}
+ }
+ return instagram_profile
+
+
+# python main.py username
+if __name__ == "__main__":
+
+ if len(sys.argv) == 2:
+ output = main(sys.argv[-1])
+ pp_download(sys.argv[-1])
+ pprint.pprint(output)
+
+ else:
+ print('Invalid paramaters Valid Command \n\tUsage : python main.py username')
diff --git a/projects/Instagram_profile/output.png b/projects/Instagram_profile/output.png
new file mode 100644
index 000000000..253e2e17b
Binary files /dev/null and b/projects/Instagram_profile/output.png differ
diff --git a/projects/Instagram_profile/profilepic.py b/projects/Instagram_profile/profilepic.py
new file mode 100644
index 000000000..b5061d9b4
--- /dev/null
+++ b/projects/Instagram_profile/profilepic.py
@@ -0,0 +1,59 @@
+from tqdm import tqdm
+import requests
+import re
+from PIL import Image
+
+
+#Function to download profile picture of instagram accounts
+def pp_download(username):
+
+ url = "https://www.instagram.com/{}/".format(username)
+ x = re.match(r'^(https:)[/][/]www.([^/]+[.])*instagram.com', url)
+
+ if x:
+ check_url1 = re.match(r'^(https:)[/][/]www.([^/]+[.])*instagram.com[/].*\?hl=[a-z-]{2,5}', url)
+ check_url2 = re.match(r'^(https:)[/][/]www.([^/]+[.])*instagram.com$|^(https:)[/][/]www.([^/]+[.])*instagram.com/$', url)
+ check_url3 = re.match(r'^(https:)[/][/]www.([^/]+[.])*instagram.com[/][a-zA-Z0-9_]{1,}$', url)
+ check_url4 = re.match(r'^(https:)[/][/]www.([^/]+[.])*instagram.com[/][a-zA-Z0-9_]{1,}[/]$', url)
+
+ if check_url3:
+ final_url = url + '/?__a=1'
+
+ if check_url4:
+ final_url = url + '?__a=1'
+
+ if check_url2:
+ final_url = print("Please enter an URL related to a profile")
+ exit()
+
+ if check_url1:
+ alpha = check_url1.group()
+ final_url = re.sub('\\?hl=[a-z-]{2,5}', '?__a=1', alpha)
+
+ try:
+ if check_url3 or check_url4 or check_url2 or check_url1:
+ req = requests.get(final_url)
+ get_status = requests.get(final_url).status_code
+ get_content = req.content.decode('utf-8')
+
+ if get_status == 200:
+ print("\nDownloading the image...")
+ find_pp = re.search(r'profile_pic_url_hd\":\"([^\'\" >]+)', get_content)
+ pp_link = find_pp.group()
+ pp_final = re.sub('profile_pic_url_hd":"', '', pp_link)
+ file_size_request = requests.get(pp_final, stream=True)
+ file_size = int(file_size_request.headers['Content-Length'])
+ block_size = 1024
+ t=tqdm(total=file_size, unit='B', unit_scale=True, desc=username, ascii=True)
+ with open(username + '.jpg', 'wb') as f:
+ for data in file_size_request.iter_content(block_size):
+ t.update(len(data))
+ f.write(data)
+ t.close()
+ #Show image
+ im = Image.open(username +".jpg")
+ im.show()
+ print("Profile picture downloaded successfully")
+
+ except Exception:
+ print('error')
\ No newline at end of file
diff --git a/projects/Instagram_profile/requirements.txt b/projects/Instagram_profile/requirements.txt
new file mode 100644
index 000000000..37b743900
--- /dev/null
+++ b/projects/Instagram_profile/requirements.txt
@@ -0,0 +1,29 @@
+appdirs==1.4.3
+beautifulsoup4==4.9.2
+bs4==0.0.1
+CacheControl==0.12.6
+certifi==2019.11.28
+chardet==3.0.4
+colorama==0.4.3
+contextlib2==0.6.0
+distlib==0.3.0
+distro==1.4.0
+html5lib==1.0.1
+idna==2.8
+ipaddr==2.2.0
+lockfile==0.12.2
+lxml==4.6.3
+msgpack==0.6.2
+packaging==20.3
+pep517==0.8.2
+Pillow==8.3.2
+progress==1.5
+pyparsing==2.4.6
+pytoml==0.1.21
+requests==2.22.0
+retrying==1.3.3
+six==1.14.0
+soupsieve==2.0.1
+tqdm==4.50.0
+urllib3==1.26.5
+webencodings==0.5.1
diff --git a/projects/Internet_connection_check/README.md b/projects/Internet_connection_check/README.md
new file mode 100644
index 000000000..fd6e5cb69
--- /dev/null
+++ b/projects/Internet_connection_check/README.md
@@ -0,0 +1,20 @@
+# Internet Connection Check
+
+A small python script to check internet connectivity.
+
+### Prerequisites
+
+Python3
+
+### How to run the script
+
+> python3 internet_connection_check.py
+
+### Screenshot/GIF showing the sample use of the script
+
+
+
+## *Author Name*
+
+[Ashu Sharma](https://github.com/AshuSharma7)
+[Jacob Ogle](https://github.com/JakeOgle94)
diff --git a/projects/Internet_connection_check/internet_connection_check.py b/projects/Internet_connection_check/internet_connection_check.py
new file mode 100644
index 000000000..d6b08790d
--- /dev/null
+++ b/projects/Internet_connection_check/internet_connection_check.py
@@ -0,0 +1,23 @@
+import requests
+from requests.exceptions import ConnectionError
+
+def internet_connection_test():
+ url = 'https://www.google.com/'
+ print(f'Attempting to connect to {url} to determine internet connection status.')
+
+ try:
+ print(url)
+ resp = requests.get(url, timeout = 10)
+ resp.text
+ resp.status_code
+ print(f'Connection to {url} was successful.')
+ return True
+ except ConnectionError as e:
+ requests.ConnectionError
+ print(f'Failed to connect to {url}.')
+ return False
+ except:
+ print(f'Failed with unparsed reason.')
+ return False
+
+internet_connection_test()
diff --git a/projects/Internet_connection_check/output.png b/projects/Internet_connection_check/output.png
new file mode 100644
index 000000000..09edf6d21
Binary files /dev/null and b/projects/Internet_connection_check/output.png differ
diff --git a/projects/Language_translator/README.md b/projects/Language_translator/README.md
new file mode 100644
index 000000000..1ab14cae7
--- /dev/null
+++ b/projects/Language_translator/README.md
@@ -0,0 +1,41 @@
+# Google Translater Scripts
+
+Transalte one language to another language
+
+### Requirements
+- you need to install below library using pip
+- $ pip install googletrans
+### Description
+- There are 16 languages you can translate into.
+
+### How to run the script
+Execute `python3 python translator.py`
+- After then you have choices to select language by their code
+- Enter Sentence and you will get translated language
+
+### Language options and their code
+| Code | Language |
+| ----------- | ----------- |
+| bn | Bangla |
+| en | English |
+| ko | Koren |
+| fr | French |
+| de | German |
+| he | Hebrew |
+| hi | Hindi |
+| it | Italian |
+| ja | Japanese |
+| la | Latin |
+| ms | Malay |
+| ne | Nepali |
+| ru | Russian |
+| ar | Arabic |
+| zh | Chinese |
+| es | Spanish |
+
+
+### Screenshot shows how to use the script
+
+
+## *Author Name*
+[Ashiqur Rahman Tusher](https://github.com/ashikurt77)
diff --git a/projects/Language_translator/Shot.png b/projects/Language_translator/Shot.png
new file mode 100644
index 000000000..bf9843517
Binary files /dev/null and b/projects/Language_translator/Shot.png differ
diff --git a/projects/Language_translator/requirements.txt b/projects/Language_translator/requirements.txt
new file mode 100644
index 000000000..82ab20173
--- /dev/null
+++ b/projects/Language_translator/requirements.txt
@@ -0,0 +1 @@
+googletrans==3.0.0
diff --git a/projects/Language_translator/translator.py b/projects/Language_translator/translator.py
new file mode 100644
index 000000000..e0c7cb4ac
--- /dev/null
+++ b/projects/Language_translator/translator.py
@@ -0,0 +1,62 @@
+from googletrans import Translator
+
+translator = Translator()
+
+language = {"bn": "Bangla",
+ "en": "English",
+ "ko": "Koren",
+ "fr": "French",
+ "de": "German",
+ "he": "Hebrew",
+ "hi": "Hindi",
+ "it": "Italian",
+ "ja": "Japanese",
+ 'la': "Latin",
+ "ms": "Malay",
+ "ne": "Nepali",
+ "ru": "Russian",
+ "ar": "Arabic",
+ "zh": "Chinese",
+ "es": "Spanish"
+ }
+
+allow = True # variable to control correct language code input
+
+while allow: # checking if language code is valid
+
+ user_code = input(
+ f"Please input desired language code. To see the language code list enter 'options' \n")
+
+ if user_code == "options": # showing language options
+ print("Code : Language") # Heading of language option menu
+ for i in language.items():
+ print(f"{i[0]} => {i[1]}")
+ print() # adding an empty space
+
+ else: # validating user input
+ for lan_code in language.keys():
+ if lan_code == user_code:
+ print(f"You have selected {language[lan_code]}")
+ allow = False
+ if allow:
+ print("It's not a valid language code!")
+
+while True: # starting translation loop
+ string = input(
+ "\nWrite the text you want to translate: \nTo exit the program write 'close'\n")
+
+ if string == "close": # exit program command
+ print(f"\nHave a nice Day!")
+ break
+
+ # translating method from googletrans
+ translated = translator.translate(string, dest=user_code)
+
+ # printing translation
+ print(f"\n{language[user_code]} translation: {translated.text}")
+ # printing pronunciation
+ print(f"Pronunciation : {translated.pronunciation}")
+
+ for i in language.items(): # checking if the source language is listed on language dict and printing it
+ if translated.src == i[0]:
+ print(f"Translated from : {i[1]}")
diff --git a/projects/Leap_Year_Checker/README.md b/projects/Leap_Year_Checker/README.md
new file mode 100644
index 000000000..636aa2092
--- /dev/null
+++ b/projects/Leap_Year_Checker/README.md
@@ -0,0 +1,13 @@
+# Script Title
+
+With the help of this program, you can check whether a year is leap year or not.
+### Prerequisites
+
+No pre-requisites are required...😀😀
+### How to run the script
+
+You can run this on any ide or online compiler.
+
+## *Author Name*
+
+[Hariom1509](https://github.com/Hariom1509)
diff --git a/projects/Leap_Year_Checker/leapyear.py b/projects/Leap_Year_Checker/leapyear.py
new file mode 100644
index 000000000..4b1fb3470
--- /dev/null
+++ b/projects/Leap_Year_Checker/leapyear.py
@@ -0,0 +1,12 @@
+year = int(input("Enter a year:- ")) # Here, you take the input from the user
+
+if(((year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0)):
+ """
+ if a year is a multiple of four and a multiple of 100 i.e. if it is a multiple of 400 it is not a leap year
+ """
+ print("{0} is a leap year!!".format(year))
+ """
+ printing the output
+ """
+else:
+ print("{0} is not a leap year!!".format(year))
diff --git a/projects/MasterMind/Mastermind_GUIinterface.py b/projects/MasterMind/Mastermind_GUIinterface.py
new file mode 100644
index 000000000..53ec32c2f
--- /dev/null
+++ b/projects/MasterMind/Mastermind_GUIinterface.py
@@ -0,0 +1,99 @@
+from tkinter import *
+class medium:
+ def user(self,color): # takes user' choice
+ self.color=color
+ def __init__(self): # generates random palette
+ a=['#270101', '#F08B33', '#776B04', '#F1B848', '#8F715B', '#0486DB', '#C1403D', '#F3D4A0']
+ import random
+ self.b=[];n=4;
+ while n!=0:
+ p=random.choice(a)
+ if p not in self.b:
+ self.b.append(p)
+ n-=1
+ def compare(self,g,l1):
+ l=[] # hints
+ for x in range(4):
+ if l1[x]==g[x]:
+ l.append('red')
+ elif l1[x]in g:
+ l.append('gray')
+ return l
+class MasterMind():
+ def __init__(self, root):
+ obj=medium()
+ self.gen=obj.b # generated color combo
+ self.colors = ['#270101', '#F08B33', '#776B04', '#F1B848', '#8F715B', '#0486DB', '#C1403D', '#F3D4A0']
+ root.geometry('390x600')
+ for y in range(20):
+ Grid.rowconfigure(root, y, weight=1)
+ for x in range(8):
+ Grid.columnconfigure(root, x, weight=1)
+ self.palette = [] # display of palette
+ n,c=0,0
+ for i in self.colors:
+ self.palette.append(Button(root, bg=i, height=1, width=5, relief=SUNKEN))
+ self.palette[n].grid(row=20, column=c)
+ n+=1;c+=1;
+ self.palette[0].config(command=lambda: self.guess(root, self.palette[0]['bg'],obj)) # binding function to palette
+ self.palette[1].config(command=lambda: self.guess(root, self.palette[1]['bg'],obj))
+ self.palette[2].config(command=lambda: self.guess(root, self.palette[2]['bg'],obj))
+ self.palette[3].config(command=lambda: self.guess(root, self.palette[3]['bg'],obj))
+ self.palette[4].config(command=lambda: self.guess(root, self.palette[4]['bg'],obj))
+ self.palette[5].config(command=lambda: self.guess(root, self.palette[5]['bg'],obj))
+ self.palette[6].config(command=lambda: self.guess(root, self.palette[6]['bg'],obj))
+ self.palette[7].config(command=lambda: self.guess(root, self.palette[7]['bg'],obj))
+ self.user_choice = [] # stores the widget
+ self.code = [] # stores the colors
+ self.key = [] # stores the hints
+ global ccol, cro
+ ccol,cro = 2,19
+ def guess(self, root, choice,obj):
+ global ccol
+ global cro
+ f=True # boolean flag
+ if cro != 1:
+ self.user_choice.append(Button(root, bg=choice, height=1, width=5, relief=RAISED))
+ if len(self.user_choice) < 4:
+ self.user_choice[-1].grid(row=cro, column=ccol)
+ self.code.append(self.user_choice[-1]['bg'])
+ ccol += 1
+ elif len(self.user_choice) == 4:
+ self.user_choice[-1].grid(row=cro, column=ccol)
+ self.code.append(self.user_choice[-1]['bg'])
+ ccol += 1
+ ccol = 2
+ cro = cro-1
+ obj.user(self.code) # send the user's choice
+ self.key=obj.compare(self.code,self.gen) #get the hints
+ if self.key==['red','red','red','red']:
+ f=False
+ self.hint(root, self.key)
+ l=Label(root,text="CONGRATULATIONS!!!")
+ l.grid(row=0,columnspan=8)
+ else:
+ self.hint(root, self.key)
+ self.code = []
+ self.user_choice = []
+ else:
+ if f:
+ l=Label(root,text="You are a LOSER!!!! ANSWER:")
+ l.grid(row=0,columnspan=4)
+ c=5
+ for i in self.gen:
+ b=Button(root,bg=i,height=1, width=5, relief=SUNKEN)
+ b.grid(row=0,column=c)
+ c+=1
+ global hcol, hro
+ hcol,hro = 8,19
+ def hint(self, root, key):
+ global hcol, hro
+ a = []
+ for i in key:
+ a.append(Label(root, bg=i,relief=SUNKEN))
+ a[-1].grid(row=hro, column=hcol, sticky=E)
+ hcol += 1
+ hro -= 1;hcol = 8;
+master = Tk()
+M = MasterMind(master)
+master.mainloop()
diff --git a/projects/MasterMind/README.md b/projects/MasterMind/README.md
new file mode 100644
index 000000000..e37e4c71e
--- /dev/null
+++ b/projects/MasterMind/README.md
@@ -0,0 +1,18 @@
+#100LinesOfCode
+-----------------------------
+
+**MASTERMIND GAME**
+
+The Python program uses tkinter interface to create a GUI-based simulation of the MasterMind game.
+
+Refer to the link to understand the rules of the game:
+https://www.wikihow.com/Play-Mastermind
+
+System Specifications: python3.8, Ubuntu 20.04
+
+Dependencies: tkinter (*$ sudo apt-get install python3-tk*)
+
+
+
+## Author Name
+[Akshaya Visvanathan](https://github.com/aksvisu)
\ No newline at end of file
diff --git a/projects/Merge_csv_files/README.md b/projects/Merge_csv_files/README.md
new file mode 100644
index 000000000..198408973
--- /dev/null
+++ b/projects/Merge_csv_files/README.md
@@ -0,0 +1,16 @@
+# Merge CSV files
+With the help of the following simple python script, one would be able to merge CSV files present in the directory.
+
+## Dependencies
+Requires Python 3 and `pandas`
+
+Install requirements: `pip install -r "requirements.txt"`
+OR
+Install pandas: `pip install pandas`
+
+## How to use
+### Running
+Put all the CSVs which are to be merged in a directory containing the script.
+either run it from your code editor or IDE or type `python merge_csv_files.py` in your command line.
+
+The final output would be a `combined_csv.csv` file in the same directory.
diff --git a/projects/Merge_csv_files/merge_csv_files.py b/projects/Merge_csv_files/merge_csv_files.py
new file mode 100644
index 000000000..6b12e3e0e
--- /dev/null
+++ b/projects/Merge_csv_files/merge_csv_files.py
@@ -0,0 +1,8 @@
+import glob
+import pandas as pd
+
+extension = 'csv'
+all_filenames = [i for i in glob.glob('*.{}'.format(extension))]
+
+combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames ])
+combined_csv.to_csv( "combined_csv.csv", index=False, encoding='utf-8-sig')
diff --git a/projects/Merge_csv_files/requirements.txt b/projects/Merge_csv_files/requirements.txt
new file mode 100644
index 000000000..684864f2b
--- /dev/null
+++ b/projects/Merge_csv_files/requirements.txt
@@ -0,0 +1 @@
+pandas==1.1.0
diff --git a/projects/Merge_pdfs/README.md b/projects/Merge_pdfs/README.md
new file mode 100644
index 000000000..5fd73297f
--- /dev/null
+++ b/projects/Merge_pdfs/README.md
@@ -0,0 +1,15 @@
+## Merge_pdfs
+
+A simple python script which when executed merges two pdfs
+
+## Prerequisites
+
+Run - "pip install PyPDF2"
+
+## How to run the script
+
+It can be executed by running "python merge_pdfs.py"
+
+## Author Name
+
+[ShivSt](https://github.com/ShivSt)
diff --git a/projects/Merge_pdfs/merge_pdfs.py b/projects/Merge_pdfs/merge_pdfs.py
new file mode 100644
index 000000000..ff732968b
--- /dev/null
+++ b/projects/Merge_pdfs/merge_pdfs.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python
+
+from PyPDF2 import PdfFileMerger
+
+
+# By appending in the end
+def by_appending():
+ merger = PdfFileMerger()
+ # Either provide file stream
+ f1 = open("samplePdf1.pdf", "rb")
+ merger.append(f1)
+ # Or direct file path
+ merger.append("samplePdf2.pdf")
+
+ merger.write("mergedPdf.pdf")
+
+
+# By inserting at after an specified page no.
+def by_inserting():
+ merger = PdfFileMerger()
+ merger.append("samplePdf1.pdf")
+ merger.merge(0, "samplePdf2.pdf")
+ merger.write("mergedPdf1.pdf")
+
+
+if __name__ == "__main__":
+ by_appending()
+ by_inserting()
diff --git a/projects/Merge_pdfs/mergedPdf.pdf b/projects/Merge_pdfs/mergedPdf.pdf
new file mode 100644
index 000000000..f2f046d1b
Binary files /dev/null and b/projects/Merge_pdfs/mergedPdf.pdf differ
diff --git a/projects/Merge_pdfs/mergedPdf1.pdf b/projects/Merge_pdfs/mergedPdf1.pdf
new file mode 100644
index 000000000..b26a95829
Binary files /dev/null and b/projects/Merge_pdfs/mergedPdf1.pdf differ
diff --git a/projects/Merge_pdfs/requirements.txt b/projects/Merge_pdfs/requirements.txt
new file mode 100644
index 000000000..eed5b3f3e
--- /dev/null
+++ b/projects/Merge_pdfs/requirements.txt
@@ -0,0 +1 @@
+PyPDF2==1.26.0
diff --git a/projects/Merge_pdfs/samplePdf1.pdf b/projects/Merge_pdfs/samplePdf1.pdf
new file mode 100644
index 000000000..a7ea0027c
Binary files /dev/null and b/projects/Merge_pdfs/samplePdf1.pdf differ
diff --git a/projects/Merge_pdfs/samplePdf2.pdf b/projects/Merge_pdfs/samplePdf2.pdf
new file mode 100644
index 000000000..f698ff53d
Binary files /dev/null and b/projects/Merge_pdfs/samplePdf2.pdf differ
diff --git a/projects/Movie Information Scraper/README.md b/projects/Movie Information Scraper/README.md
new file mode 100644
index 000000000..3db07cfd1
--- /dev/null
+++ b/projects/Movie Information Scraper/README.md
@@ -0,0 +1,17 @@
+# Movie Information Scraper
+This script obtains movie details by scraping IMDB website.
+
+### Prerequisites
+* beautifulsoup4
+* requests
+* Run `pip install -r requirements.txt` to install required external modules.
+
+### How to run the script
+Execute `python3 movieInfoScraper.py` and type in the movie name when prompted.
+
+### Screenshot/GIF showing the sample use of the script
+
+
+
+## Author Name
+[Anandha Krishnan Aji](https://github.com/anandhakrishnanaji)
diff --git a/projects/Movie Information Scraper/Screenshot.png b/projects/Movie Information Scraper/Screenshot.png
new file mode 100644
index 000000000..1ab62f30a
Binary files /dev/null and b/projects/Movie Information Scraper/Screenshot.png differ
diff --git a/projects/Movie Information Scraper/movieInfoScraper.py b/projects/Movie Information Scraper/movieInfoScraper.py
new file mode 100644
index 000000000..a822b37bf
--- /dev/null
+++ b/projects/Movie Information Scraper/movieInfoScraper.py
@@ -0,0 +1,100 @@
+from bs4 import BeautifulSoup
+import requests
+
+# Function to get Movie Details
+
+
+def getMovieDetails(movieName):
+ # Base URL of IMDB website
+ url = 'https://www.imdb.com'
+
+ # Query to find movie title
+ query = '/search/title?title='
+
+ # Empty dictionary to store movie Details
+ movieDetails = {}
+
+ # Query formed
+ movienamequery = query+'+'.join(movieName.strip().split(' '))
+
+ # WebPage is obtained and parsed
+ html = requests.get(url+movienamequery+'&title_type=feature')
+ bs = BeautifulSoup(html.text, 'html.parser')
+
+ # Gets the first movie that appears in title section
+ result = bs.find('h3', {'class': 'lister-item-header'})
+
+ if result is None:
+ return None
+
+ movielink = url+result.a.attrs['href']
+ movieDetails['name'] = result.a.text
+
+ # Gets the page with movie details
+ html = requests.get(movielink)
+ bs = BeautifulSoup(html.text, 'html.parser')
+ # Year
+ try:
+ movieDetails['year'] = bs.find('span', {'id': 'titleYear'}).a.text
+ except AttributeError:
+ movieDetails['year'] = 'Not available'
+ subtext = bs.find('div', {'class': 'subtext'})
+
+ # Rating,Genres,Runtime,Release Date,
+
+ movieDetails['genres'] = [
+ i.text for i in subtext.findAll('a', {'title': None})]
+ try:
+ movieDetails['rating'] = bs.find(
+ 'div', {'class': 'ratingValue'}).span.text
+ movieDetails['runtime'] = subtext.time.text.strip()
+ except AttributeError:
+ movieDetails['rating'] = 'Not yet rated'
+ movieDetails['runtime'] = 'Not available'
+ movieDetails['release_date'] = subtext.find(
+ 'a', {'title': 'See more release dates'}).text.strip()
+
+ # Gets the credit section of the page
+ creditSummary = bs.findAll('div', {'class': 'credit_summary_item'})
+
+ # Directors,Writers and Cast
+ movieDetails['directors'] = [i.text for i in creditSummary[0].findAll('a')]
+ movieDetails['writers'] = [i.text for i in creditSummary[1].findAll(
+ 'a') if 'name' in i.attrs['href']]
+ try:
+ movieDetails['cast'] = [i.text for i in creditSummary[2].findAll(
+ 'a') if 'name' in i.attrs['href']]
+
+ # For some films, writer details are not provided
+ except IndexError:
+ movieDetails['cast']=movieDetails['writers']
+ movieDetails['writers']='Not found'
+
+ # The plot is seperate AJAX call and does not come in the html page, So one more request to plotsummary page
+ html = requests.get(movielink+'plotsummary')
+ bs = BeautifulSoup(html.text, 'html.parser')
+
+ # Plot
+ movieDetails['plot'] = bs.find(
+ 'li', {'class': 'ipl-zebra-list__item'}).p.text.strip()
+
+ # Returns the dictionary with movie details
+ return movieDetails
+
+
+if __name__ == "__main__":
+ movieName = input('Enter the movie name whose details are to be fetched\n')
+ movieDetails = getMovieDetails(movieName)
+ if movieDetails is None:
+ print('No movie of this name found !!!!!')
+ quit()
+ print('\n{movie} ({year})'.format(
+ movie=movieDetails['name'], year=movieDetails['year']))
+ print('Rating:', movieDetails['rating'])
+ print('Runtime:', movieDetails['runtime'])
+ print('Release Date:', movieDetails['release_date'])
+ print('Genres:', ', '.join(movieDetails['genres']))
+ print('Director:', ', '.join(movieDetails['directors']))
+ print('Writer:', ', '.join(movieDetails['writers']))
+ print('Cast:', ', '.join(movieDetails['cast']))
+ print('Plot Summary:\n', movieDetails['plot'])
diff --git a/projects/Movie Information Scraper/requirements.txt b/projects/Movie Information Scraper/requirements.txt
new file mode 100644
index 000000000..e12350e27
--- /dev/null
+++ b/projects/Movie Information Scraper/requirements.txt
@@ -0,0 +1,2 @@
+beautifulsoup4
+requests==2.23.0
diff --git a/projects/Multi_language_OCR/README.MD b/projects/Multi_language_OCR/README.MD
new file mode 100644
index 000000000..ba77dab0c
--- /dev/null
+++ b/projects/Multi_language_OCR/README.MD
@@ -0,0 +1,27 @@
+# Script Title
+
+Multi language OCR example
+
+### Prerequisites
+
+```shell
+pip install agentocr==1.3.0
+pip install onnxruntime==1.8.1
+```
+or
+```shell
+pip install -r ./projects/Multi_language_OCR/requirements.txt
+```
+### How to run the script
+
+Execute `python3 multi_language_OCR.py`
+
+If you need complete operation documents, you can refer to [AgentOCR advanced tutorial](https://github.com/AgentMaker/AgentOCR)
+
+### Screenshot/GIF showing the sample use of the script
+
+
+
+## *Author Name*
+
+[GT-ZhangAcer](https://github.com/GT-ZhangAcer)
diff --git a/projects/Multi_language_OCR/multi_language_OCR.py b/projects/Multi_language_OCR/multi_language_OCR.py
new file mode 100644
index 000000000..3ef4dbde2
--- /dev/null
+++ b/projects/Multi_language_OCR/multi_language_OCR.py
@@ -0,0 +1,63 @@
+# Author: Acer Zhang
+# Datetime: 2021/9/14
+# Copyright belongs to the author.
+# Please indicate the source for reprinting.
+
+language = """
+Language Abbreviation Language Abbreviation
+Chinese & English ch Arabic ar
+English en Hindi hi
+French fr Uyghur ug
+German german Persian fa
+Japan japan Urdu ur
+Korean korean Serbian(latin) rs_latin
+Chinese Traditional chinese_cht Occitan oc
+Italian it Marathi mr
+Spanish es Nepali ne
+Portuguese pt Serbian(cyrillic) rs_cyrillic
+Russia ru Bulgarian bg
+Ukranian uk Estonian et
+Belarusian be Irish ga
+Telugu te Croatian hr
+Saudi Arabia sa Hungarian hu
+Tamil ta Indonesian id
+Afrikaans af Icelandic is
+Azerbaijani az Kurdish ku
+Bosnian bs Lithuanian lt
+Czech cs Latvian lv
+Welsh cy Maori mi
+Danish da Malay ms
+Maltese mt Adyghe ady
+Dutch nl Kabardian kbd
+Norwegian no Avar ava
+Polish pl Dargwa dar
+Romanian ro Ingush inh
+Slovak sk Lak lbe
+Slovenian sl Lezghian lez
+Albanian sq Tabassaran tab
+Swedish sv Bihari bh
+Swahili sw Maithili mai
+Tagalog tl Angika ang
+Turkish tr Bhojpuri bho
+Uzbek uz Magahi mah
+Vietnamese vi Nagpur sck
+Mongolian mn Newari new
+Abaza abq Goan Konkani gom
+"""
+
+# Import AgentOCR python module
+from agentocr import OCRSystem
+
+# Choose OCR language
+print(language)
+config = input("Please enter the language you want to recognize:")
+# Init OCRSystem
+ocr = OCRSystem(config=config)
+print("OCR system Initialization complete!")
+
+# Start OCR!
+while True:
+ img = input("Please enter the path where the picture file is located:")
+ results = ocr.ocr(img)
+ for info in results:
+ print(info)
\ No newline at end of file
diff --git a/projects/Multi_language_OCR/requirements.txt b/projects/Multi_language_OCR/requirements.txt
new file mode 100644
index 000000000..8bc1defe5
--- /dev/null
+++ b/projects/Multi_language_OCR/requirements.txt
@@ -0,0 +1,2 @@
+agentocr==1.3.0
+onnxruntime==1.8.1
diff --git a/projects/Network Usage Tracker/Images/1.jpg b/projects/Network Usage Tracker/Images/1.jpg
new file mode 100644
index 000000000..001495bf6
Binary files /dev/null and b/projects/Network Usage Tracker/Images/1.jpg differ
diff --git a/projects/Network Usage Tracker/Images/2.jpg b/projects/Network Usage Tracker/Images/2.jpg
new file mode 100644
index 000000000..a271024d7
Binary files /dev/null and b/projects/Network Usage Tracker/Images/2.jpg differ
diff --git a/projects/Network Usage Tracker/Images/3.jpg b/projects/Network Usage Tracker/Images/3.jpg
new file mode 100644
index 000000000..7049c907e
Binary files /dev/null and b/projects/Network Usage Tracker/Images/3.jpg differ
diff --git a/projects/Network Usage Tracker/Images/4.jpg b/projects/Network Usage Tracker/Images/4.jpg
new file mode 100644
index 000000000..d6337a20c
Binary files /dev/null and b/projects/Network Usage Tracker/Images/4.jpg differ
diff --git a/projects/Network Usage Tracker/Images/5.jpg b/projects/Network Usage Tracker/Images/5.jpg
new file mode 100644
index 000000000..e416d1f0d
Binary files /dev/null and b/projects/Network Usage Tracker/Images/5.jpg differ
diff --git a/projects/Network Usage Tracker/Images/6.jpg b/projects/Network Usage Tracker/Images/6.jpg
new file mode 100644
index 000000000..974321ebf
Binary files /dev/null and b/projects/Network Usage Tracker/Images/6.jpg differ
diff --git a/projects/Network Usage Tracker/Images/7.jpg b/projects/Network Usage Tracker/Images/7.jpg
new file mode 100644
index 000000000..a667c44e6
Binary files /dev/null and b/projects/Network Usage Tracker/Images/7.jpg differ
diff --git a/projects/Network Usage Tracker/Images/8.jpg b/projects/Network Usage Tracker/Images/8.jpg
new file mode 100644
index 000000000..e1aa1c501
Binary files /dev/null and b/projects/Network Usage Tracker/Images/8.jpg differ
diff --git a/projects/Network Usage Tracker/Images/front.png b/projects/Network Usage Tracker/Images/front.png
new file mode 100644
index 000000000..853e2f377
Binary files /dev/null and b/projects/Network Usage Tracker/Images/front.png differ
diff --git a/projects/Network Usage Tracker/README.md b/projects/Network Usage Tracker/README.md
new file mode 100644
index 000000000..8f5421f46
--- /dev/null
+++ b/projects/Network Usage Tracker/README.md
@@ -0,0 +1,26 @@
+# Script Title
+- A "Network Usage Tracker" is an application created in python with tkinter gui.
+- In this application, user gets the usage of network in his/her PC or computer at every instant.
+- Here user will be given a MAX LIMIT of network usage, and if user crosses that max limit, user willl be notified for the same.
+- Also user will be able to see the connection status and the IP address related to the same.
+
+### Prerequisites
+```pip install -r requirements.txt```
+
+### How to run the script
+- Just clone the code file, and network_usage_tracker.py on local system.
+- Then the script will start running and user can monitor the network usage and check if it exceeds the max limit or not.
+
+### Screenshot/GIF showing the sample use of the script
+
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+
+
+## Author Name
+***lilo550***
diff --git a/projects/Password_generator/logo.ico b/projects/Password_generator/logo.ico
new file mode 100644
index 000000000..01ea65ea7
Binary files /dev/null and b/projects/Password_generator/logo.ico differ
diff --git a/projects/Password_generator/logo.png b/projects/Password_generator/logo.png
new file mode 100644
index 000000000..31eb8ae09
Binary files /dev/null and b/projects/Password_generator/logo.png differ
diff --git a/projects/Password_generator/password_generator.py b/projects/Password_generator/password_generator.py
new file mode 100644
index 000000000..452abf1af
--- /dev/null
+++ b/projects/Password_generator/password_generator.py
@@ -0,0 +1,41 @@
+from tkinter import*
+from random import choice
+import string
+
+class App:
+ def __init__(self):
+ self.window = Tk()
+ self.window.title('password_generator')
+ self.window.iconbitmap('logo.ico')
+ self.window.iconphoto(False, PhotoImage(file='logo.png'))
+ self.window.geometry('500x255')
+ self.window.config(bg='gray')
+
+ #component creation
+ self.label()
+ self.entry()
+ self.button()
+
+ def label(self):
+ label_title = Label(self.window, text='Welcome to password generator', font=('Courrier', 20), bg='gray', fg='black')
+ label_title.pack()
+
+ def entry(self):
+ self.password_entry = Entry(self.window, font=('Courrier', 25), bg='white', fg='black', width=30, relief='solid')
+ self.password_entry.pack(pady=50)
+
+ def button(self):
+ password_generator = Button(self.window, text="Generate_password", font=('Courrier', 12), bg='white', fg='black', width=25, command=self.generate_password)
+ password_generator.pack()
+
+ def generate_password(self):
+ characters = string.ascii_letters + string.punctuation + string.digits
+ password = ""
+ for x in range(28):
+ password+=choice(characters)
+ self.password_entry.delete(0, END)
+ self.password_entry.insert(0, password)
+
+#display
+app = App()
+app.window.mainloop()
diff --git a/projects/Plagarism_checker/README.md b/projects/Plagarism_checker/README.md
new file mode 100644
index 000000000..fa89cc265
--- /dev/null
+++ b/projects/Plagarism_checker/README.md
@@ -0,0 +1,37 @@
+# Plagarism checker
+
+
+
+Python script for checking the amount of similarity between two (or more) text files.
+
+### Prerequisites
+
+
+
+Sklearn module
+Installation:
+
+```
+$ pip install -U scikit-learn
+```
+
+### How to run the script
+
+
+
+```
+$ python plag.py
+```
+
+### Screenshot/GIF showing the sample use of the script
+
+
+
+#
+
+## _Author Name_
+
+
+
+Darahaas Yajamanyam
+>>> import pyautogui
+
+
+
+`>>> screenWidth, screenHeight = pyautogui.size()` # Get the size of the primary monitor.
+
+`>>> currentMouseX, currentMouseY = pyautogui.position()` # Get the XY position of the mouse.
+
+`>>> pyautogui.moveTo(100, 150)` # Move the mouse to XY coordinates.
+
+`>>> pyautogui.click()` # Click the mouse.Enter values through spaces for each of the three equations, return the solution and a 3D graph.
+ +python3 linearEquations.py
+ +
+
+
+
+
| Task | -Date | - -Operation | -
|---|---|---|
| {{ task.content }} | -{{ task.pub_date.date() }} | -- - {% if update_task %} - {% if not update_task.id==task.id %} - Update - Delete - {% endif %} - {% else %} - - Update - Delete - - {% endif %} - - - - - - | -
There is no task !!
- {% endif %} - - - -| Task | +Date | + +Operation | +
|---|---|---|
| {{ task.content }} | +{{ task.pub_date.date() }} | ++ + {% if update_task %} + {% if not update_task.id==task.id %} + Update + Delete + {% endif %} + {% else %} + + Update + Delete + + {% endif %} + + + + + + | +
There is no task !!
+ {% endif %} + + + +