Python折线图简单小实例

找到了一份非常有意思的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  
第二种:直接利用pandas的groupby()函数
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.htmlnPorter: MingYan',fontsize=12)  Out[44]: Text(1966,-0.012,'The original content :http://savvastjortjoglou.com/nba-draft-part02-visualizing.htmlnPorter: MingYan')    plt.savefig("Line_chart_1.png")  

结果

Line_chart_1.png