Spaces:
Build error
Build error
| from datasets import load_dataset | |
| import pandas as pd | |
| import gradio as gr | |
| # Load the Pokémon Cards dataset from Hugging Face | |
| dataset = load_dataset("TheFusion21/PokemonCards") | |
| df = pd.DataFrame(dataset["train"]) | |
| display_columns = ["name", "hp", "image_url"] + [col for col in df.columns if col not in ["image_url", "name", "hp"]] | |
| display_df = df[display_columns] | |
| def style_df(df): | |
| hp_min = df['hp'].min() | |
| hp_max = df['hp'].max() | |
| def color_hp(val): | |
| norm_val = (val - hp_min) / (hp_max - hp_min) | |
| r = int(255 * (1 - norm_val)) | |
| g = int(255 * norm_val) | |
| return f'background-color: rgba({r}, {g}, 0, 0.2)' | |
| styled = df.style.applymap(color_hp, subset=['hp']) | |
| return styled | |
| # Function to filter data based on user input | |
| def filter_cards(set_name=None): | |
| filtered_df = df.copy() | |
| if set_name and set_name != "All": | |
| filtered_df = filtered_df[filtered_df["set_name"] == set_name] | |
| return style_df(filtered_df[display_columns]) | |
| def update_display(evt: gr.SelectData): | |
| selected_data = df.iloc[evt.index[0]] | |
| stats_df = pd.DataFrame({ | |
| 'Stat': ['Name', 'HP', 'Set Name', 'Caption'], | |
| 'Value': [selected_data['name'], selected_data['hp'], selected_data['set_name'], selected_data['caption']] | |
| }) | |
| return selected_data["image_url"], stats_df | |
| # Gradio interface | |
| with gr.Blocks() as demo: | |
| gr.Markdown("## Pokémon Cards Explorer") | |
| with gr.Row(): | |
| set_filter = gr.Dropdown( | |
| choices=["All"] + df["set_name"].unique().tolist(), | |
| label="Filter by Set Name" | |
| ) | |
| filtered_table = gr.DataFrame( | |
| style_df(display_df), | |
| show_fullscreen_button=True, | |
| show_search="search", | |
| datatype=["str", "number", "image"] + ["str"] * (len(display_columns) - 3) | |
| ) | |
| with gr.Row(): | |
| card_image = gr.Image(label="Card Image", height=400) | |
| stats_table = gr.DataFrame( | |
| headers=["Stat", "Value"], | |
| label="Pokemon Stats", | |
| interactive=False, | |
| wrap=True | |
| ) | |
| filter_button = gr.Button("Apply Filters") | |
| filter_button.click( | |
| filter_cards, | |
| inputs=[set_filter], | |
| outputs=filtered_table | |
| ) | |
| filtered_table.select( | |
| update_display, | |
| None, | |
| [card_image, stats_table] | |
| ) | |
| demo.launch() | |