1.给定数据文件 vgsales.csv,文件中存储了游戏软件的销售数据。Platform 列数 据表示游戏软件适用的平台,编写程序实现:通过饼图显示各平台游戏软件数量的分 布情况(注意只统计数量排名前 5的平台),示例如图所示。(100 分)用三种方式写一下
时间: 2024-03-17 09:43:01 浏览: 95
vgsales.csv
好的,下面分别用三种方式来实现这个问题。
### 方法一:使用pandas和matplotlib库
这是最常用和最简单的方法,只需要导入pandas和matplotlib库,再使用它们提供的函数就可以完成任务。以下是代码:
``` python
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据文件
data = pd.read_csv('vgsales.csv')
# 统计平台数量
platform_count = data['Platform'].value_counts().head(5)
# 绘制饼图
plt.pie(platform_count, labels=platform_count.index, autopct='%1.1f%%')
plt.title('Top 5 Platforms for Video Games')
plt.show()
```
### 方法二:使用numpy和matplotlib库
除了pandas库,还可以使用它所依赖的numpy库来实现。以下是代码:
``` python
import numpy as np
import matplotlib.pyplot as plt
# 读取数据文件
data = np.genfromtxt('vgsales.csv', delimiter=',', skip_header=1, usecols=2, dtype='str')
# 统计平台数量
platform, count = np.unique(data, return_counts=True)
platform_count = dict(zip(platform, count))
platform_count = dict(sorted(platform_count.items(), key=lambda x: x[1], reverse=True)[:5])
# 绘制饼图
plt.pie(platform_count.values(), labels=platform_count.keys(), autopct='%1.1f%%')
plt.title('Top 5 Platforms for Video Games')
plt.show()
```
### 方法三:使用纯Python代码
在没有任何库的情况下,也可以使用纯Python代码来实现这个问题。以下是代码:
``` python
# 读取数据文件
with open('vgsales.csv', 'r') as f:
f.readline() # 跳过第一行
data = [line.split(',')[2] for line in f]
# 统计平台数量
platform_count = {}
for platform in data:
if platform not in platform_count:
platform_count[platform] = 0
platform_count[platform] += 1
platform_count = dict(sorted(platform_count.items(), key=lambda x: x[1], reverse=True)[:5])
# 绘制饼图
plt.pie(platform_count.values(), labels=platform_count.keys(), autopct='%1.1f%%')
plt.title('Top 5 Platforms for Video Games')
plt.show()
```
以上是三种实现方式,它们的原理都是一样的,只是使用的库或者代码实现略有不同。
阅读全文