Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建字典数据图?_Python_Dictionary_Graph - Fatal编程技术网

Python 创建字典数据图?

Python 创建字典数据图?,python,dictionary,graph,Python,Dictionary,Graph,我对python真的是个新手,只是想在python中获得一些基本的实践。我从今天开始创建基本函数,并想做一个与之类似的项目 我想使用一个不同的dataset()来执行与上面链接的项目相同的代码。我想用同样的代码来计算一支球队赢得超级碗的次数。我的代码运行得很好,但现在我对绘制这些数据感到好奇。我对大多数图形使用matplotlib.pyplot,但这不起作用,因为我使用的是数据字典。我如何绘制这些数据,可能是团队在一个轴上,而他们的胜利在另一个轴上?代码如下: # Import pandas

我对python真的是个新手,只是想在python中获得一些基本的实践。我从今天开始创建基本函数,并想做一个与之类似的项目

我想使用一个不同的dataset()来执行与上面链接的项目相同的代码。我想用同样的代码来计算一支球队赢得超级碗的次数。我的代码运行得很好,但现在我对绘制这些数据感到好奇。我对大多数图形使用matplotlib.pyplot,但这不起作用,因为我使用的是数据字典。我如何绘制这些数据,可能是团队在一个轴上,而他们的胜利在另一个轴上?代码如下:

 # 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()
这是上面代码生成的图形。您可能希望缩短键的值,使其看起来更好


谢谢!这就是我要找的!谢谢!这就是我要找的!谢谢!这是我想要的非常好的形象化。谢谢!这是我想要的非常好的形象化。