制作NBA球员的查询和对比系统

一 流程图

二 代码

1 导入库和读取Excel文件(图1)

图2

2 根据球员姓名搜索数据和比较两位球员的数据(图2)

       1. `search_by_name(name)`: 这个函数接受一个球员的名字作为参数,并在数据中搜索该球员的数据。它首先将球员名字转换为小写形式,然后在数据中搜索与该名字匹配的记录。最后,它返回包含匹配记录的 DataFrame。

       2. `compare_two_people(person1, person2)`: 这个函数用于比较两位球员的数据。它首先调用 `search_by_name` 函数来获取两位球员的数据。如果任一球员的数据为空(即找不到),则返回 `None`。否则,返回包含两位球员数据的元组 `(data_person1, data_person2)`。

图2

3 绘制数据对比图(图3)

       这段代码定义了一个名为 `plot_data` 的函数,该函数接受两个参数 `data_person1` 和 `data_person2`,这两个参数应该是 Pandas DataFrame 类型的数据,用于包含两个人的比较数据。

       在函数内部,它定义了一个标签列表 `labels`,包含了要绘制的比较项的名称。然后,它从每个人的数据中提取了第一行(假设这一行包含了完整的数据)中包含这些标签的值,存储在 `values_person1` 和 `values_person2` 中。

图3

4    检测是否包含 '%' 符号,进行相应的转换和其他列转换为浮点数(图4)

       这段代码看起来是在对一些数据进行处理,将特定列中包含百分号的值转换为浮点数。然后,它将其他列的值都转换为浮点数。

        在第一个循环中,它遍历了包含 `'投篮命中率', '三分命中率', '罚球命中率'` 标签的列,并检查是否包含 '%' 符号。如果包含,它会将这些值去除百分号并转换为浮点数。接着,在第二个循环中,它遍历了所有列,并将除了前面提到的三个列外的所有列的值都转换为浮点数。

      这样的处理通常用于在数据分析或可视化之前,确保数据的格式是一致的,并且可以被正确地解析和处理。

图4

5 绘制两位球员数据比较的柱状图(图5)

这里使用了 Matplotlib 库。首先,`x` 是一个范围对象,表示了柱子在 x 轴上的位置。`width` 则是每个柱子的宽度。接着,通过 `plt.subplots` 创建了一个大小为 (10, 6) 的图形。

- 使用 `ax.bar` 函数在图形上创建了两组柱状图,分别代表两位球员的数据,`rects1` 和 `rects2` 分别表示这两组柱状图的返回对象。

- 设置了 y 轴标签 (`'数值'`)、图表标题 (`'两位球员数据比较'`)、以及 x 轴的刻度和标签。

- 使用了 `ax.legend()` 添加了图例,其中的标签来自于 `name_entry.get()` 和 `other_name_entry.get()`,这两者可能是用户输入的球员名字。

- 最后,使用 `plt.rcParams` 来设置中文显示和解决负号显示问题,并通过 `plt.show()` 显示图形。


图5

6搜索按钮点击事件处理函数和比较按钮点击事件处理函数

     1. `search_button_clicked()`:当搜索按钮被点击时,该函数获取输入的球员名字,然后调用 `search_by_name` 函数搜索与该名字相关的数据。如果找不到相关数据,则在结果标签 `result_label` 中显示相应的提示信息;否则,显示与球员名字相关的数据。

       2. `compare_button_clicked()`:当比较按钮被点击时,该函数获取输入的两个球员名字,然后调用 `compare_two_people` 函数比较这两个球员的数据。如果成功比较到了数据,则调用 `plot_data` 函数绘制比较图表;如果找不到相关数据,则在结果标签中显示相应的提示信息。

       3. `display_data(data_to_display)`:该函数用于显示数据。它首先定义了每页显示的行数,并计算出数据需要分成几页。然后,通过循环遍历每一页的数据,并利用切片操作 `iloc` 获取当前页的数据,最后将其打印输出。

图6


图7

7 创建了一个简单的GUI界面,用于进行NBA球员搜索和比较。(图8)

       首先创建了一个 `Tk()` 对象,即主窗口,标题设置为 "NBA 球员搜索"。

       接着创建了姓名输入框 `name_entry` 和搜索按钮 `search_button`,分别用于输入要搜索的球员名字和执行搜索操作。

       然后创建了另一个姓名输入框 `other_name_entry` 和比较按钮 `compare_button`,分别用于输入另一个球员的名字和执行比较操作。

        最后创建了一个结果标签 `result_label`,用于显示搜索结果或比较结果。

        这些组件通过 `grid()` 方法进行布局,指定了它们在网格中的行列位置以及一些间距参数。并且通过 `command` 参数指定了按钮点击时对应的处理函数。

       最后调用 `root.mainloop()` 进入事件循环,等待用户交互。

图8

三运行结果


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容