Python折线图简单小实例
- 2020 年 3 月 3 日
- 笔记
找到了一份非常有意思的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