前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python折线图简单小实例

Python折线图简单小实例

作者头像
用户7010445
发布2020-03-03 14:27:59
5640
发布2020-03-03 14:27:59
举报

找到了一份非常有意思的python学习资料 Learning Python: Part 2 - Visualizing the NBA Draft。主要内容是探索1966到2014年NBA选秀的数据。数据集可以利用 Learning Python: Part 1- Scraping and Cleaning the NBA Draft 部分的内容获得,同时这部分内容也是非常好的python爬虫学习素材。 本文主要记录自己重复以上教程的笔记。

原文内容相对较长,自己将其分成几个部分分别记录

第一部分:折线图

导入需要用到的模块
代码语言:javascript
复制
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaboarn as sns
读入数据并整理成作图需要的格式

折线图用来展示每年所有参加选秀的运动员的赢球贡献值(Win shares Per 48 minutes)的平均值。横轴为年份,纵轴为赢球贡献值

代码语言:javascript
复制
draft_df = pd.read_csv("draft_data_1996_to_2014.csv",index_col=0)
#index_col参数的作用暂时还不太清楚
draft_df.head()

对于数据整理的简单理解 比如在我们自己的实验中,对实验材料进行三种不同的处理,每个处理三次重复,数据记录为

代码语言:javascript
复制
    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

现在我想通过折线图展示不同处理的变化趋势,纵坐标为每个处理的均值,原文提供了两种实现方式

第一种:利用列表生成式
代码语言:javascript
复制
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()函数
代码语言:javascript
复制
df.groupby("Treatment").Values.mean()

接下来直接利用groupby()函数获得需要的数据

代码语言:javascript
复制
WS48_yrly_avg = draft_df.groupby("Draft_Yr").WS_per_48.mean()
X_values = draft_df.Draft_Yr.unique()
Y_values = WS48_yrly_avg

绘图代码

代码语言:javascript
复制
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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一部分:折线图
  • 绘图代码
  • 结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档