pivot_table 如何使用筛选
时间: 2023-02-18 17:35:07 浏览: 195
筛选功能可以通过pivot_table函数来实现,只需要指定要筛选的列,以及筛选条件,就可以获取符合条件的数据。例如:pivot_table(df, index='col1', columns='col2', values='col3', aggfunc='sum', where='col4 > 10')
相关问题
pivot_table结合sumif
pivot_table 和 SUMIF 是 Excel 中常用的数据处理和分析工具,它们可以结合使用来对数据进行更复杂的汇总和分析。
### pivot_table
pivot_table 是 Excel 中一个强大的数据透视表功能,它可以将数据重新排列和汇总,以便更方便地进行分析和查看。使用 pivot_table 可以快速生成交叉表、汇总表等。
### SUMIF
SUMIF 是 Excel 中一个条件求和函数,它可以根据指定的条件对数据进行求和。SUMIF 的基本语法如下:
```excel
SUMIF(range, criteria, [sum_range])
```
- `range`:要应用条件的单元格区域。
- `criteria`:条件,可以使用数字、表达式或文本。
- `sum_range`:要相加的实际单元格。如果省略,则使用 `range` 中的单元格。
### 结合使用 pivot_table 和 SUMIF
当你需要根据多个条件对数据进行汇总时,可以结合使用 pivot_table 和 SUMIF。例如,假设你有一个销售数据表,包含日期、产品、销售员和销售金额,你可以使用 pivot_table 来按销售员和产品汇总销售金额,并使用 SUMIF 来进一步筛选特定条件下的数据。
#### 示例步骤:
1. **创建数据透视表**:
- 选择数据区域。
- 插入数据透视表。
- 将“销售员”和“产品”拖到行区域,将“销售金额”拖到值区域。
2. **使用 SUMIF 进行条件求和**:
- 在数据透视表旁边创建一个新的列,用于存储条件求和的结果。
- 使用 SUMIF 函数根据指定条件对数据进行求和。例如,假设你想计算特定销售员在特定产品的销售金额,可以使用如下公式:
```excel
=SUMIF(销售员列, "指定销售员", 销售金额列)
```
通过结合使用 pivot_table 和 SUMIF,你可以更灵活地对数据进行汇总和分析,满足更复杂的需求。
解释下这段代码 第三方商品 __df1 = __temp_df[__temp_df['show_name'] == '第三方商品'] if not __df1.empty: __df1 = __df1.pivot_table(index=['name', 'show_name'], values=['buy_num'], aggfunc=np.sum).reset_index() else: __df1 = __df1[['name', 'show_name', 'buy_num']] # 非第三方商品 __df2 = __temp_df[__temp_df['show_name'] != '第三方商品'] if not __df2.empty: __df2 = __df2.pivot_table(index=['gt_uuid', 'show_name'] ,values=['buy_num'], aggfunc=np.sum).reset_index() __df2 = pd.merge(left=__df2, right=pd.DataFrame(s_gt_rv, columns=['gt_uuid', 'goods_name']), how='left', on='gt_uuid') __df2 = __df2[['goods_name', 'show_name', 'buy_num']] __df2.rename(columns={'goods_name': 'name'}, inplace=True) else: __df2 = __df2[['name', 'show_name', 'buy_num']] __temp_df = pd.concat([__df1, __df2]) del __df1, __df2 __temp_df.rename(columns={'name': 'goods_name', 'show_name': 'gc_name', 'buy_num': 'num'}, inplace=True) __temp_df.sort_values(by='num', ascending=False, inplace=True) return_data['goods']['goods_list'] = __temp_df.to_dict(orient='records') __temp_df = __temp_df[['gc_name', 'num']] __temp_df = __temp_df.pivot_table(index='gc_name', values='num', aggfunc=np.sum).reset_index() __temp_df.sort_values(by='num', ascending=False, inplace=True) return_data['goods']['gc_list'] = __temp_df.to_dict(orient='records') del __temp_df
这段代码是对一个名为 `__temp_df` 的数据框进行处理,并将处理结果存储在 `return_data` 字典的 `goods` 键下。
首先,根据条件 `__temp_df['show_name'] == '第三方商品'`,筛选出满足条件的行,存储在 `__df1` 中。如果 `__df1` 不为空,则对其进行数据透视操作,按照 `name` 和 `show_name` 分组,计算 `buy_num` 的总和,并重置索引。否则,保留 `__df1` 的 `name`、`show_name` 和 `buy_num` 列。
接着,根据条件 `__temp_df['show_name'] != '第三方商品'`,筛选出满足条件的行,存储在 `__df2` 中。如果 `__df2` 不为空,则对其进行数据透视操作,按照 `gt_uuid` 和 `show_name` 分组,计算 `buy_num` 的总和,并重置索引。然后,将 `__df2` 与一个包含列名为 `['gt_uuid', 'goods_name']` 的 DataFrame 进行左连接,并将结果存储在 `__df2` 中。最后,保留 `__df2` 的 `goods_name`、`show_name` 和 `buy_num` 列,并将列名 `goods_name` 改为 `name`。
接下来,通过合并 `__df1` 和 `__df2` 构成新的数据框 `__temp_df`。之后,删除 `__df1` 和 `__df2` 变量。
然后,对 `__temp_df` 进行列名的重命名,将 `name` 改为 `goods_name`,`show_name` 改为 `gc_name`,`buy_num` 改为 `num`。将 `__temp_df` 按照 `num` 降序排序。
接着,将 `__temp_df` 转换为字典格式,并将结果存储在 `return_data` 字典的 `goods_list` 键下。再次对 `__temp_df` 进行处理,只保留 `gc_name` 和 `num` 两列,并进行数据透视操作,按照 `gc_name` 分组,计算 `num` 的总和,并重置索引。最后,将结果按照 `num` 降序排序。
最后,将处理后的 `__temp_df` 转换为字典格式,并将结果存储在 `return_data` 字典的 `gc_list` 键下。最后,删除 `__temp_df` 变量。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)