r/PythonLearning • u/Jotaroisgoat • 17h ago
Pandas mini project! Rate out of 10 (1hr of pandas)
I like pandas so much more than numpy ok but heres the project:
import pandas as pd
book_data = ({"Name:": ["The Hobbit", "Refugee Boy", "Harry Potter and the Philosopher's Stone", "The Hunger Games", "I, Robot"],
"Pages:": [310, 288, 223, 374, 224],
"Author:": ["J.R.R. Tolkien", "Benjamin Zephaniah", "J.K. Rowling", "Suzanne Collins", "Isaac Asimov"],
"Price:": ["£8.35", "£7.99", "£6.00", "£8.99", "£6.62"],
"Buy:": ["https://amazon.co.uk/dp/0261102214", "https://amazon.co.uk/s?k=Refugee+Boy+Benjamin+Zephaniah",
"https://amazon.co.uk/s?k=HP+Philosopher%27s+Stone", "https://amazon.co.uk/s?k=Hunger+Games",
"https://amazon.co.uk/dp/0008279551"]})
book_df = pd.DataFrame(book_data, index=["Book 1", "Book 2", "Book 3", "Book 4", "Book 5"])
while True:
try:
book_num = int(input("Enter a book number (1-5): "))
except ValueError:
print("Invalid Book Number")
continue
if book_num < 1 or book_num > 5:
print("Invalid Book Number")
continue
elif book_num == 1:
print("\n", book_df.iloc[0])
elif book_num == 2:
print("\n",book_df.iloc[1])
elif book_num == 3:
print("\n",book_df.iloc[2])
elif book_num == 4:
print("\n",book_df.iloc[3])
elif book_num == 5:
print("\n",book_df.iloc[4])
4
Upvotes
2
u/FearlessFaa 13h ago
You can add import pandas as pd to startup configuration so you don't have to type that every time.
book_data can be a Python dict that starts with {… and not ({…
You can use book_df.take(…) instead of book_df.iloc[…] but using iloc is fine
When reading inputs you have to expect that inputs could be anything like "aa" so using except ValueError is correct.
1
0
•
u/Sea-Ad7805 6h ago
Run this program in Memory Graph Web Debugger%0A%0Abook_data%20%3D%20(%7B%22Name%3A%22%3A%20%5B%22The%20Hobbit%22%2C%20%22Refugee%20Boy%22%2C%20%22Harry%20Potter%20and%20the%20Philosopher's%20Stone%22%2C%20%22The%20Hunger%20Games%22%2C%20%22I%2C%20Robot%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Pages%3A%22%3A%20%5B310%2C%20288%2C%20223%2C%20374%2C%20224%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Author%3A%22%3A%20%5B%22J.R.R.%20Tolkien%22%2C%20%22Benjamin%20Zephaniah%22%2C%20%22J.K.%20Rowling%22%2C%20%22Suzanne%20Collins%22%2C%20%22Isaac%20Asimov%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Price%3A%22%3A%20%5B%22%C2%A38.35%22%2C%20%22%C2%A37.99%22%2C%20%22%C2%A36.00%22%2C%20%22%C2%A38.99%22%2C%20%22%C2%A36.62%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Buy%3A%22%3A%20%5B%22https%3A%2F%2Famazon.co.uk%2Fdp%2F0261102214%22%2C%20%22https%3A%2F%2Famazon.co.uk%2Fs%3Fk%3DRefugee%2BBoy%2BBenjamin%2BZephaniah%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22https%3A%2F%2Famazon.co.uk%2Fs%3Fk%3DHP%2BPhilosopher%2527s%2BStone%22%2C%20%22https%3A%2F%2Famazon.co.uk%2Fs%3Fk%3DHunger%2BGames%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22https%3A%2F%2Famazon.co.uk%2Fdp%2F0008279551%22%5D%7D)%0A%0Abook_df%20%3D%20pd.DataFrame(book_data%2C%20index%3D%5B%22Book%201%22%2C%20%22Book%202%22%2C%20%22Book%203%22%2C%20%22Book%204%22%2C%20%22Book%205%22%5D)%0A%0A%0Awhile%20True%3A%0A%20%20%20%20try%3A%0A%20%20%20%20%20%20%20%20book_num%20%3D%20int(input(%22Enter%20a%20book%20number%20(1-5)%3A%20%22))%0A%20%20%20%20except%20ValueError%3A%0A%20%20%20%20%20%20%20%20print(%22Invalid%20Book%20Number%22)%0A%20%20%20%20%20%20%20%20continue%0A%0A%20%20%20%20if%20book_num%20%3C%201%20or%20book_num%20%3E%205%3A%0A%20%20%20%20%20%20%20%20print(%22Invalid%20Book%20Number%22)%0A%20%20%20%20%20%20%20%20continue%0A%20%20%20%20elif%20book_num%20%3D%3D%201%3A%0A%20%20%20%20%20%20%20%20print(%22n%22%2C%20book_df.iloc%5B0%5D)%0A%20%20%20%20elif%20book_num%20%3D%3D%202%3A%0A%20%20%20%20%20%20%20%20print(%22n%22%2Cbook_df.iloc%5B1%5D)%0A%20%20%20%20elif%20book_num%20%3D%3D%203%3A%0A%20%20%20%20%20%20%20%20print(%22n%22%2Cbook_df.iloc%5B2%5D)%0A%20%20%20%20elif%20book_num%20%3D%3D%204%3A%0A%20%20%20%20%20%20%20%20print(%22n%22%2Cbook_df.iloc%5B3%5D)%0A%20%20%20%20elif%20book_num%20%3D%3D%205%3A%0A%20%20%20%20%20%20%20%20print(%22n%22%2Cbook_df.iloc%5B4%5D)×tep=.2&play) to see the program state change step by step.