【数据分析】Python Pandas 透视表使用方式 和 常见问题

Pandas 透视表使用方式 和 常见问题

环境:
Python 3.11.8
pandas 2.2.1

1. pandas 读取非常规软件生成的xlsx文件报错忽略

如通过语言的某些插件生成的xlsx文件.

报错提示

FutureWarning: The provided callable <function sum at 0x0000022A2D552200> is currently using DataFrameGroupBy
.sum. In a future version of pandas, the provided callable will be used directly. To keep current behavior pass the string "sum" instead.

解决

import warnings
warnings.filterwarnings('ignore')

2. 转置

df = pd.read_excel(‘test.xlsx’).transpose()

3. 转为dict

dict = pd.read_excel(‘test.xlsx’).to_dict(‘records’)

4. 判断是否为数值

if type(t) == int or type(t) == float:

5. 计算运行时长

st = time.time()
print('开始处理')
# do something.
print('处理完成')
print(f'总耗时:{time.time() - st:.4f} s')
input()

6. read_excel 的常用参数

# 引擎
engine='openpyxl', 
# 跳过多少行
skiprows=1, 
# na值匹配
na_filter=False, 
# 保留那几列
usecols=['地市', '操作']

7. 对某一列使用某个函数

df[‘列名’].map(getLX)

8. 取某一列满足某个条件的 全部列

df = df[df[‘列名’] != ‘’]

9. 透视 常用说明

透视完后,列会被设置为索引

df2 = pd.pivot_table(df,
# 透视的值
values='金额',
# 列
index=['地市'],
# 行
columns=['类型'],
# 聚合方法
aggfunc=np.sum,
# 空值填充值
fill_value=0,
# 合计名
margins_name='合计',
# 是否启用合计功能
margins=True)

特别注意: index 中可以传入数组,当 数组中的 某个值为空时,将不会被统计出来,比如:
index = [‘地市’] 时, 如果 地市列 存在 空值时, 空值的数量将不会被统计出来.

TODO

解决方案: 待研究 .

  1. 初步解决方案是: 提前 将 空值 设置为某个值,甚至为 空字符串 也可以.

10. 重新设置 索引

df2.reset_index(inplace=True)

11. 对每一列应用 函数

# 保留两位小数(会四舍五入)
df2['其他率'] = df2['其他率'].apply(lambda x: "%.2f" % x)

12. 列 按照 数组重新排序

df2 = df2[[‘地市’, ‘其他率’]]

13. 列 NaN 填充

result = result.fillna({‘其他’: 0,‘其他率’: 0})

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值