1 # 在numpy 里面有统计分析, 对数值型数据进行统计指标
 2 # np.max  np.min  np.mean np.std‘
 3 
 4 import pandas  as pd
 5 import numpy as np
 6 
 7 # 1、加载数据
 8 detail = pd.read_excel("../day05/meal_order_detail.xlsx")
 9 # print("detail :\n", detail)
10 print("detail 的类型:\n", type(detail))
11 print("detail 列索引名称:\n", detail.columns)
12 print("detail 的元素的数据类型:\n", detail.dtypes)
13 
14 # 在pandas里面对数值型数据进行统计分析
15 # 获取 amounts counts 的统计指标
16 print("获取最大值:\n",detail.loc[:,["amounts","counts"]].max())
17 print("获取最小值:\n",detail.loc[:,["amounts","counts"]].min())
18 print("获取均值:\n",detail.loc[:,["amounts","counts"]].mean())
19 print("获取中位数:\n",detail.loc[:,["amounts","counts"]].median())
20 print("获取标准差:\n",detail.loc[:,["amounts","counts"]].std())
21 print("获取方差:\n",detail.loc[:,["amounts","counts"]].var())
22 print("获取非空数据的数量:\n",detail.loc[:,["amounts","counts"]].count())
23 print("获取最大值的位置:\n",detail.loc[:,["amounts","counts"]].idxmax())  # np.argmax()
24 print("获取最小值的位置:\n",detail.loc[:,["amounts","counts"]].idxmin()) # np.argmin()
25 
26 
27 # 返回一个众数的dataframe
28 res = detail.loc[:,["amounts","counts"]].mode()
29 print("res: \n", res)
30 print("获取amounts众数\n",res["amounts"])
31 print("获取counts众数\n",res["counts"])
32 print("获取众数的类型\n",type(res))
33 # 返回一个 众数的 series
34 print("获取众数\n",detail.loc[:,"amounts"].mode())
35 
36 # 获取分位数
37 # 默认获取 50% 的分位数---即 中位数
38 print("获取分位数:\n", detail.loc[:, ["amounts", "counts"]].quantile())
39 # # 获取四分位数 --通过给q 传参来获取四分位数
40 print("获取分位数:\n", detail.loc[:, ["amounts", "counts"]].quantile(q=np.arange(0, 1 + 0.25, 0.25)))
41 
42 
43 # 获取describe 统计分析
44 # 返回8中结果
45 # 非空数量
46 # 均值
47 # 标准差
48 # 最小值
49 # 分位数
50 # 最大值
51 print("获取describe 统计分析:\n", detail.loc[:, ["amounts", "counts"]].describe())
52 
53 # 也可以对非数值型数据进行统计分析 ---使用describe对于非数值型数据进行统计分析
54 # 返回4种结果
55 # 非空数据的数量
56 # 去重之后的数据数量
57 # 众数
58 # 众数出现的次数
59 # 在统计分析之前将数据转化为类别型数据---category
60 # 可以使用astype 来修改数据类型
61 detail.loc[:, "dishes_name"] = detail.loc[:, "dishes_name"].astype("category")
62 # #
63 # # #
64 print("修改数据类型之后的detail :\n", detail.dtypes)
65 # #
66 print("获取非数值型数据的describe 统计分析:\n", detail.loc[:, "dishes_name"].describe())
67 
68 # 1、利用统计分析,以及dataframe的删除方式,删除detail里面数据全是空的列
69 # 2、梳理pandas的xmind
70 # 3、掌握numpy、matplotlib、pandas 的所学操作