找到了一份非常有意思的python学习资料 Learning Python: Part 2 - Visualizing the NBA Draft。主要内容是探索1966到2014年NBA选秀的数据。数据集可以利用 Learning Python: Part 1- Scraping and Cleaning the NBA Draft 部分的内容获得,同时这部分内容也是非常好的python爬虫学习素材。 本文主要记录自己重复以上教程的笔记。
原文内容相对较长,自己将其分成几个部分分别记录
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaboarn as sns
折线图用来展示每年所有参加选秀的运动员的赢球贡献值(Win shares Per 48 minutes)的平均值。横轴为年份,纵轴为赢球贡献值
draft_df = pd.read_csv("draft_data_1996_to_2014.csv",index_col=0)
#index_col参数的作用暂时还不太清楚
draft_df.head()
对于数据整理的简单理解 比如在我们自己的实验中,对实验材料进行三种不同的处理,每个处理三次重复,数据记录为
Treatment Values
0 A 1.1
1 A 1.2
2 A 1.0
3 B 2.2
4 B 2.4
5 B 2.5
6 C 3.6
7 C 3.8
8 C 3.9
现在我想通过折线图展示不同处理的变化趋势,纵坐标为每个处理的均值,原文提供了两种实现方式
df = pd.read_csv("example_data/example_data.csv")
Values_avg = [df[df["Treatment"] == yr ]["Values"].mean() for yr in df.Treatment.unique()]
Values_avg
df.groupby("Treatment").Values.mean()
接下来直接利用groupby()函数获得需要的数据
WS48_yrly_avg = draft_df.groupby("Draft_Yr").WS_per_48.mean()
X_values = draft_df.Draft_Yr.unique()
Y_values = WS48_yrly_avg
plt.figure(figsize=(12,9))
Out[33]: <matplotlib.figure.Figure at 0x2458ca59ac8>
title = ('Average Career Win Sahres Per 48 minutes by Draft Year (1966-2014)')
plt.title(title,fontsize=20)
Out[35]: Text(0.5,1,'Average Career Win Sahres Per 48 minutes by Draft Year (1966-2014)')
plt.ylabel('Win Shares Per 48 minutes',fontsize=18)
Out[36]: Text(0,0.5,'Win Shares Per 48 minutes')
plt.xlim(1966,2014.5)
Out[37]: (1966, 2014.5)
plt.ylim(0,0.08)
Out[38]: (0, 0.08)
plt.grid(axis='y',color="grey",linestyle='--',lw=0.5,alpha=0.5)
plt.tick_params(axis='both',labelsize=14)
import seaborn as sns
sns.despine(left=True,bottom=True)
plt.plot(X_values,Y_values)
Out[43]: [<matplotlib.lines.Line2D at 0x2458dc40cf8>]
plt.text(1966,-0.012,'The original content :http://savvastjortjoglou.com/nba-draft-part02-visualizing.html\nPorter: MingYan',fontsize=12)
Out[44]: Text(1966,-0.012,'The original content :http://savvastjortjoglou.com/nba-draft-part02-visualizing.html\nPorter: MingYan')
plt.savefig("Line_chart_1.png")
Line_chart_1.png