根据excel文件中某列数据画图

根据excel文件中某列数据画图

问题描述:

将订单总额划分在不同的区间,即0~50,50~100依次类推,画柱状图得到不同区间订单的个数

img

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_excel('data.xlsx') ##默认读取sheet = 0的
li = df["订单总额"].tolist()
print(li)

dic = {
    (0,50):0,
    (50,100):0
}
for v in li:
    for k in dic:
        if k[0]<=v<k[1]:
            dic[k] += 1
# 这两行代码解决 plt 中文显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

waters = ('0-50', '50-100')
buy_number = list(dic.values())

plt.bar(waters, buy_number)
plt.title('title')

plt.show()

用 pandas 读取excel文件中某列。
用字典统计不同区间订单的个数。
然后用matplotlib.pyplot画柱状图

img

img

以50为区间 ,改一下就好

import pandas as pd
import matplotlib.pyplot as plt
import math
df = pd.read_excel('data.xlsx') ##默认读取sheet = 0的
li = df["订单总额"].tolist()
print(li)
p = 50 #以50为区间
kli = [0] * math.ceil(max(li)/p)
for v in li:
    kli[v//p] += 1
# 这两行代码解决 plt 中文显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

waters = [f'{i*p}-{i*p+p}' for i in range(len(kli))]
buy_number = kli
plt.bar(waters, buy_number)
plt.title('title')

plt.show()


题主如果想用python来做的话,建议采用pandas+matplotlib来处理