import pandas as pd
import matplotlib.pyplot as plt
import math
import numpy as np
#sales[sales.isna().values==True]
def pin_lv(arr):
return arr.count()/sales.describe().loc['count']
sale_path = 'E:\phil\workspace\selfwork\python\python practice of data analysis and mining\chapter3\catering_sale.xls'
sales = pd.read_excel(sale_path, index_col='date')
sales = sales.dropna()
sales_describe = sales.describe()
# 极差
sales_describe.loc['ji_cha'] = sales_describe.loc['max'] - sales_describe.loc['min']
fen_zu_shu = math.ceil(sales_describe.loc['ji_cha'] / 1000)
# 分组间隔
list_fen_zu = []
for index in range(fen_zu_shu + 1):
list_fen_zu.append(index * 1000)
fen_zu_qu_jian = pd.cut(sales['sale'], list_fen_zu)
group = sales.groupby(by=fen_zu_qu_jian)
group = group.agg(['count', 'sum', pin_lv])
# 删除列的第一个分组sales
group.columns = group.columns.droplevel()
group['lei_ji'] = group['pin_lv'].cumsum(skipna=True)
# 填充nan的值,向前填充
group['lei_ji'] = group['lei_ji'].fillna(method='ffill')
group.plot.bar(logy=True, figsize=[12, 6], rot=15)
plt.show()