Python 创建字典数据图?
我对python真的是个新手,只是想在python中获得一些基本的实践。我从今天开始创建基本函数,并想做一个与之类似的项目 我想使用一个不同的dataset()来执行与上面链接的项目相同的代码。我想用同样的代码来计算一支球队赢得超级碗的次数。我的代码运行得很好,但现在我对绘制这些数据感到好奇。我对大多数图形使用matplotlib.pyplot,但这不起作用,因为我使用的是数据字典。我如何绘制这些数据,可能是团队在一个轴上,而他们的胜利在另一个轴上?代码如下:Python 创建字典数据图?,python,dictionary,graph,Python,Dictionary,Graph,我对python真的是个新手,只是想在python中获得一些基本的实践。我从今天开始创建基本函数,并想做一个与之类似的项目 我想使用一个不同的dataset()来执行与上面链接的项目相同的代码。我想用同样的代码来计算一支球队赢得超级碗的次数。我的代码运行得很好,但现在我对绘制这些数据感到好奇。我对大多数图形使用matplotlib.pyplot,但这不起作用,因为我使用的是数据字典。我如何绘制这些数据,可能是团队在一个轴上,而他们的胜利在另一个轴上?代码如下: # Import pandas
# Import pandas
import pandas as pd
# Import Twitter data as DataFrame: df
df = pd.read_csv("https://raw.githubusercontent.com/veeralakrishna/DataCamp-Portfolio-Project-Solutions--Python/master/TV%2C%20Halftime%20Shows%2C%20and%20the%20Big%20Game/datasets/super_bowls.csv")
# Define count_entries()
def count_winners(df, col_name='team_winner'):
"""Return a dictionary with counts of
wins as value for each team."""
# Initialize an empty dictionary: cols_count
wins_count = {}
# Extract column from DataFrame: col
col = df[col_name]
# Iterate over the column in DataFrame
for entry in col:
# If entry is in wins_count, add 1
if entry in wins_count.keys():
wins_count[entry] += 1
# Else add the entry to wins_count, set the value to 1
else:
wins_count[entry] = 1
# Return the cols_count dictionary
return wins_count
这将返回我要绘制的字典:
{'Philadelphia Eagles': 1, 'New England Patriots': 5, 'Denver Broncos': 3, 'Seattle Seahawks': 1, 'Baltimore Ravens': 2, 'New York Giants': 4, 'Green Bay Packers': 4, 'New Orleans Saints': 1, 'Pittsburgh Steelers': 6, 'Indianapolis Colts': 1, 'Tampa Bay Buccaneers': 1, 'St. Louis Rams': 1, 'Dallas Cowboys': 5, 'San Francisco 49ers': 5, 'Washington Redskins': 3, 'Chicago Bears': 1, 'Los Angeles Raiders': 1, 'Oakland Raiders': 2, 'Miami Dolphins': 2, 'Baltimore Colts': 1, 'Kansas City Chiefs': 1, 'New York Jets': 1}
任何建议都将不胜感激 没有理由不能使用.keys()和.values()绘制字典。下面是一个显示水平条形图的示例(我选择了这个方向,以便团队名称在Y轴上可读)。它基于Pythonspot.com上的一个简单示例
import matplotlib.pyplot as plt
import numpy as np
def plot_wins(data):
teams = data.keys()
wins = data.values()
y_pos = np.arange(len(teams))
plt.barh(y_pos, wins, align='center', alpha=0.5)
plt.yticks(y_pos, teams)
plt.xlabel('Wins')
plt.title('Superbowl Wins by Team')
plt.tight_layout()
plt.show()
plot_wins({ 'Philadelphia Eagles': 1, 'New England Patriots': 5, ..etc..})
没有理由不能使用.keys()和.values()绘制字典。下面是一个显示水平条形图的示例(我选择了这个方向,以便团队名称在Y轴上可读)。它基于Pythonspot.com上的一个简单示例
import matplotlib.pyplot as plt
import numpy as np
def plot_wins(data):
teams = data.keys()
wins = data.values()
y_pos = np.arange(len(teams))
plt.barh(y_pos, wins, align='center', alpha=0.5)
plt.yticks(y_pos, teams)
plt.xlabel('Wins')
plt.title('Superbowl Wins by Team')
plt.tight_layout()
plt.show()
plot_wins({ 'Philadelphia Eagles': 1, 'New England Patriots': 5, ..etc..})
如您所述,使用matplotlib是解决此问题的最佳方法 Dict包含键值,所以您只需要一种方法来迭代所有键值,并将其用作x值,Dict值用作y值。Python有许多内置模块可以帮助实现这一点
zip
-将元素按拉链拉入,使每个键、值成为例如('New England Patriots',5)
将matplotlib.pylab作为plt导入
d={费城鹰队:1,“新英格兰爱国者队”:5,“丹佛野马队”:3,“西雅图海鹰队”:1,“巴尔的摩乌鸦队”:2,“纽约巨人队”:4,“绿湾包装工队”:4,“新奥尔良圣徒队”:1,“匹兹堡钢铁队”:6,“印第安纳波利斯小马队”:1,“坦帕湾海盗队”:1,“圣路易斯公羊队”:1,“达拉斯牛仔队”:5,“旧金山49人队”:5,“华盛顿队”红人队:3支,‘芝加哥熊队’:1支,‘洛杉矶突击队’:1支,‘奥克兰突击队’:2支,‘迈阿密海豚队’:2支,‘巴尔的摩小马队’:1支,‘堪萨斯城酋长队’:1支,‘纽约喷气机队’:1}
lists=sorted(d.items())#按键排序,返回元组列表
#您可以使用下面的方法按值排序,因此图形将以递增的梯度显示
#列表=已排序(d.items(),key=lambda kv:kv[1],reverse=True)
x、 y=zip(*列表)#将成对列表解压为两个元组
plt.xlabel(“团队”)
plt.ylabel('Wins')
平面图(x,y)
plt.xticks(x,旋转=垂直)
plt.show()
这是上面代码生成的图形。您可能希望缩短键的值,使其看起来更好
如您所述,使用matplotlib是解决此问题的最佳方法 Dict包含键和值,所以您只需要一种方法来迭代所有键,并将其用作x值,Dict值用作y值。Python有很多内置的模块可以帮助您实现这一点
zip
-将元素按拉链拉入,使每个键、值成为例如('New England Patriots',5)
将matplotlib.pylab作为plt导入
d={费城鹰队:1,“新英格兰爱国者队”:5,“丹佛野马队”:3,“西雅图海鹰队”:1,“巴尔的摩乌鸦队”:2,“纽约巨人队”:4,“绿湾包装工队”:4,“新奥尔良圣徒队”:1,“匹兹堡钢铁队”:6,“印第安纳波利斯小马队”:1,“坦帕湾海盗队”:1,“圣路易斯公羊队”:1,“达拉斯牛仔队”:5,“旧金山49人队”:5,“华盛顿队”红人队:3支,‘芝加哥熊队’:1支,‘洛杉矶突击队’:1支,‘奥克兰突击队’:2支,‘迈阿密海豚队’:2支,‘巴尔的摩小马队’:1支,‘堪萨斯城酋长队’:1支,‘纽约喷气机队’:1}
lists=sorted(d.items())#按键排序,返回元组列表
#您可以使用下面的方法按值排序,因此图形将以递增的梯度显示
#列表=已排序(d.items(),key=lambda kv:kv[1],reverse=True)
x、 y=zip(*列表)#将成对列表解压为两个元组
plt.xlabel(“团队”)
plt.ylabel('Wins')
平面图(x,y)
plt.xticks(x,旋转=垂直)
plt.show()
这是上面代码生成的图形。您可能希望缩短键的值,使其看起来更好
谢谢!这就是我要找的!谢谢!这就是我要找的!谢谢!这是我想要的非常好的形象化。谢谢!这是我想要的非常好的形象化。