请问图中的对排名相同的大学,如排名均为“201~205“,处理后排名分别为201,202等以及同一个国家进入榜单的学校排名这两个要求该如何处理?用越基础越简单的方法越好
第一个问题,排名相同的大学可以用计数,如果有5所大学的排名都是201-205,分别设置为201、202、203、204和205。
下一个问题,对于同一个国家进入榜单的学校排名,先对所有学校按照排名进行排序,再遍历列表,对于同一个国家的学校,将它们的排名设置为相同的值,哈希表能够实现这种需求,将国家作为键,将该国家的排名作为值。
结果:
4. 用柱状图绘制排名前10的分布情况,横坐标有国家名,纵坐标为数量。
结果:
5、显示拥有星巴克门店数量排名前10的城市。
结果:
6.绘制星巴克门店数前10的城市分布柱状图,横坐标有城市名,纵坐标为数量。
结果:
7.按照星巴克门店在中国的分布情况,统计排名前10的城市。
结果:
8.绘制柱状图,横坐标有城市名,纵坐标为数量。
结果 :
9、用饼状图显示星巴克门店的经营方式有几种。(ownership)
结果:
源文件:
1.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
shuju=pd.read_csv('directory.csv')
print(shuju)
2.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
shuju=pd.read_csv('directory.csv')
A=shuju['Brand'].value_counts()
print("星巴克旗下品牌有:\n%s"%A)
3.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
shuju=pd.read_csv('directory.csv')
B=len(shuju['Country'].unique())
print("全世界一共有%d个国家开设了星巴克门店。"%B)
C=shuju['Country'].value_counts()
print("排名前十的国家和数量为:\n%s"%C[:10])
print("排名后十的国家和数量为:\n%s"%C[-10:])
4.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rcParams["font.family"]=['SimHei']
plt.rcParams['axes.unicode_minus']=False
shuju=pd.read_csv('directory.csv')
C=shuju['Country'].value_counts()
plt.figure(figsize=(10,5))
keduxian = list(C[:10].index)
a="国家"
b="数量"
c="星巴克门店数量排名前10的国家"
plt.xlabel(a)
plt.ylabel(b)
plt.title(c)
plt.bar([i for i in keduxian], C[:10])
plt.show()
5.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
shuju=pd.read_csv('directory.csv')
D= shuju['City'].value_counts()
print(D[:10])
6.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rcParams["font.family"]=['SimHei']
plt.rcParams['axes.unicode_minus']=False
shuju=pd.read_csv('directory.csv')
D= shuju['City'].value_counts()
plt.figure(figsize=(10,5))
keduxian1 = list(D[:10].index)
d="城市"
e="数量"
f="星巴克门店数前10的城市"
plt.xlabel(d)
plt.ylabel(e)
plt.title(f)
plt.bar([i for i in keduxian1], D[:10])
plt.show()
7.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
shuju=pd.read_csv('directory.csv')
china = shuju[shuju['Country'] == 'CN']
chinacity=china['City'].value_counts()
print("排名前十的中国城市和数量为:\n%s"%chinacity[:10])
8.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rcParams["font.family"]=['SimHei']
plt.rcParams['axes.unicode_minus']=False
shuju=pd.read_csv('directory.csv')
china = shuju[shuju['Country'] == 'CN']
chinacity=china['City'].value_counts()
plt.figure(figsize=(10,5))
keduxian2 = list(chinacity[:10].index)
plt.xlabel('城市')
plt.ylabel('门店数量')
plt.title('中国星巴克门店数量排名前10的城市')
plt.bar([i for i in keduxian2], chinacity[:10])
plt.show()
9.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rcParams["font.family"]=['SimHei']
plt.rcParams['axes.unicode_minus']=False
shuju=pd.read_csv('directory.csv')
F=shuju['Ownership Type'].value_counts()
plt.figure(figsize=(10,7))
plt.pie(F,labels=F.index)
plt.title("星巴克门店的经营方式")
plt.show()
自己也是新手,英语不好,名称定义中文拼音。
我可以通过Python编写代码来解决该问题。
对于将相同排名的大学改成排名分别为201、202等,可以按照以下步骤操作:
以下是一组可能实现该方案的Python代码:
# 读取数据
data = [
["学校A", "201-205"],
["学校B", "201-205"],
["学校C", "206-210"],
["学校D", "211-215"],
["学校E", "206-210"]
]
# 建立排名字典
rank_dict = {}
unique_ranks = set()
for row in data:
rank_range = row[1]
ranks = list(map(int, rank_range.split("-")))
unique_ranks.update(ranks)
for i, rank in enumerate(sorted(unique_ranks)):
rank_dict[rank] = i + 1
# 替换排名
for row_idx, row in enumerate(data):
rank_range = row[1]
ranks = list(map(int, rank_range.split("-")))
new_ranks = [rank_dict[rank] for rank in ranks]
new_rank_range = f"{min(new_ranks)}-{max(new_ranks)}"
data[row_idx][1] = new_rank_range
# 输出替换后的数据
print(data)
对于处理同一个国家进入榜单的学校排名,可以提取各个国家的学校,为每个国家的学校编号添加一个"国家+排名"的组合值,然后再将该值替换原来的排名。以下是一组可能实现该方案的Python代码:
# 读取数据
data = [
["中国", "学校A", "201"],
["美国", "学校B", "202"],
["美国", "学校C", "203"],
["俄罗斯", "学校D", "204"],
["美国", "学校E", "205"],
["俄罗斯", "学校F", "206"]
]
# 建立国家字典
country_dict = {}
for row in data:
country = row[0]
if country not in country_dict:
country_dict[country] = []
country_dict[country].append(row)
# 替换排名
for country, country_data in country_dict.items():
rank_dict = {}
rank_idx = 1
for row in country_data:
rank = row[2]
rank_str = f"{country}{rank}"
if rank_str not in rank_dict:
rank_dict[rank_str] = rank_idx
rank_idx += 1
row[2] = rank_str
for row in country_data:
rank_str = row[2]
new_rank = rank_dict[rank_str]
row[2] = str(new_rank)
# 输出替换后的数据
new_data = []
for country_data in country_dict.values():
new_data += country_data
print(new_data)