describe函数
| """ |
| describe() |
| count 该列的非NaN的个数 |
| mean 平均值 |
| std 标准差 |
| min 最小值 |
| 25% 1/4分位数 |
| 50% 2/4分位数 |
| 75% 3/4分位数 |
| max 最大值 |
| 其他 |
| count 统计个数 |
| sum 求和 |
| mean 求平均值 |
| mad 求平均绝对方差 |
| median 求中位数 |
| min 最小值 |
| max 最大值 |
| argmin 最小值的索引位置 |
| argmax 最大值的索引位置 |
| idxmin 最小值的行索引 |
| idxmax 最大值的行索引 |
| mode 众数 |
| abs 绝对值 |
| prod 乘积 |
| """ |
| |
| path = r"C:\work\python\pandas_files\数据统计.xlsx" |
| data = pd.read_excel(path) |
| print(data) |
output
| 序号 姓名 性别 语文 数学 英语 |
| 0 1 张三 男 89 60 88 |
| 1 2 李四 女 60 71 98 |
| 2 3 王五 男 73 84 68 |
| 3 4 小孙 男 85 96 96 |
| 4 5 小刘 女 70 63 97 |
| 5 6 小赵 女 63 63 91 |
| # 显示整个表的数值列的描述统计信息 |
| b = data.describe() |
| print(b) |
output
| 序号 语文 数学 英语 |
| count 6.000000 6.000000 6.000000 6.000000 |
| mean 3.500000 73.333333 72.833333 89.666667 |
| std 1.870829 11.639015 14.302680 11.290114 |
| min 1.000000 60.000000 60.000000 68.000000 |
| 25 |
| 50 |
| 75 |
| max 6.000000 89.000000 96.000000 98.000000 |
| # 显示语文的描述统计信息 |
| b = data['语文'].describe() |
| print(b) |
output
| count 6.000000 |
| mean 73.333333 |
| std 11.639015 |
| min 60.000000 |
| 25 |
| 50 |
| 75 |
| max 89.000000 |
| Name: 语文, dtype: float64 |
| |
| b = data['语文'].max() |
| print(b) |
output
| # 每一列的最大值 |
| b = data.max(numeric_only=True) |
| print(b) |
output
| 序号 6 |
| 语文 89 |
| 数学 96 |
| 英语 98 |
| dtype: int64 |
| # 设置索引列 |
| data.set_index('姓名', inplace=True) |
| print(data) |
output
| 序号 性别 语文 数学 英语 |
| 姓名 |
| 张三 1 男 89 60 88 |
| 李四 2 女 60 71 98 |
| 王五 3 男 73 84 68 |
| 小孙 4 男 85 96 96 |
| 小刘 5 女 70 63 97 |
| 小赵 6 女 63 63 91 |
| |
| # 最大值索引位置 |
| b = data['语文'].argmax() |
| print(b) |
output
| # 最大值行索引 |
| c = data['语文'].idxmax() |
| print(c) |
output
分组
| path = r"C:\work\python\pandas_files\分组.xlsx" |
| data = pd.read_excel(path) |
| print(data) |
output
| 学号 时间 姓名 班级 性别 数学 语文 英语 |
| 0 A001 2020-05-01 17:00:00 丁智敏 1班 女 54 34 51 |
| 1 A002 2020-05-02 18:00:00 李平平 3班 女 68 48 41 |
| 2 A003 2020-05-02 09:00:00 张伊 2班 女 32 65 40 |
| 3 A004 2020-05-01 08:00:00 王刚 4班 男 70 50 37 |
| 4 A005 2020-05-01 17:00:00 王松 3班 男 59 55 39 |
| 5 A006 2020-05-02 18:00:00 卢海军 2班 男 56 40 39 |
| 6 A007 2020-05-01 08:00:00 李永兴 1班 男 43 53 42 |
| 7 A008 2020-05-02 09:00:00 王硕 4班 女 68 68 69 |
| 8 A009 2020-05-01 17:00:00 李超 3班 男 38 35 51 |
| 9 A010 2020-05-02 18:00:00 张荣耀 1班 男 67 65 36 |
| |
| |
| b = data.\ |
| groupby(data.index % 2 == 0)[['数学', '语文', '英语']].\ |
| mean() |
| print(b) |
output
| 数学 语文 英语 |
| False 65.8 54.2 44.4 |
| True 45.2 48.4 44.6 |
| # 按照索引平分成两组,求各科成绩的总和 |
| # 得到总记录数 |
| z = len(data) |
| b = data.groupby(data.index > z)[['数学', '语文', '英语']].sum() |
| print(b) |
output
| 数学 语文 英语 |
| False 339 292 247 |
| True 216 221 198 |
| # 按照 姓 进行分组 |
| x = data['姓名'].str[0] |
| b = data.groupby(x)[['数学', '语文', '英语']].mean() |
| print(b) |
output
| 数学 语文 英语 |
| 姓名 |
| 丁 54.000000 34.000000 51.000000 |
| 卢 56.000000 40.000000 39.000000 |
| 张 49.500000 65.000000 38.000000 |
| 李 49.666667 45.333333 44.666667 |
| 王 65.666667 57.666667 48.333333 |
| |
| |
| x = data['姓名'].str[0] |
| x1 = data['姓名'].str[1:] |
| b = data.groupby([x, x1])[['数学', '语文', '英语']].mean() |
| print(b) |
output
| 数学 语文 英语 |
| 姓名 姓名 |
| 丁 智敏 54.0 34.0 51.0 |
| 卢 海军 56.0 40.0 39.0 |
| 张 伊 32.0 65.0 40.0 |
| 荣耀 67.0 65.0 36.0 |
| 李 平平 68.0 48.0 41.0 |
| 永兴 43.0 53.0 42.0 |
| 超 38.0 35.0 51.0 |
| 王 刚 70.0 50.0 37.0 |
| 松 59.0 55.0 39.0 |
| 硕 68.0 68.0 69.0 |
| |
| # 按照班级分组 |
| b = data.groupby("班级")[['数学', '语文', '英语']].mean() |
| print(b) |
output
| 数学 语文 英语 |
| 班级 |
| 1班 54.666667 50.666667 43.000000 |
| 2班 44.000000 52.500000 39.500000 |
| 3班 55.000000 46.000000 43.666667 |
| 4班 69.000000 59.000000 53.000000 |
| |
| # 按照1班2班分组 |
| tj = (data.班级 == '1班') | (data.班级 == '2班') |
| b = data.groupby(tj)[['数学', '语文', '英语']].mean() |
| print(b) |
output
| 数学 语文 英语 |
| 班级 |
| False 60.6 51.2 47.4 |
| True 50.4 51.4 41.6 |
| # 使用 isin 函数完成 |
| b = data.groupby(data.班级.isin(['1班', '2班']))[['数学', '语文', '英语']].mean() |
| print(b) |
output
| 数学 语文 英语 |
| 班级 |
| False 60.6 51.2 47.4 |
| True 50.4 51.4 41.6 |
| # 按照年进行分组 |
| b = data.groupby(data.时间.dt.year)[['数学', '语文', '英语']].mean() |
| print(b) |
output
| 数学 语文 英语 |
| 时间 |
| 2020 55.5 51.3 44.5 |
| |
| |
| b = data.groupby([data.时间.dt.year, data.时间.dt.month])[['数学', '语文', '英语']].sum() |
| print(b) |
output
| 数学 语文 英语 |
| 时间 时间 |
| 2020 5 555 513 445 |
| |
| |
| b = data.groupby(data.时间.dt.hour)[['数学', '语文', '英语']].sum() |
| print(b) |
| |
| |
| |
| |
| |
| |
| |
output
| 数学 语文 英语 |
| 时间 |
| 8 113 103 79 |
| 9 100 133 109 |
| 17 151 124 141 |
| 18 191 153 116 |
| |
数据透视表
| path = r"C:\work\python\pandas_files\透视.xlsx" |
| data = pd.read_excel(path) |
| print(data) |
output
| 日期 部门 销售人员 所属区域 数量 金额 成本 |
| 0 2019-01-01 销售 李平平 湖北 16 7 8 |
| 1 2019-01-02 销售 李平平 湖北 40 8 3 |
| 2 2019-01-03 销售 李平平 湖北 20 6 7 |
| 3 2019-01-04 销售 李平平 湖北 20 7 5 |
| 4 2019-01-05 销售 李平平 湖北 16 6 6 |
| ... ... .. ... ... ... .. .. |
| 1215 2022-04-30 财务 熊牧 山东 250 4 8 |
| 1216 2022-05-01 客服 赵温江 山东 2200 4 8 |
| 1217 2022-05-02 客服 赵温江 山东 1400 3 3 |
| 1218 2022-05-03 客服 赵温江 四川 3500 7 3 |
| 1219 2022-05-04 客服 赵温江 四川 2200 4 4 |
| |
| [1220 rows x 7 columns] |
| |
| piv = pd.pivot_table(data, index=['部门', '销售人员'], values=['数量', '金额', '成本']) |
| print(piv) |
output
| 成本 数量 金额 |
| 部门 销售人员 |
| 办公室 郑浪 5.657143 908.285714 5.714286 |
| 客服 蒋波 5.500000 659.401639 5.377049 |
| 赵温江 5.279412 1108.073529 5.735294 |
| 财务 冯文 5.490323 284.264516 5.793548 |
| 熊牧 5.491525 482.423729 5.559322 |
| 销售 李平平 5.472906 112.679803 5.349754 |
| 王松 5.444640 117.539543 5.604569 |
| 郑浪 4.777778 1636.666667 5.444444 |
| |
| piv = pd.pivot_table(data |
| ,index=['部门', '销售人员'] |
| ,values=['数量', '金额', '成本'] |
| ,columns=['所属区域']) |
| print(piv) |
output
| 成本 数量 \ |
| 所属区域 四川 山东 河北 河南 湖北 四川 |
| 部门 销售人员 |
| 办公室 郑浪 5.090909 NaN 6.500000 5.454545 6.222222 1160.000000 |
| 客服 蒋波 6.352941 5.000000 5.923077 5.121951 5.437500 869.235294 |
| 赵温江 5.166667 6.000000 5.545455 4.888889 5.066667 1419.000000 |
| 财务 冯文 5.609756 5.692308 5.176471 5.285714 5.714286 286.487805 |
| 熊牧 6.200000 5.368421 NaN 5.833333 4.750000 540.800000 |
| 销售 李平平 5.340909 5.470588 5.263158 5.750000 5.571429 110.193182 |
| 王松 5.631068 5.127273 5.360000 5.355769 5.403101 115.014563 |
| 郑浪 4.750000 6.000000 NaN NaN 4.500000 830.000000 |
| |
| 金额 \ |
| 所属区域 山东 河北 河南 湖北 四川 |
| 部门 销售人员 |
| 办公室 郑浪 NaN 945.000000 1270.909091 141.111111 5.818182 |
| 客服 蒋波 250.000000 364.307692 781.365854 586.416667 5.470588 |
| 赵温江 1310.500000 1325.181818 637.111111 1103.333333 4.916667 |
| 财务 冯文 384.615385 354.882353 243.224490 267.542857 5.829268 |
| 熊牧 499.342105 NaN 507.000000 175.000000 5.400000 |
| 销售 李平平 99.294118 66.526316 67.863636 206.828571 5.420455 |
| 王松 87.545455 145.986667 130.423077 107.434109 5.669903 |
| 郑浪 500.000000 NaN NaN 2727.500000 5.250000 |
| |
| |
| ... |
| 熊牧 5.684211 NaN 5.083333 6.000000 |
| 销售 李平平 5.176471 5.736842 5.363636 5.028571 |
| 王松 5.672727 5.386667 5.682692 5.534884 |
| 郑浪 8.000000 NaN NaN 5.000000 |
| |
| piv = pd.pivot_table(data |
| ,index=['部门', '销售人员'] |
| ,values=['数量', '金额', '成本'] |
| ,aggfunc='sum') |
| print(piv) |
output
| 成本 数量 金额 |
| 部门 销售人员 |
| 办公室 郑浪 198 31790 200 |
| 客服 蒋波 671 80447 656 |
| 赵温江 359 75349 390 |
| 财务 冯文 851 44061 898 |
| 熊牧 324 28463 328 |
| 销售 李平平 1111 22874 1086 |
| 王松 3098 66880 3189 |
| 郑浪 43 14730 49 |
| |
| |
| piv = pd.pivot_table(data |
| ,index=['部门', '销售人员'] |
| ,values=['数量', '金额', '成本'] |
| ,aggfunc=['sum', 'mean', 'count']) |
| print(piv) |
output
| sum mean count |
| 成本 数量 金额 成本 数量 金额 成本 数量 金额 |
| 部门 销售人员 |
| 办公室 郑浪 198 31790 200 5.657143 908.285714 5.714286 35 35 35 |
| 客服 蒋波 671 80447 656 5.500000 659.401639 5.377049 122 122 122 |
| 赵温江 359 75349 390 5.279412 1108.073529 5.735294 68 68 68 |
| 财务 冯文 851 44061 898 5.490323 284.264516 5.793548 155 155 155 |
| 熊牧 324 28463 328 5.491525 482.423729 5.559322 59 59 59 |
| 销售 李平平 1111 22874 1086 5.472906 112.679803 5.349754 203 203 203 |
| 王松 3098 66880 3189 5.444640 117.539543 5.604569 569 569 569 |
| 郑浪 43 14730 49 4.777778 1636.666667 5.444444 9 9 9 |
| |
| |
| piv = pd.pivot_table(data |
| ,index=['部门', '销售人员'] |
| ,values=['数量', '金额', '成本'] |
| ,aggfunc={ |
| "数量": 'count', |
| "金额": 'mean', |
| '成本': 'sum' |
| }) |
| print(piv) |
output
| 成本 数量 金额 |
| 部门 销售人员 |
| 办公室 郑浪 198 35 5.714286 |
| 客服 蒋波 671 122 5.377049 |
| 赵温江 359 68 5.735294 |
| 财务 冯文 851 155 5.793548 |
| 熊牧 324 59 5.559322 |
| 销售 李平平 1111 203 5.349754 |
| 王松 3098 569 5.604569 |
| 郑浪 43 9 5.444444 |
| |
| |
| piv = pd.pivot_table(data |
| ,index=['部门', '销售人员'] |
| ,values=['数量', '金额', '成本'] |
| ,aggfunc={ |
| "数量": ['count', 'mean'], |
| "金额": ['mean', 'sum'], |
| '成本': 'sum' |
| } |
| ,fill_value=0) |
| print(piv) |
output
| 成本 数量 金额 |
| sum count mean mean sum |
| 部门 销售人员 |
| 办公室 郑浪 198 35 908.285714 5.714286 200 |
| 客服 蒋波 671 122 659.401639 5.377049 656 |
| 赵温江 359 68 1108.073529 5.735294 390 |
| 财务 冯文 851 155 284.264516 5.793548 898 |
| 熊牧 324 59 482.423729 5.559322 328 |
| 销售 李平平 1111 203 112.679803 5.349754 1086 |
| 王松 3098 569 117.539543 5.604569 3189 |
| 郑浪 43 9 1636.666667 5.444444 49 |
| piv = pd.pivot_table(data |
| ,index=['部门', '销售人员'] |
| ,values=['数量', '金额', '成本'] |
| ,aggfunc={ |
| "数量": ['count', 'mean'], |
| "金额": ['mean', 'sum'], |
| '成本': 'sum' |
| } |
| ,columns='所属区域' |
| ,fill_value=0) |
| print(piv.columns) |
output
| MultiIndex([('成本', 'sum', '四川'), |
| ('成本', 'sum', '山东'), |
| ('成本', 'sum', '河北'), |
| ('成本', 'sum', '河南'), |
| ('成本', 'sum', '湖北'), |
| ('数量', 'count', '四川'), |
| ('数量', 'count', '山东'), |
| ('数量', 'count', '河北'), |
| ('数量', 'count', '河南'), |
| ('数量', 'count', '湖北'), |
| ('数量', 'mean', '四川'), |
| ('数量', 'mean', '山东'), |
| ('数量', 'mean', '河北'), |
| ('数量', 'mean', '河南'), |
| ('数量', 'mean', '湖北'), |
| ('金额', 'mean', '四川'), |
| ('金额', 'mean', '山东'), |
| ('金额', 'mean', '河北'), |
| ('金额', 'mean', '河南'), |
| ('金额', 'mean', '湖北'), |
| ('金额', 'sum', '四川'), |
| ('金额', 'sum', '山东'), |
| ('金额', 'sum', '河北'), |
| ('金额', 'sum', '河南'), |
| ('金额', 'sum', '湖北')], |
| names=[None, None, '所属区域']) |
output
| sum |
| 所属区域 四川 山东 河北 河南 湖北 |
| 部门 销售人员 |
| 办公室 郑浪 56 0 26 60 56 |
| 客服 蒋波 108 15 77 210 261 |
| 赵温江 62 72 61 88 76 |
| 财务 冯文 230 74 88 259 200 |
| 熊牧 31 204 0 70 19 |
| 销售 李平平 470 93 100 253 195 |
| 王松 1160 282 402 557 697 |
| 郑浪 19 6 0 0 18 |
output
| count mean \ |
| 所属区域 四川 山东 河北 河南 湖北 四川 山东 河北 |
| 部门 销售人员 |
| 办公室 郑浪 11 0 4 11 9 1160.000000 0.000000 945.000000 |
| 客服 蒋波 17 3 13 41 48 869.235294 250.000000 364.307692 |
| 赵温江 12 12 11 18 15 1419.000000 1310.500000 1325.181818 |
| 财务 冯文 41 13 17 49 35 286.487805 384.615385 354.882353 |
| 熊牧 5 38 0 12 4 540.800000 499.342105 0.000000 |
| 销售 李平平 88 17 19 44 35 110.193182 99.294118 66.526316 |
| 王松 206 55 75 104 129 115.014563 87.545455 145.986667 |
| 郑浪 4 1 0 0 4 830.000000 500.000000 0.000000 |
| |
| |
| 所属区域 河南 湖北 |
| 部门 销售人员 |
| 办公室 郑浪 1270.909091 141.111111 |
| 客服 蒋波 781.365854 586.416667 |
| 赵温江 637.111111 1103.333333 |
| 财务 冯文 243.224490 267.542857 |
| 熊牧 507.000000 175.000000 |
| 销售 李平平 67.863636 206.828571 |
| 王松 130.423077 107.434109 |
| 郑浪 0.000000 2727.500000 |
| |
| b = piv[('数量', 'count')] |
| print(b) |
output
| 所属区域 四川 山东 河北 河南 湖北 |
| 部门 销售人员 |
| 办公室 郑浪 11 0 4 11 9 |
| 客服 蒋波 17 3 13 41 48 |
| 赵温江 12 12 11 18 15 |
| 财务 冯文 41 13 17 49 35 |
| 熊牧 5 38 0 12 4 |
| 销售 李平平 88 17 19 44 35 |
| 王松 206 55 75 104 129 |
| 郑浪 4 1 0 0 4 |
| |
| |
| b = piv[('数量', 'count', '四川')] |
| print(b) |
| print(piv.index) |
output
| 部门 销售人员 |
| 办公室 郑浪 11 |
| 客服 蒋波 17 |
| 赵温江 12 |
| 财务 冯文 41 |
| 熊牧 5 |
| 销售 李平平 88 |
| 王松 206 |
| 郑浪 4 |
| Name: (数量, count, 四川), dtype: int64 |
| |
| MultiIndex([('办公室', '郑浪'), |
| ( '客服', '蒋波'), |
| ( '客服', '赵温江'), |
| ( '财务', '冯文'), |
| ( '财务', '熊牧'), |
| ( '销售', '李平平'), |
| ( '销售', '王松'), |
| ( '销售', '郑浪')], |
| names=['部门', '销售人员']) |
| |
| |
| b = piv.loc['财务'][('数量', 'count')] |
| print(b) |
output
| 所属区域 四川 山东 河北 河南 湖北 |
| 销售人员 |
| 冯文 41 13 17 49 35 |
| 熊牧 5 38 0 12 4 |
| |
| b = piv.loc[('财务', '冯文')][('数量', 'count')] |
| print(b) |
output
| 所属区域 |
| 四川 41.0 |
| 山东 13.0 |
| 河北 17.0 |
| 河南 49.0 |
| 湖北 35.0 |
| Name: (财务, 冯文), dtype: float64 |
| |
| tj = piv[('金额', 'mean')] < 5 |
| b = piv[tj] |
| print(b) |
output
| 成本 数量 ... 金额 \ |
| sum count ... mean |
| 所属区域 四川 山东 河北 河南 湖北 四川 山东 河北 河南 湖北 ... 四川 |
| 部门 销售人员 ... |
| 办公室 郑浪 NaN 0.0 NaN NaN NaN NaN 0.0 NaN NaN NaN ... NaN |
| 客服 蒋波 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN |
| 赵温江 62.0 NaN NaN NaN NaN 12.0 NaN NaN NaN NaN ... 4.916667 |
| 财务 冯文 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN |
| 熊牧 NaN NaN 0.0 NaN NaN NaN NaN 0.0 NaN NaN ... NaN |
| 销售 李平平 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN |
| 王松 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN |
| 郑浪 NaN NaN 0.0 0.0 NaN NaN NaN 0.0 0.0 NaN ... NaN |
| |
| |
| sum |
| 所属区域 山东 河北 河南 湖北 四川 山东 河北 河南 湖北 |
| 部门 销售人员 |
| 办公室 郑浪 0.0 NaN NaN NaN NaN 0.0 NaN NaN NaN |
| 客服 蒋波 NaN NaN NaN NaN NaN NaN NaN NaN NaN |
| 赵温江 NaN NaN NaN NaN 59.0 NaN NaN NaN NaN |
| 财务 冯文 NaN NaN NaN NaN NaN NaN NaN NaN NaN |
| 熊牧 NaN 0.0 NaN NaN NaN NaN 0.0 NaN NaN |
| 销售 李平平 NaN NaN NaN NaN NaN NaN NaN NaN NaN |
| 王松 NaN NaN NaN NaN NaN NaN NaN NaN NaN |
| 郑浪 NaN 0.0 0.0 NaN NaN NaN 0.0 0.0 NaN |
| |
| [8 rows x 25 columns] |
| |
| tj = piv[('成本', 'sum', '四川')] > 100 |
| b = piv[tj] |
| print(b) |
output
| 成本 数量 ... 金额 \ |
| sum count ... mean |
| 所属区域 四川 山东 河北 河南 湖北 四川 山东 河北 河南 湖北 ... 四川 |
| 部门 销售人员 ... |
| 客服 蒋波 108 15 77 210 261 17 3 13 41 48 ... 5.470588 |
| 财务 冯文 230 74 88 259 200 41 13 17 49 35 ... 5.829268 |
| 销售 李平平 470 93 100 253 195 88 17 19 44 35 ... 5.420455 |
| 王松 1160 282 402 557 697 206 55 75 104 129 ... 5.669903 |
| |
| |
| sum |
| 所属区域 山东 河北 河南 湖北 四川 山东 河北 河南 湖北 |
| 部门 销售人员 |
| 客服 蒋波 5.000000 5.230769 5.365854 5.416667 93 15 68 220 260 |
| 财务 冯文 5.846154 5.823529 5.734694 5.800000 239 76 99 281 203 |
| 销售 李平平 5.176471 5.736842 5.363636 5.028571 477 88 109 236 176 |
| 王松 5.672727 5.386667 5.682692 5.534884 1168 312 404 591 714 |
| |
| [4 rows x 25 columns] |
| |
| print(piv[('成本', 'sum', '四川')]) |
output
| 部门 销售人员 |
| 办公室 郑浪 56 |
| 客服 蒋波 108 |
| 赵温江 62 |
| 财务 冯文 230 |
| 熊牧 31 |
| 销售 李平平 470 |
| 王松 1160 |
| 郑浪 19 |
| Name: (成本, sum, 四川), dtype: int64 |
| # 条件中的 ('成本', 'sum', '四川') 逗号后面 有且只能有1个空格 |
| tj = "`('成本', 'sum', '四川')` > 100" |
| b = piv.query(tj) |
| print(b) |
output
| 成本 数量 ... 金额 \ |
| sum count ... mean |
| 所属区域 四川 山东 河北 河南 湖北 四川 山东 河北 河南 湖北 ... 四川 |
| 部门 销售人员 ... |
| 客服 蒋波 108 15 77 210 261 17 3 13 41 48 ... 5.470588 |
| 财务 冯文 230 74 88 259 200 41 13 17 49 35 ... 5.829268 |
| 销售 李平平 470 93 100 253 195 88 17 19 44 35 ... 5.420455 |
| 王松 1160 282 402 557 697 206 55 75 104 129 ... 5.669903 |
| |
| |
| sum |
| 所属区域 山东 河北 河南 湖北 四川 山东 河北 河南 湖北 |
| 部门 销售人员 |
| 客服 蒋波 5.000000 5.230769 5.365854 5.416667 93 15 68 220 260 |
| 财务 冯文 5.846154 5.823529 5.734694 5.800000 239 76 99 281 203 |
| 销售 李平平 5.176471 5.736842 5.363636 5.028571 477 88 109 236 176 |
| 王松 5.672727 5.386667 5.682692 5.534884 1168 312 404 591 714 |
| |
| [4 rows x 25 columns] |
环比
| |
| |
| |
| |
| |
| path = r"C:\work\python\pandas_files\环比.xlsx" |
| data = pd.read_excel(path, sheet_name='Sheet1') |
| print(data) |
output
| 日期 销售金额 |
| 0 1月 28 |
| 1 2月 19 |
| 2 3月 25 |
| 3 4月 27 |
| 4 5月 15 |
| 5 6月 20 |
| 6 7月 23 |
| 7 8月 29 |
| 8 9月 19 |
| 9 10月 23 |
| 10 11月 25 |
| 11 12月 11 |
| |
| data['上一期'] = data.销售金额.shift() |
| data['环比额'] = data['上一期']-data['销售金额'] |
| data['环比率'] = (data['环比额']/data.上一期).fillna(0).apply(lambda x: '{:.2%}'.format(x)) |
| print(data) |
output
| 日期 销售金额 上一期 环比额 环比率 |
| 0 1月 28 NaN NaN 0.00 |
| 1 2月 19 28.0 9.0 32.14 |
| 2 3月 25 19.0 -6.0 -31.58 |
| 3 4月 27 25.0 -2.0 -8.00 |
| 4 5月 15 27.0 12.0 44.44 |
| 5 6月 20 15.0 -5.0 -33.33 |
| 6 7月 23 20.0 -3.0 -15.00 |
| 7 8月 29 23.0 -6.0 -26.09 |
| 8 9月 19 29.0 10.0 34.48 |
| 9 10月 23 19.0 -4.0 -21.05 |
| 10 11月 25 23.0 -2.0 -8.70 |
| 11 12月 11 25.0 14.0 56.00 |
| data = pd.read_excel(path, sheet_name='Sheet2') |
| |
| data = data.sort_values(['城市', '月份']) |
| print(data) |
| def mydef(a): |
| b = a.金额.shift() |
| a['环比额'] = b-a.金额 |
| a['环比率'] = (a.环比额/b).fillna(0).apply(lambda x: '{:.2%}'.format(x)) |
| return a |
| b = data.groupby(['城市']).apply(mydef) |
| print(b) |
output
| 城市 月份 金额 |
| 12 上海 1 22 |
| 13 上海 2 14 |
| 14 上海 3 20 |
| 15 上海 4 21 |
| 16 上海 5 30 |
| 17 上海 6 19 |
| 18 上海 7 19 |
| 19 上海 8 22 |
| 20 上海 9 22 |
| 21 上海 10 28 |
| 22 上海 11 22 |
| 23 上海 12 29 |
| 0 北京 1 21 |
| 1 北京 2 20 |
| 2 北京 3 23 |
| 3 北京 4 17 |
| 4 北京 5 30 |
| 5 北京 6 21 |
| 6 北京 7 19 |
| 7 北京 8 19 |
| 8 北京 9 24 |
| 9 北京 10 29 |
| 10 北京 11 29 |
| 11 北京 12 24 |
| |
| 城市 月份 金额 环比额 环比率 |
| 城市 |
| 上海 12 上海 1 22 NaN 0.00 |
| 13 上海 2 14 8.0 36.36 |
| 14 上海 3 20 -6.0 -42.86 |
| 15 上海 4 21 -1.0 -5.00 |
| 16 上海 5 30 -9.0 -42.86 |
| 17 上海 6 19 11.0 36.67 |
| 18 上海 7 19 0.0 0.00 |
| 19 上海 8 22 -3.0 -15.79 |
| 20 上海 9 22 0.0 0.00 |
| 21 上海 10 28 -6.0 -27.27 |
| 22 上海 11 22 6.0 21.43 |
| 23 上海 12 29 -7.0 -31.82 |
| 北京 0 北京 1 21 NaN 0.00 |
| 1 北京 2 20 1.0 4.76 |
| 2 北京 3 23 -3.0 -15.00 |
| 3 北京 4 17 6.0 26.09 |
| 4 北京 5 30 -13.0 -76.47 |
| 5 北京 6 21 9.0 30.00 |
| 6 北京 7 19 2.0 9.52 |
| 7 北京 8 19 0.0 0.00 |
| 8 北京 9 24 -5.0 -26.32 |
| 9 北京 10 29 -5.0 -20.83 |
| 10 北京 11 29 0.0 0.00 |
| 11 北京 12 24 5.0 17.24 |
| |
| |
| path = r"C:\work\python\pandas_files\同比.xlsx" |
| data = pd.read_excel(path) |
| print(data) |
output
| 日期 店号 金额 |
| 0 2018-01-01 A001 26 |
| 1 2018-01-02 A001 11 |
| 2 2018-01-03 A001 15 |
| 3 2018-01-04 A001 25 |
| 4 2018-01-05 A001 22 |
| ... ... ... .. |
| 1455 2019-12-27 B001 23 |
| 1456 2019-12-28 B001 26 |
| 1457 2019-12-29 B001 29 |
| 1458 2019-12-30 B001 23 |
| 1459 2019-12-31 B001 24 |
| |
| [1460 rows x 3 columns] |
| piv = pd.pivot_table(data, |
| index='店号', |
| values='金额', |
| aggfunc='sum', |
| columns=data.日期.dt.year) |
| print(piv) |
| |
| tbl = (piv[2019] - piv[2018])/piv[2018] |
| piv['同比率百分比'] = tbl.apply(lambda x: '{:.2%}'.format(x)) |
| print(piv) |
output
| 日期 2018 2019 |
| 店号 |
| A001 7400 7293 |
| B001 9086 9163 |
| |
| 日期 2018 2019 同比率百分比 |
| 店号 |
| A001 7400 7293 -1.45% |
| B001 9086 9163 0.85% |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术