欢迎加入python学习交流群 667279387

学习笔记汇总

Pandas学习(一)–数据的导入

pandas学习(二)–双色球数据分析

pandas学习(三)–NAB球员薪资分析

pandas学习(四)–数据的归一化

pandas学习(五)–pandas学习视频

本篇文章主要利用NBA球员的薪资数据处理来进一步学习pandas这个数据处理工具。

1、获取数据并保存

本文从网站:下载网站 来获取2017-2018年各位NBA球员的薪资情况,代码如下:

import pandas as pd

data = pd.DataFrame()
url_list = ['http://www.espn.com/nba/salaries/_/seasontype/4']
for i in range(2, 13):
url = 'http://www.espn.com/nba/salaries/_/page/%s/seasontype/4' % i
url_list.append(url)
for url in url_list:
data = data.append(pd.read_html(url), ignore_index=True)
data = data[[x.startswith('$') for x in data[3]]]
data.to_csv('NAB_salaries.csv',header=['RK','NAME','TEAM','SALARY'], index=False)

获取到的数据薪资前面10的数据如下

   RK                   NAME                   TEAM       SALARY
0 1 Stephen Curry, PG Golden State Warriors $34,382,550
1 2 LeBron James, SF Cleveland Cavaliers $33,285,709
2 3 Paul Millsap, PF Denver Nuggets $31,269,231
3 4 Gordon Hayward, SF Boston Celtics $29,727,900
4 5 Blake Griffin, PF LA Clippers $29,512,900
5 6 Kyle Lowry, PG Toronto Raptors $28,703,704
6 7 Mike Conley, PG Memphis Grizzlies $28,530,608
7 8 Russell Westbrook, PG Oklahoma City Thunder $28,530,608
8 9 James Harden, SG Houston Rockets $28,299,399
9 10 DeMar DeRozan, SG Toronto Raptors $27,739,975

2、分析数据

2.1、统计一个球队的所有球员薪资总和

# -*coding:utf-8*-
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
money2int = lambda x: "".join(filter(str.isdigit, x))
team_name = lambda x: x.split()[-1]
salary = pd.read_csv('./NAB_salaries.csv', usecols=['NAME', 'TEAM', 'SALARY'], converters={'SALARY': money2int, 'TEAM': team_name}) salary['SALARY'] = salary['SALARY'].astype(np.int)
salary = salary.groupby(['TEAM'], as_index=False).sum()
salary_sorted = salary.sort_values('SALARY',ascending=False)
salary_sorted.index = salary_sorted['TEAM'] salary_sorted.plot(kind='bar', align='center', title='球队队员工资共和($)')
plt.xlabel('球队名')
plt.ylabel('队员工资共和')
plt.show()
            TEAM     SALARY
1 Blazers 134302107
4 Cavaliers 132016201
28 Warriors 128211882
11 Jazz 122981295
10 Hornets 121972410



从统计数据可以看出Blazers(波特兰开拓者队)支付球员薪水花费最大。

2.1、统计多个球队的所有球员薪资分布情况

# -*coding:utf-8*-
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 money2int = lambda x: "".join(filter(str.isdigit, x))
team_name = lambda x: x.split()[-1]
get_name = lambda x: x.split(',')[0]
salary = pd.read_csv('./NAB_salaries.csv', usecols=['NAME', 'TEAM', 'SALARY'],
converters={'SALARY': money2int, 'NAME': get_name, 'TEAM': team_name})
salary['SALARY'] = salary['SALARY'].astype(np.int) data = pd.DataFrame({"Cavaliers": salary[salary['TEAM'] == 'Cavaliers']['SALARY'],
"Warriors": salary[salary['TEAM'] == 'Warriors']['SALARY'],
"Rockets": salary[salary['TEAM'] == 'Rockets']['SALARY'],
"Lakers": salary[salary['TEAM'] == 'Lakers']['SALARY']})
#合并后面的数据有比较多的NAN数据,但是画图的时候会自动忽略。
#没有找到更好的合并方法,因为球队的队员人数不同,
#如果相同的话,可以转成list再合成dataframe就不会有NAN数据了。
plt.ylabel("球员薪资(单位:$)")
plt.xlabel("球队名")
data.boxplot()
plt.show()



本例子中选取了骑士、湖人、火箭、勇士队来进行分析,作出了

四个球队的所有队员薪资分布的箱图。从图中可以看出湖人队的薪资比较平均,勇士队的薪资跨度比较大。

2.3 统计不同类型球员工资

# -*coding:utf-8*-
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt money2int = lambda x: "".join(filter(str.isdigit, x))
team_name = lambda x: x.split()[-1]
salary = pd.read_csv('./NAB_salaries.csv', usecols=['NAME', 'TEAM', 'SALARY'],
converters={'SALARY': money2int, 'TEAM': team_name})
salary['SALARY'] = salary['SALARY'].astype(np.int)
#原始数据的NAME列是类似(Stephen Curry, PG),
#以下3行代码主要是为了实现将NAME一列拆分两列变为Stephen Curry一列,PG为一列 salary.insert(1, 'POSITION', salary['NAME'])
salary['NAME'] = salary['NAME'].map(lambda x: x.split(',')[0])
salary['POSITION'] = salary['POSITION'].map(lambda x: x.split(',')[1])
# C:Center 中锋
# PF: Power Forward 大前锋
# SF: Small Forward 小前锋
# SG: Shooting Guard 得分后卫
# PG: Point Guard 组织后卫
#print(salary.groupby('POSITION').sum()) #统计各个类型的薪水
#print(salary.groupby('POSITION').describe())#各个类型的数理统计结果
print(salary.groupby('POSITION').mean())

