当前位置:   article > 正文

Python导入csv数据画对比柱状图_python导入csv数据画柱状图

python导入csv数据画柱状图

结果图:
在这里插入图片描述

csv文件数据:
在这里插入图片描述

利用pandas导入csv文件、matplotlib画柱状图
下面展示一些 内联代码片


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import sys
# 遇到数据中有中文的时候,一定要先设置中文字体
#plt.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
plt.rcParams['axes.unicode_minus'] = False

disktype = 'CLOUD_SSD'
env = 'LAN'
row = '100W'

def auto_data(rects):
    plt.bar_label(rects, fmt='%g', label_type='edge', size=10, family="Times new roman", padding=1)


#筛选出想要的列和数据
df = pd.read_csv('qps.csv')
df= df[(df['disktype'] == f'{disktype}') & (df['env'] == f'{env}') & (df['row'] == f'{row}') ]
df = df[['benchmode','threads', 'qps']]
df = df.sort_values(['benchmode','threads'],ascending=[False,True])
#print(df)


name_list = df.columns.tolist() # 获取该dataframe的属性名称(此处应该为benchmode,threads,qbs),此处已转化为list格式
print('name_list:',name_list)

#过滤出benchmode_type
benchmode_type = df[name_list[0]].drop_duplicates(keep='first', inplace=False).tolist()

#将threads、qps转化为int格式
df[name_list[1]] = df[name_list[1]].astype(int) # 转化为int
df[name_list[2]] = df[name_list[2]].astype(int) # 转化为int

#获取最大qpsY轴数值
max_Y = df[name_list[2]].max()

#将qps和threads变成数组
data_0 = df[df[name_list[0]] == benchmode_type[0]]  # 数据表1
data_1 = df[df[name_list[0]] == benchmode_type[1]]  # 数据表2
#print(data_0)
#print(data_1)
list_0 = np.array(data_0[name_list[2]]) # 读取threads数据
list_1 = np.array(data_1[name_list[2]]) # 读取qps
print(list_0)
print(list_1)

list_threads = list(set(df[name_list[1]])) # 读取threads的类型
list_threads.sort()
print(list_threads)   # 横坐标

length = len(list_0)  # 横坐标个数
x = np.arange(length)  # 横坐标范围

plt.figure()
total_width, n = 0.8, 2   # 柱状图总宽度,有几组数据
width = total_width / n   # 单个柱状图的宽度
x0 = x - 0.5 * width    # 第一组数据柱状图横坐标起始位置
x1 = x0 + width   # 第二组数据柱状图横坐标起始位置

plt.title(f"{env}_{disktype} QPS")    # 图标题
plt.xlabel(name_list[1])    # x轴标题
plt.ylabel(name_list[2])    # y轴标题
cm = plt.bar(x0, data_0[name_list[2]], width, label=benchmode_type[0])   # 画柱状图
auto_data(cm)
cm =plt.bar(x1, data_1[name_list[2]], width, label=benchmode_type[1])   # 画柱状图
auto_data(cm)

plt.xticks(x, list_threads)  # 用threads的类型替换横坐标x的值
plt.ylim(0,max_Y+max_Y*0.3) # y轴范围(0~20000)
# plt.yticks(np.linspace(0, 20000, 5))  # y轴刻度(0~20000,分成5刻度)

plt.legend()   # 给出图例
plt.show()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76

结果图:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/340178?site
推荐阅读
相关标签
  

闽ICP备14008679号