一、代码中用到的数据截图
二、代码及结果
import pandas as pd
import numpy as np
from collections import Counter
import matplotlib.pyplot as plt
# 读取Excel文件
df = pd.read_excel('analyse.xlsx')
# # 提取某一行数据
# row_data = df.iloc[row_index]
# 提取某几列数据
# col_data = df.loc[:, ['col1', 'col2', 'col3']]
# col_data = df.loc[:, ['BSName']]
col_data = df['BSName'].tolist()
# print(col_data)
new_lst = list(set(col_data))
print(new_lst)
count_dict = Counter(col_data)
# print(count_dict)
# count_dict = {}
# for element in col_data:
# if element in count_dict:
# count_dict[element] += 1
# else:
# count_dict[element] = 1
# print(count_dict)
# # # 将字典拆分为键和值的列表
# keys = Counter.keys()
# values = Counter.values()
# # # 分别输出键和值的列表
# print ("keys : ", str(keys))
# print ("values : ", str(values))
BSName = [key for key in Counter(col_data)]
print(BSName)
my_dict = Counter(col_data)
number = [value for value in my_dict.values()]
print(number)
# my_list.sort(key=None,reverse=False)
# my_list1.sort(key=None,reverse=False)
# print(BSName)
# print(number)
# # 以鞋子品牌和价格为例,创建两个列表
# shoes = ["huili", "lining", "anta", "tebu"]
# price = [20, 10, 50, 40]
# 将基站名称跟数量合在一起
BSName_number = zip(BSName, number)
print(BSName_number)
# 使用list()转为列表形式
# print(list(BSName_number))
# 按x[1]也就是按数量排序,若是x[0]则是按基站名称排序
# 若是(x[1],x[0]),则表示先按数量再按基站名称排序
sorted_BSName_number= sorted(BSName_number, key=lambda x: x[1])
print(sorted_BSName_number)
# 将排序好的列表分出来并打印
result = zip(*sorted_BSName_number)
sorted_BSName, sorted_number = [list(x) for x in result]
print(sorted_BSName)
print(sorted_number)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 创建条形图
plt.bar(sorted_BSName, sorted_number)
# 添加标题和标签
plt.title('Bar Chart')
plt.xlabel('BSName')
plt.ylabel('Number')
# 显示图形
plt.show()