下面是各个类型的平均工资,可以看出SF的平均薪水最高

 C        7808847
F 2770083
G 1685802
PF 6278746
PG 7112007
SF 7886812
SG 6589922

还有很多东西可以从这个数据当中去挖掘,每次实现一个功能,都进一步熟悉了pandas~为后续深入数据分析学习做好了准备~

欢迎python爱好者加入:学习交流群 667279387

Pandas学习(三)——NBA球员薪资分析的更多相关文章

  1. Pandas学习(一)——数据的导入

    欢迎加入python学习交流群 667279387 学习笔记汇总 Pandas学习(一)–数据的导入 pandas学习(二)–双色球数据分析 pandas学习(三)–NAB球员薪资分析 pandas学 ...

  2. pandas学习(四)--数据的归一化

    欢迎加入python学习交流群 667279387 Pandas学习(一)–数据的导入 pandas学习(二)–双色球数据分析 pandas学习(三)–NAB球员薪资分析 pandas学习(四)–数据 ...

  3. Pandas学习(二)——双色球开奖数据分析

    学习笔记汇总 Pandas学习(一)–数据的导入 pandas学习(二)–双色球数据分析 pandas学习(三)–NAB球员薪资分析 pandas学习(四)–数据的归一化 pandas学习(五)–pa ...

  4. python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言)

    python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言) 感觉要总结总结了,希望这次能写个系列文章分享分享心得,和大神们交流交流,提升提升. 因为 ...

  5. 【转】Pandas学习笔记(三)修改&添加值

    Pandas学习笔记系列: Pandas学习笔记(一)基本介绍 Pandas学习笔记(二)选择数据 Pandas学习笔记(三)修改&添加值 Pandas学习笔记(四)处理丢失值 Pandas学 ...

  6. Python pandas学习总结

    本来打算学习pandas模块,并写一个博客记录一下自己的学习,但是不知道怎么了,最近好像有点急功近利,就想把别人的东西复制过来,当心沉下来,自己自觉地将原本写满的pandas学习笔记删除了,这次打算写 ...

  7. numpy pandas 学习

    一. 数组要比列表效率高很多 numpy高效的处理数据,提供数组的支持,python默认没有数组.pandas.scipy.matplotlib都依赖numpy. pandas主要用于数据挖掘,探索, ...

  8. Pandas 学习手册中文第二版·翻译完成

    原文:Learning pandas 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 面试求职交流群 72418 ...

  9. 4.机器学习——统计学习三要素与最大似然估计、最大后验概率估计及L1、L2正则化

    1.前言 之前我一直对于“最大似然估计”犯迷糊,今天在看了陶轻松.忆臻.nebulaf91等人的博客以及李航老师的<统计学习方法>后,豁然开朗,于是在此记下一些心得体会. “最大似然估计” ...

随机推荐

  1. redis 数据库主从不一致问题解决方案

     在聊数据库与缓存一致性问题之前,先聊聊数据库主库与从库的一致性问题. 问:常见的数据库集群架构如何? 答:一主多从,主从同步,读写分离. 如上图: (1)一个主库提供写服务 (2)多个从库提供读服务 ...

  2. Linux常用命令复习

    1> 查看文件信息:ls ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令. Linux文件或者目录名称最长可以有265个字符,“.”代 ...

  3. 用 GitBook 创建一本书

    用 GitBook 创建一本书 Gitbook 首先是一个软件,它使用 Git 和 Markdown 来编排书本,如果你没有听过 Git 和 Markdown,那么 gitbook 可能不适合你直接入 ...

  4. scrapy介绍及使用

    scrapy的流程 其流程可以描述如下: 调度器把requests-->引擎-->下载中间件--->下载器 下载器发送请求,获取响应---->下载中间件---->引擎-- ...

  5. Lombok 使用详解,简化Java编程

    前言 在 Java 应用程序中存在许多重复相似的.生成之后几乎不对其做更改的代码,但是我们还不得不花费很多精力编写它们来满足 Java 的编译需求 比如,在 Java 应用程序开发中,我们几乎要为所有 ...

  6. Android DecorView 与 Activity 绑定原理分析

    一年多以前,曾经以为自己对 View 的绘制已经有了解了,事后发现也只是懂了些皮毛而已.经过一年多的实战,Android 和 Java 基础都有了提升,时机成熟了,是时候该去总结 View 的绘制流程 ...

  7. AE10.0在Visual Studio 2012下安装没有模板(转)

    转自百度经验: VS2012中丢失ArcGIS模板的解决方法 由于ArcGIS10.0(for .NET)默认是用VS2010作为开发工具的,所以在先安装VS2012后装ArcGIS10.0 桌面版及 ...

  8. LoadRunner中的90%响应时间

    LoadRunner中的90%响应时间是什么意思?这个值在进行性能分析时有什么作用? 为什么要有90%用户响应时间? 这个跟超女.舞林大会等比赛那样在比赛后都要去掉一个最高分一个最低分在取平均值有点类 ...

  9. Nginx热部署 平滑升级 日志切割

    1.重载 修改nginx配置文件之后,在不影响服务的前提下想加载最新的配置,就可以重载配置即可. 操作如下: 1)修改nginx配置文件 2)nginx -t     检查nginx文件语法是否有误 ...

  10. 23种GoF设计模式的分类

    GoF设计模式一共有23个.一般可以按目的和作用范围来进行划分,具体划分方法如下: 第一,这些模式按目的(即完成什么样任务)来划分为创建型.结构型和行为型这三种模式: 创建型:用来创建对象.单例.原型 ...